日期:2014-05-16  浏览次数:20643 次

Linux性能监控学习笔记
这是一篇读书笔记,读的是《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是瓶颈。

对于网络部分,主要是使用各种工具检测和设置网络参数。对于非局域网,网络环境非常复杂,需要具体分析。