关键词:top、perf、sar、ksar、mpstat、uptime、vmstat、pidstat、time、cpustat、munin、htop、glances、atop、nmon、pcp-gui、collectl。
1. top
top是最常用的查看系统资源使用情况的工具,包括CPU、内存等等资源。
这里主要关注CPU资源。
1.1 /proc/loadavg
load average取自/proc/loadavg。
9.53 9.12 8.37 3/889 28165
前三个数字是1、5、15分钟内进程队列中平均进程数,包括正在运行的进程+准备好等待运行的进程。
第四个数字分子表示正在运行的进程数,分母是进程总数。
最后一个数字是最近运行的进程ID号。
其中top取的是/proc/loadavg的前三个数。
1.2 top使用
打开top,可以指定更新的周期。
输入H,打开隐藏的线程;输入1,可以显示单核CPU使用情况。
top -H -b -d 1 -n 200 > top.txt,每个1秒统计一次,共200次,显示线程细节,并保存到top.txt中。
top采样来源你还依赖于/proc/stat和/proc/
其中CPU信息对应的含义如下:
us是user的意思,统计nice小于等于0的用户空间进程,也即优先级为100~120。
ni是nice的意思,统计nice大于0的用户空间进程,也即优先级为121~139。
sys是system的意思,统计内核态运行时间,不包括中断。
id是idle的意思,几系统处于空闲态。
wa是iowait的意思,统计io等待时间。
hi是hardware interrupt,统计硬件中断时间。
si是software interrupt,统计软中断时间。
最后的st是steal的意思。
2. perf
《系统级性能分析工具perf的介绍与使用》有关于perf使用的详细介绍,这里重点关注CPU占用率。
通过sudo perf top -s comm,可以查看当前系统运行进程占比。
这里不像top一样区分idle、system、user,这里的占比是各个进程在总运行时间里面占比。
通过sudo perf record记录采样信息,然后通过sudo perf report -s comm。
3. sar、ksar
sar是System Activity Report的意思,可以用于实时观察当前系统活动,也可以生成历史记录的报告。
要使用sar需要安装sudo apt install sysstat,然后对sysstat进行配置。
sar用于记录统计信息,ksar用于将记录的信息图形化输出。
ksar下载地址在:https://github.com/vlsi/ksar/releases。
sudo gedit /etc/default/sysstat--------------------------------将 ENABLED=“false“ 改为ENABLED=“true“。
sudo gedit /etc/cron.d/sysstat--------------------------------修改sar的周期等配置。
sudo /etc/init.d/sysstat restart--------------------------------重启sar服务
/var/log/sysstat/--------------------------------------------------sar log存放目录
使用sar记录开机到目前的统计信息到文件sar.txt。
LC_ALL=C sar -A > sar.txt
PS:这里直接使用sar -A,在ksar中无法正常显示。
如下执行java -jar ksar.jar,然后Data->Load from text file...选择保存的sar.txt文件。
得到如下的图表。
还可以通过sar记录一段时间的信息,指定采样周期和采样次数。
这些命令前加上LC_ALL=C之后保存到文件中,都可以在ksar中图形化显示。
sar 1 100---------------------------------------所有cpu合一的统计信息
sar -P ALL 1 100-----------------------------包括cpu合一以及单个cpu的统计信息
sar -B 1 100-----------------------------------paging统计信息
sar -b 1 100----------------------------------块设备IO统计信息
sar -d 1 100----------------------------------块设备活动统计信息
sar -F 1 100---------------------------------挂载的文件系统统计信息
sar -r ALL------------------------------------显示详细的内存使用统计信息
sar -S----------------------------------------显示swap空间使用情况统计信息
sar -w---------------------------------------显示进程创建以及进程切换统计信息
sar -W--------------------------------------显示swap换入换出统计信息。
更详细请参考《How To Create sar Graphs With kSar To Identifying Linux Bottlenecks》、《Collect and report Linux System Activity Information with sar》。
4. mpstat
mpstat是Multiprocessor Statistics。当没有参数时,mpstat显示系统系统以来所有信息平均值。
常见用法如下,-P ALL监控所有CPU,细节显示特定CPU;10表示每10秒监控一次;20表示监控20次。
mpstat -P ALL 10 20
结果如下:
Linux 4.13.0-36-generic (xxx) 2018年08月13日 _x86_64_ (4 CPU) 11时01分09秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 11时01分19秒 all 3.44 6.26 5.15 0.13 0.00 0.20 0.00 0.00 0.00 84.82 11时01分19秒 0 3.09 13.46 3.29 0.00 0.00 0.10 0.00 0.00 0.00 80.06 11时01分19秒 1 4.41 3.11 5.02 0.00 0.00 0.60 0.00 0.00 0.00 86.86 11时01分19秒 2 2.96 0.20 9.29 0.00 0.00 0.10 0.00 0.00 0.00 87.45 11时01分19秒 3 3.32 7.95 3.12 0.50 0.00 0.00 0.00 0.00 0.00 85.11 11时01分19秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 11时01分29秒 all 3.65 6.09 5.08 0.00 0.00 0.25 0.00 0.00 0.00 84.93 11时01分29秒 0 3.92 11.07 4.63 0.00 0.00 0.20 0.00 0.00 0.00 80.18 11时01分29秒 1 4.39 1.90 3.49 0.00 0.00 0.80 0.00 0.00 0.00 89.42 11时01分29秒 2 3.35 0.10 10.14 0.00 0.00 0.00 0.00 0.00 0.00 86.41 11时01分29秒 3 2.91 11.26 2.21 0.00 0.00 0.00 0.00 0.00