zoukankan      html  css  js  c++  java
  • 系统基础信息模块psutil之获取系统性能篇

    一、简介

    psutil是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。它主要应用于系统监控,分析和限制系统资源及进程的管理。它实现了同等命令行工具提供的功能,如ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap等。目前支持32位和64位的Linux、Windows、OS X、FreeBSD和Sun Solaris等操作系统,支持从2.4到3.7的Python版本,目前最新版本5.4.6。通常我们获取操作系统信息往往用Shell脚本来实现,如获取当前物理内存总大小及已使用大小,shell命令如下:

    1、获取物理内存total值:

    [root@master ~]# free -m |grep Mem|awk '{print $2}'
    972

    2、获取物理内存Used值:

    [root@master ~]# free -m |grep Mem|awk '{print $3}'
    178

    相比较而言,使用psutil库实现则更加明了。psutil大小单位一般都采用字节,例如:

     

    二、安装及使用psutil

    1、安装psutil

    pip3 install psutil

    2、进入python

    python

    3、导入psutil

    >>> import psutil

    三、获取系统性能信息

    采集系统的基本性能信息包括CPU、内存、硬盘、网络等,可以完整描述当前系统的运行状态及质量。psutil已经封装了这些方法,用户可以根据自身的应用场景,调用相应的方法来满足需求,非常的实用。

    (1)CPU信息

    Linux操作系统的CPU利用率有以下几个部分:

    User Timer 执行用户进程时间百分比;
    System Timer 执行内核进程和中断时间的百分比;
    Wait IO 由于IO等待而使CPU处于idle(空闲)状态的时间百分比;
    Idle CPU处于idle状态的时间百分比。

    我们可以使用Python的psutil.cpu_times()方法可以简单地得到这些信息,同时也可以获取CPU的硬件相关信息,比如CPU的物理个数与逻辑个数,具体见下面的操作例子:

    解释:

    (2)、内存信息

    Linux系统内存利用率信息设计total(内存总数)、used(已使用内存数)、free(空闲内存数)、buffers(缓冲使用数)、cache(缓存使用数)、swap(交换分区使用数)等,分别使用psutil.virtual_memory()与psutil.swap_memory()方法获取这些信息,具体见下面的操作例子:

    解释:

    (3)磁盘信息

    在系统的所有磁盘中,我们更加关注磁盘的利用率及IO信息,其中磁盘利用率使用psutil.disk_usage方法来获取。磁盘IO信息包括read_count(读IO数)、write_count(写IO数)、read_bytes(IO读字节数)、write_bytes(IO写字节数)、read_time(磁盘读时间)、write_time(磁盘写时间等)。这些IO信息可以使用psutil.disk_io_counters()获取,具体见下面的操作例子:

    解释:

    (4)网络信息

    系统的网络信息与磁盘IO类似,涉及几个关键点,包括bytes_sent(发送字节数)、bytes_recv(接收字节数)、packet_sent(发送数据包数)、packets_recv(接收数据包数)等。这些网络信息使用psutil.net_io_counters()方法获取,具体见下面的操作例子:

    解释

    (5)其他信息模块

    除了前面介绍的几个获取系统基本信息的方法,psutil模块还支持获取用户登录、开机时间等信息,具体见下面的操作例子:

     

     其他用法请参见:https://psutil.readthedocs.io/en/latest/

  • 相关阅读:

    bzoj3052: [wc2013]糖果公园
    莫队算法心得
    bzoj1104: [POI2007]洪水pow
    bzoj1102: [POI2007]山峰和山谷Grz
    bzoj1121: [POI2008]激光发射器SZK
    bzoj1113: [Poi2008]海报PLA
    bzoj1103: [POI2007]大都市meg
    bzoj1396: 识别子串
    bzoj3756: Pty的字符串
  • 原文地址:https://www.cnblogs.com/liujunjun/p/13475007.html
Copyright © 2011-2022 走看看