Linux性能监控学习笔记
这是一篇读书笔记,读的是《LinuxPermormanceMonitoring》,oscon2009
营养价值并不大,只是做个记录而已。
Linux性能监控一般分为这几个方面:
1.CPU
2.Memory
3.IO
4.Network
这4个方面相互独立但又互影响。
性能监控常用工具:
*vmstat:全能
*mpstat:CPU
*sar:全能
*iostat:磁盘
*netstat:网络
*dstat:聚合
*iptraf:网络
*netperf:带宽
*ethtool:网络
*iperf:网络
*tcptrace:包分析
CPU
优先级:中断>内核进程>用户进程
上下文切换(ContextSwitches):CPU在各个进程间切换的过程。
运行队列(RunQueue):Linux通过一定的调度算法来运行各个进程,待运行的进程会存放在RunQueue里面,load的概念就是RunQueue的总长度加上正在运行的进程数。
CPU使用率:
*UserTime:用户空间的进程所使用的时间
*SystemTime:内核进程所使用的时间
*WaitIO:等待IO的时间
*Idle:空闲时间
一些判断标准:
*每个CPU核心的RunQueue不应该超过1~3
*CPU充分使用时,UserTime约占65%~70%,SystemTime约占30%~35%,Idle约占0%~5%
例子1:cs很多,Interupt不高,WaitTime较高,说明进程普遍在等待硬件响应
例子2:cs不多,Interupt较高,UserTime较高,说明某一个进程在等待硬件响应
Memory
内存以页(page)为单位,守护进程kswapd负责保证有空闲的内存可以用。
kswapd做如下的事:
*页没有被修改,则把它放到空闲内存链表中;
*页被修改,且对应于文件系统一个文件,则把它写入到磁盘;
*页被修改,但不对应于文件系统中的文件,则把它写到swap设备;
pdflush守护进程负责把脏页同步到磁盘
对于内存的使用,只要保证不要用到swap即可。
IO
进程运行时需要的文件,如果没有在内存缓存中,则引发MajorPageFault(MPF),此时内核从磁盘中读取文件,并且缓存在内存中,下次需要同样的内容,则引发MinorPageFault(MnPF),直接从内存中读取。
IO是计算机中最慢的部分。一般情况下,CPU的WaitTime较高,contextswitch明显多于interupt,说明系统的IO是瓶颈。
对于网络部分,主要是使用各种工具检测和设置网络参数。对于非局域网,网络环境非常复杂,需要具体分析。