Linux系统性能监控:CPU工具整理
再不点蓝字关注,机会就要飞走了哦
vmstat
vmstat即虚拟内存统计,但用它不仅仅是可以获取系统的虚拟内存性能信息,还能获取整个系统性能的大概信息。
当我们用vmstat获取系统的CPU性能信息时命令格式如下:
vmstat [-n] [-s] [delay [count]]
-n
表示当按时间间隔采样显示的数据在初始显示行标题后,后边的数据行不再重复显示标题-s
汇总显示统计数据delay
采样的时间间隔,单位秒count
采样次数
例如:
vmstat 2 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 2511564 948 13848780 0 0 0 16 3 7 0 0 99 0 0
0 0 0 2509360 948 13848844 0 0 0 0 1671 3471 1 0 99 0 0
0 0 0 2510648 948 13848816 0 0 0 49 1424 3042 1 1 99 0 0
上面例子vmstat的输出中和CPU相关的列:
r
当前可运行的进程数。这些进程没有等待IO并且已经准备好运行b
等待IO完成的被阻塞的进程in
系统发生中断的次数cs
系统发生上下文切换的次数us
用户进程消耗的总CPU时间百分比sy
系统代码消耗的总CPU时间百分比id
系统空闲的总CPU时间百分比wa
等待I/O消耗的总CPU时间百分比
vmstat -s
32531016 K total memory
16181704 K used memory
20755452 K active memory
8064936 K inactive memory
2495896 K free memory
948 K buffer memory
13852468 K swap cache
16383996 K total swap
0 K used swap
16383996 K free swap
2588894 non-nice user cpu ticks
253 nice user cpu ticks
753566 system cpu ticks
573325623 idle cpu ticks
482381 IO-wait cpu ticks
0 IRQ cpu ticks
10593 softirq cpu ticks
0 stolen cpu ticks
302611 pages paged in
94284222 pages paged out
0 pages swapped in
0 pages swapped out
532872694 interrupts
1116037916 CPU context switches
1494388740 boot time
736194 forks
forks
表示创建的新进程的数量
top
top命令可以打印系统整体性能信息。
top的命令行选项:top -[d delay] [-n iter] [-i] [-b]
-d
统计信息的更新间隔,默认3秒-n
退出前更新显示统计信息的次数-i
是否显示空闲进程-b
批处理显示形式,top默认只显示单屏信息超出屏幕的将不显示,如果需要将top命令的输出保存到另一个地方,这选项将很有用
top命令的运行时选项:
在top命令界面输入数字
1
将切换CPU使用率是按独立CPU显示还是按总量显示输入字母
l
,将切换是否显示系统负载load信息输入f(或F)将会弹出显示配置界面,在这个配置界面中可以设置显示字段和排序字段。
top命令界面中输入
A
,将分类显示统计信息
top命令显示内容中除了提供特定进程信息外,还会提供系统的整体信息,例如:
top - 15:35:09 up 13 days, 3:36, 3 users, load average: 0.02, 0.05, 0.11
Tasks: 275 total, 1 running, 274 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.9 us, 0.4 sy, 0.0 ni, 98.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 32531016 total, 541852 free, 15598928 used, 16390236 buff/cache
KiB Swap: 16383996 total, 16383996 free, 0 used. 16156524 avail Mem
us
用户应用程序消耗的CPU时间sy
内核消耗的CPU时间ni
修改过nice值的进程消耗的CPU时间id
空闲的CPU时间wa
等待I/O的CPU时间hi
中断请求(irq)处理程序消耗的CPU时间si
softirq处理程序消耗的CPU时间
procinfo
procinfo命令从/proc文件系统显示系统的一些整体信息。 CentOS上安装procinfo:
yum install ncurses-devel ncurses
wget https://jaist.dl.sourceforge.net/project/procinfo-ng/procinfo-ng/2.0.304/procinfo-ng-2.0.304.tar.bz2
bzip2 -d procinfo-ng-2.0.304.tar.bz2
tar -zxvf procinfo-ng-2.0.304.tar
./configure
make
make install
procinfo的命令格式为procinfo [-d] [-D] [-n sec]
。
-n sec
统计间隔-d
For memory, CPU times, paging, swapping, disk, context and interrupt stats, display values per second rather than totals. This option implies-f
.-D
Same as -d, except that memory stats are displayed as totals.
procinfo
Memory: Total Used Free Buffers
RAM: 32531016 32141696 389320 188
Swap: 16383996 12756 16371240
Load average: 0.13 0.10 0.11 1/1395 182649
user : 1d 00:32:09.38 0.6% page in : 443415
nice : 00:00:04.62 0.0% page out: 414517142
system: 08:56:58.52 0.2% page act: 7940993
IOwait: 05:55:26.97 0.1% page dea: 1729013
hw irq: 00:00:00.00 0.0% page flt: 1122837199
sw irq: 00:10:20.71 0.0% swap in : 330
idle : 24w 4d 18:16:48.69 99.1% swap out: 3408
uptime: 3w 20:07:24.53 context : 4685239938
irq 0: 159 timer irq 42: 4102662 em1-tx-0
irq 8: 48 rtc0 irq 43: 1661923 em1-rx-1
irq 9: 0 acpi irq 44: 1286104 em1-rx-2
irq 10: 179 ipmi_si irq 45: 948437 em1-rx-3
irq 18: 38 ehci_hcd:usb1, eh irq 46: 1888365 em1-rx-4
上面的命令没有使用
-d
,则显示统计信息为系统从开机以来的总和。显示各项的形式为天、小时、分钟。我们看到idle为24周,系统运行了3周,是因为这台机器有8个CPU。irq no.
显示了iraq的编号,已经启动的次数,以及对应负责的内核驱动程序。通过这个我们可以看出哪个设备引起了中断。
mpstat
mpstat命令可以显示随着时间变化的CPU数据,方便我们找出CPU使用率与时间的关系。
mpstat命令包含在安装系统状态查看工具集sysstat中,我们先安装sysstat:
yum install sysstat
sysstat工具集包含sar, iostat, mpstat, sar等工具
mpstat命令格式:mpstat [-P {cpu | ALL}] [delay [count]]
-P
指定监控那个CPU,取值0~cpunum-1delay
为采样间隔count
为采样次数
mpstat 1 5
09:36:35 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
09:36:36 AM all 0.63 0.00 0.38 0.00 0.00 0.00 0.00 0.00 0.00 99.00
09:36:37 AM all 0.75 0.00 0.25 0.13 0.00 0.00 0.00 0.00 0.00 98.87
09:36:38 AM all 1.13 0.00 0.25 0.00 0.00 0.00 0.00 0.00 0.00 98.62
09:36:39 AM all 1.00 0.00 0.75 0.00 0.00 0.00 0.00 0.00 0.00 98.25
09:36:40 AM all 0.38 0.00 0.25 0.00 0.00 0.00 0.00 0.00 0.00 99.37
Average: all 0.78 0.00 0.38 0.03 0.00 0.00 0.00 0.00 0.00 98.82
sar
sar即系统活动报告,可以将收据到的系统性能数据记录到二进制文件,之后可以重放二进制文件。 也就是说使用sar命令可以实时显示、记录和重放系统性能信息。
sar命令包含在安装系统状态查看工具集sysstat中,我们先安装sysstat:
yum install sysstat
sar命令和CPU统计相关的命令格式:sar [ -q ] [ -u [ ALL ] ] [ -w ] [ -I { int [,...] | SUM | ALL | XALL } ] [ -P { cpu [,...] | ALL } ] [ -f [ filename ] | -o [ filename ] [ -s [ hh:mm:ss ] ] [ -e [ hh:mm:ss ] ] [ interval [ count ] ]
-q
报告系统运行队列长度和平均负载-u
报告CPU使用率,这个也是sar命令的默认输出-w
报告系统中已经发生的上下文切换次数-I
报告系统中已经发生的中断的速率-P
指定从哪个CPU收集统计信息-f
指定用于重放的统计信息的文件名-o
指定用于记录的统计信息的文件名-s
和-e
指定重放统计信息时的开始时间和结束时间interval
指定采样的间隔时间count
指定采样次数
sar -q
:
runq-sz
采样时的运行队列的长度plist-sz
采样时的进程的进程数,包括运行、睡眠和等待I/O的进程ldavg-1
采样时前1分钟的系统负载ldavg-5
采样时前5分钟的系统负载ldavg-15
采样时前15分钟的系统负载blocked
Number of tasks currently blocked, waiting for I/O to complete.
sar -u
:
%user
:上一个采样中CPU消耗在用户时间上的的百分比%nice
: 上一个采样中CPU执行低优先级(或nice)进程消耗时间的百分比%system
:上一个采样中CPU消耗在系统时间上的百分比%steal
:当 hypervisor 服务另一个虚拟处理器的时候,虚拟 CPU 等待实际 CPU 的时间的百分比。低 steal 值意味着你的应用程序在目前的虚拟机上运作良好。因为你的虚拟机不会经常地为了 CPU 时间与其它虚拟机激烈竞争%idle
: 上一个采样中CPU的空闲时间百分比
sar -w
:
proc/s
每秒新建进程数据cswch/s
每秒上下文切换次数
原文出处:https://blog.frognew.com/2014/12/linux-pm-cpu.html
- MORE | 更多精彩文章 -
即刻点击阅读原文,发现技术世界的美好