linux系统cpu使用率查询
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命令
- 显示所有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