Linux top、vmstat、iostat、sar命令说明

top命令可用于观测CPU的一些运行指标。进入top命令之后,按1键即可看到每核CPU的详细状况。

CPU的使用有多个维度的指标,以下分别说明:
us 用户态所占用的CPU百分比。
sy 内核态所占用的CPU百分比。如果这个值过高,需要配合vmstat命令,查看是否是上下文切换是否频繁。
ni 高优先级应用所占用的CPU百分比。
wa 等待I/O设备所占用的CPU百分比。如果这个值非常高,输入输出设备可能存在非常明显的瓶颈。
hi 硬件中断所占用的CPU百分比。
si 软中断所占用的CPU百分比。
st 这个一般发生在虚拟机上,指的是虚拟CPU等待实际CPU时间的百分比。如果这个值过大,则你的宿主机压力可能过大。如果你是云主机,则你的服务商可能存在超卖。
id 空闲CPU百分比。

VIRT 这里就是虚拟内存,一般比较大,不用做过多关注。
RES 我们平常关注的就是这一列的数值,它代表了进程实际占用的内存。平常在做监控时,也主要是监控这个数值。
SHR 指的是共享内存,比如可以复用的一些so文件等。

一般的,我们比较关注空闲CPU的百分比,它可以从整体上体现CPU的利用情况。
————————————————————————
Linux vmstat命令说明
要看CPU的繁忙程度,还可以通过vmstat命令
b 存在于等待队列的内核线程数目,比如等待I/O等。数字过大则cpu太忙。
cs 代表上下文切换的数量。如果频繁的进行上下文切换,就需要考虑是否是线程数开的过多。
si/so 显示了交换分区的一些使用情况,交换分区对性能的影响比较大,需要格外关注。
vmstat 1

——————————————————————
通过以下命令即可看到当前操作系统的缓存行大小
cat /sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size

[root@ukihk ~]# cat /sys/devices/system/cpu/cpu0/cache/index1/size
32K
[root@ukihk ~]# cat /sys/devices/system/cpu/cpu0/cache/index2/size
256K
[root@ukihk ~]# cat /sys/devices/system/cpu/cpu0/cache/index3/size

———————————————————————
网络
除了iotop、iostat这些命令外,sar命令可以方便的看到网络运行状况,下面是一个简单的示例,用于描述入网流量和出网流量。
sar -n DEV 1
以下可以选择性的只看TCP的一些状态
sar -n TCP,ETCP 1