2012年(28)
分类: LINUX
2012-05-01 21:23:54
Linux CPU性能调优
CPU是影响Linux性能的主要因素之一。
vmstat命令:显示关于系统各种资源之间相关性能的简要信息。
procs那栏中的r表示运行和等待CPU时间片的进程数,如果这个值长期大于系统CPU的个数那就说明CPU不足,需要增加CPU。
memory那栏中:
swapd表示切换到内存交换区的内存数量。
free表示当前空闲的物理内存数量。
buff表示块设备(/dev/sda)读写需要的缓冲。
cache表示文件系统的缓存。如果值较大,说明缓存中的文件数较多。
swap中
si表示由磁盘调入内存。
so表示由内存调入磁盘。
在一般情况下,si和so的值都为0,如果这2个值长期不为0 的话,说明系统内存不足,需要添加内存。
io:显示磁盘读写状况
bi表示读磁盘数据的总量。
bo表示写磁盘数据的总量。
system:显示间隔内发生的中断数
in表示在磨一时间间隔中每秒设备中断数。
cs表示每秒产生的上下文切换次数。
这2个值越大,则说明内核消耗CPU时间就越多。
cpu:显示了CPU的使用状态
us显示了用户进程消耗CPU时间百分比。如果us值越高则说明消耗CPU的时间越多,如果us的值长期大于50%则需要优化程序或算法。
sy显示内核消耗CPU时间百分比。如果us+sy值大于80%,则可能存在CPU资源不足情况。
id显示CPU处于空闲状态时间百分比。
wa显示IO等待所占用CPU时间百分比。wa越高,则IO等待越严重,则考虑提高磁盘读写性能。wa参考值20%。
sar命令:可以对每个方面进行单独的统计,但是增加了系统开销,但是对系统的统计结果不会有很大影响。
由上图可以看出我的系统只有一个CPU,如果有多个CPU的话会显示多个。
在多个CPU的情况下,如果想对其中一个CPU进行信息统计的话,则使用
sar –P 0 2 3 对第一个CPU进行信息统计。
%user显示用户进程消耗的CPU时间百分比
%nice显示运行正常进程所消耗CPU时间百分比
%system显示了系统进程消耗CPU时间百分比
%iowait显示IO等待所占用CPU时间百分比
%idle显示了CPU处在空闲时间百分比
%steal显示在内存相对紧张的环境下pagein强制对不同的页面进行的steal操作。
最后一行Average显示了上面统计的平均值。
如果在一个多CPU的系统中,如果程序使用了单线程,会造成CPU整体使用率不高,导致一个CPU在使用,其他CPU处在闲置状态。
iostat命令:主要用于统计磁盘IO状态,但是也能查看CPU使用情况,但是只能显示所有CPU的平均信息。
这里各列的意思与sar中的意思一样。
uptime命令:主要统计系统当前的运行状况。
系统在1分钟内,5分钟内,15分钟内的平均负荷。
上面的vmstat,sar,iostat,uptime命令主要是用于统计CPU信息的,还可以通过top,ps查看进程使用情况,来判断CPU负载过大的原因。