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