linux系统cpu使用率查询

浪尽此生 提交于 2020-05-02 01:51:19

1、cat /proc/loadavg命令

  此命令用于查看系统平均负载。

$ cat /proc/loadavg
0.08 0.06 0.10 1/442 8347

  前三项分别是最近1分钟、5分钟和15分钟的系统平均负载。系统平均负载为在特定时间间隔内运行队列中的平均进程数,包括正在CPU上运行或者等待运行的进程。
  第四项,分子是正在运行的进程数,分母是进程总数。
  最后一项是最近运行的进程ID号。

2、top 命令

  Top命令是最常用的查看系统资源使用情况的工具,可以查看CPU、内存等资源的使用情况。

$ top
top - 10:00:34 up 193 days, 15 min,  2 users,  load average: 0.03, 0.05, 0.10
Tasks: 168 total,   1 running, 167 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.8 us,  0.8 sy,  0.0 ni, 98.4 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 32946324 total, 10400992 free,  2478008 used, 20067324 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 28319396 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                        
 9106 root      20   0 1230476  46344  15688 S   6.7  0.1 626:31.26 containerd                                                                                     
    1 root      20   0   51768   3836   2416 S   0.0  0.0 116:33.67 systemd                                                                                        
    2 root      20   0       0      0      0 S   0.0  0.0   0:07.89 kthreadd                                                                                       
    3 root      20   0       0      0      0 S   0.0  0.0   0:13.71 ksoftirqd/0                                                                                    
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                                                                   
    7 root      rt   0       0      0      0 S   0.0  0.0   0:15.24 migration/0                                                                                    
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh                                                                                         
    9 root      20   0       0      0      0 S   0.0  0.0 200:13.21 rcu_sched                                                                                      
   10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-drain

  与CPU使用情况相关的主要是前三行,显示的是整个系统的cpu使用状况。另外,%MEM列实时显示了每个进程的CPU使用率。
  第一行是基本情况,分别是:当前时间,系统运行时长,当前登录用户数,系统平均负载(同cat /proc/loadavg命令前三个值)。
  第二行是进程状况,分别是:进程总数,正在运行的进程数,睡眠的进程数,停止的进程数,僵尸进程数。
  第三行是CPU使用信息,分别是:用户空间占用CPU时间百分比,内核空间占用CPU时间百分比,用户进程空间内改变过优先级的进程占用CPU时间百分比,空闲CPU时间百分比,等待输入输出的CPU时间百分比,CPU服务于硬件中断的CPU时间百分比,CPU服务于软件中断的CPU时间百分比,被虚拟机偷走的CPU时间百分比。

3、vmstat命令

  vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控,是对系统的整体情况进行统计。

$ vmstat
procs   -----------memory-----------  --swap--  --io--  --system--  -----cpu-----
 r  b   swpd    free   buff   cache   si   so   bi  bo   in   cs    us sy id wa st
 1  0     0  14376368 161976 1130836   0    0    0   3    2    2     0  0 100 0  0

  我们只关注cpu列:
  us:用户进程执行时间百分比
  sy:系统进程执行时间百分比
  id:空闲时间百分比
  wa:等待IO时间百分比
  st:被虚拟机偷走的cpu时间百分比

4、iostat命令

  iostat是I/O statistics(输入/输出统计)的缩写,iostat将对系统的磁盘操作活动进行监视。iostat命令主要是用来查看IO使用状况,也可以查看cpu使用情况。

Linux 3.10.0-862.3.2.el7.x86_64 (instance-34rgafwb)     01/03/2020     _x86_64_    (8 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.17    0.02    0.15    0.00    0.00   99.64

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
vda               1.94         0.30        18.15    5030634  302731996
vdb               0.00         0.00         0.00       6252        148

  avg-cpu 行是CPU平均使用率,与前述命令类似:

  %user:CPU处在用户模式下的时间百分比。

  %nice:CPU处在带NICE值的用户模式下的时间百分比。

  %system:CPU处在系统模式下的时间百分比。

  %iowait:CPU等待输入输出完成时间的百分比。

  %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。

  %idle:CPU空闲时间百分比。

5、sar命令

   sar(System Activity Reporter,系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。我们现在只关注CPU使用率和系统负载。

  • 输出CPU使用率的统计信息
sar 10 3    //每10秒采样一次,连续采样3次
sar -u 10 3  //同上
sar       //输出全天cpu使用率的统计信息
sar -p     //同上
sar -P ALL 2 3  //每2秒采样一次,连续采样3次,输出CPU每个核心的使用率

  输出如下:

# sar -u 10 3
Linux 2.6.32-642.13.1.el6.x86_64 (appstore-nginx-test)     01/03/2020     _x86_64_    (8 CPU)

02:26:29 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
02:26:39 PM     all      0.28      0.00      0.31      0.01      0.01     99.38
02:26:49 PM     all      0.33      0.03      0.31      0.05      0.03     99.26
02:26:59 PM     all      0.29      0.00      0.35      0.03      0.03     99.31
Average:        all      0.30      0.01      0.33      0.03      0.02     99.32

  CPU列的 “all” 说明统计信息是所有cpu使用率的平均值,数字 “x” 说明此统计信息是CPU核心x的使用率。各列数据的意义与前述几个命令一样,不再赘述。

  • 系统平均负载

  监控进程队列长度和平均负载,每10秒采样一次,连续采样3次:

# sar -q 1 3
Linux 2.6.32-642.13.1.el6.x86_64 (appstore-nginx-test)     01/03/2020     _x86_64_    (8 CPU)

03:01:01 PM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
03:01:02 PM         0       512      0.06      0.03      0.00
03:01:03 PM         0       512      0.06      0.03      0.00
03:01:04 PM         0       512      0.06      0.03      0.00
Average:            0       512      0.06      0.03      0.00

  输出项说明:

  runq-sz:运行队列的长度(等待运行的进程数,每核的CP不能超过3个)
  plist-sz:进程列表中的进程(processes)和线程数(threads)的数量
  ldavg-1:最近1分钟的CPU平均负载,即将多核CPU过去一分钟的负载相加再除以核心数得出的平均值,以下类似
  ldavg-5:最近5分钟的CPU平均负载
  ldavg-15:最近15分钟的CPU平均负载

6、mpstat命令

  mpstat是MultiProcessor Statistics的缩写,是一个实时系统监控工具,输出CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPU系统里,其不但能查看所有CPU的平均统计信息,而且能够查看特定CPU的信息。
  • 显示所有CPU整体(平均)使用状况
# mpstat        //不带参数时,输出为从系统启动以来的平均值
Linux 2.6.32-642.13.1.el6.x86_64 (appstore-nginx-test)     01/03/2020     _x86_64_    (8 CPU)

03:14:40 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
03:14:40 PM  all    1.59    0.05    0.74    0.05    0.00    0.04    0.03    0.00   97.51

# mpstat 1 5    //每1秒收集一次,共5次
Linux 2.6.32-642.13.1.el6.x86_64 (appstore-nginx-test)     01/03/2020     _x86_64_    (8 CPU)

03:25:58 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
03:25:59 PM  all    0.13    0.00    0.25    0.00    0.00    0.00    0.00    0.00   99.62
03:26:00 PM  all    0.38    0.00    0.38    0.00    0.00    0.13    0.00    0.00   99.12
03:26:01 PM  all    2.01    0.00    1.01    0.00    0.00    0.00    0.13    0.00   96.86
03:26:02 PM  all    0.38    0.00    0.38    0.00    0.00    0.00    0.00    0.00   99.25
03:26:03 PM  all    0.25    0.00    0.25    0.00    0.00    0.13    0.00    0.00   99.37
Average:     all    0.63    0.00    0.45    0.00    0.00    0.05    0.03    0.00   98.85
  • 显示所有CPU的使用状况
# mpstat -P ALL 10 20  //每10秒收集一次数据,共20次
Linux 2.6.32-642.13.1.el6.x86_64 (appstore-nginx-test)     01/03/2020     _x86_64_    (8 CPU)

03:12:59 PM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
03:13:09 PM  all    0.41    0.00    0.34    0.03    0.00    0.05    0.04    0.00   99.13
03:13:09 PM    0    1.01    0.00    0.70    0.20    0.00    0.00    0.00    0.00   98.09
03:13:09 PM    1    1.21    0.00    0.71    0.00    0.00    0.40    0.20    0.00   97.47
03:13:09 PM    2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
03:13:09 PM    3    0.10    0.00    0.30    0.00    0.00    0.00    0.00    0.00   99.60
03:13:09 PM    4    0.30    0.00    0.30    0.00    0.00    0.00    0.00    0.00   99.40
03:13:09 PM    5    0.50    0.00    0.40    0.00    0.00    0.00    0.00    0.00   99.10
03:13:09 PM    6    0.10    0.00    0.10    0.00    0.00    0.00    0.00    0.00   99.80
03:13:09 PM    7    0.00    0.00    0.20    0.00    0.00    0.00    0.00    0.00   99.80
....

  输出项说明:

  %usr:表示处理用户进程所使用CPU的百分比

  %nice:表示使用nice命令对进程进行降级时CPU的百分比

  %sys:表示内核进程使用的CPU百分比

  %iowait:表示等待进行I/O所使用的CPU时间百分比

  %irq:表示用于处理系统中断的CPU百分比

  %soft:表示用于软件中断的CPU百分比

  %steal:显示虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比

  %guest:显示运行虚拟处理器时CPU花费时间的百分比

  %idle:显示CPU的空闲时间百分比

7、uptime命令

  uptime命令是一个简单的获取系统总共运行时长,以及最近1分钟、5分钟、15分钟的平均负载的工具。uptime命令输出内容与top命令输出首行内容一样,不再赘述。

# uptime
 15:40:19 up 203 days, 23:15,  2 users,  load average: 0.01, 0.01, 0.00

8、pidstat命令

  pidstat命令主要用于监控全部或指定进程占用系统资源的情况。

# pidstat
Linux 2.6.32-642.13.1.el6.x86_64 (appstore-nginx-test)     01/03/2020     _x86_64_    (8 CPU)

03:48:26 PM       PID    %usr %system  %guest    %CPU   CPU  Command
03:48:26 PM         1    0.00    0.01    0.00    0.01     5  init
03:48:26 PM         2    0.00    0.00    0.00    0.00     1  kthreadd
03:48:26 PM         3    0.00    0.00    0.00    0.00     0  migration/0
03:48:26 PM         4    0.00    0.00    0.00    0.00     0  ksoftirqd/0
03:48:26 PM         6    0.00    0.00    0.00    0.00     0  watchdog/0
03:48:26 PM         7    0.00    0.00    0.00    0.00     1  migration/1
....

9、ps ux命令

  ps ux 命令列出的是当前服务器的所有进程状态信息,其中包括了各个进程的cpu使用率。

# ps ux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.0  19364  1632 ?        Ss    2019  18:20 /sbin/init
root          2  0.0  0.0      0     0 ?        S     2019   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S     2019   0:46 [migration/0]
root          4  0.0  0.0      0     0 ?        S     2019   3:13 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S     2019   0:00 [stopper/0]
root          6  0.0  0.0      0     0 ?        S     2019   0:39 [watchdog/0]
root          7  0.0  0.0      0     0 ?        S     2019   0:35 [migration/1]
....

 

参考:

  https://www.cnblogs.com/shirley-bhu/p/8743377.html
  https://www.cnblogs.com/gongchixin/articles/7998054.html
  https://www.cnblogs.com/aresxin/p/9152127.html
  https://blog.csdn.net/yuanchunsi/article/details/79295801
  https://www.cnblogs.com/arnoldlu/p/9462221.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!