影响linux性能的因素

    CPU

在linux下,只有运行SMP内核才能支持超线程,安装的cpu越多,从超线程获得的性能上的提高就越少。linux内核会把多核处理器当作多个单独的cpu来识别。

可能出现cpu瓶颈的应用有邮件服务器,动态web服务器等。

    内存

一个在32位处理器的linux系统上,超过8G的内存都将被浪费。在32位的系统上,应用程序单个进程最大只能使用2GB的内存。

打印服务器,数据库服务器,静态web服务器要注意内存方面的瓶颈。

    磁盘I/O带宽

RAID0:提高性能和吞吐量,没有容错和数据修复功能。最少需要2个。

RAID1:安全可靠,但只有50%的使用率,最少2个。

RAID5:提高了可靠性,读出高写入低,至少3个。

RAID0+1:可靠性高,读写快,至少4个。

    网络I/O带宽

 

性能分析工具

    cpu方面,vmstat

可以对内存信息,进程状态,cpu活动进行监控,无法对某个进程进行深入分析。

  1. [root@xiaoqi 下载]# vmstat 3 
  2. procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- 
  3.  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 
  4.  1  0      0 1991392  44848 548404    0    0    36    35  155  267  4  1 94  1  0    
  5.  0  0      0 1991556  44856 548404    0    0     5    19  241  943  3  1 95  1  0    
  6.  0  0      0 1991604  44856 548420    0    0     0     0  177  549  1  0 99  0  0    

每3秒更新一次,循环输出。

  1. [root@xiaoqi 下载]# vmstat 3 5 
  2. procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- 
  3.  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 
  4.  0  0      0 1992440  44944 548436    0    0    36    35  154  269  4  1 94  1  0    
  5.  0  0      0 1992108  44944 548436    0    0     0     0  176  706  2  1 97  0  0    
  6.  0  0      0 1992140  44952 548432    0    0     0     7   83  194  0  0 94  6  0    

每3秒更新一次,统计5次后结束。

参数解释:

procs列,r:表示运行和等待cpu时间片的进程数,这个值如果长期大于系统cpu的个数,说明cpu不足,需增加cpu个数。

b:表示在等待资源的进程数。

memory列,swpd:表示切换到内存交换区的内存数量。如果swpd不为0,或者比较大,而si,so长期为0,那性能正常。

free:空闲物理内存数量。

buff:buffers cache的内存数量,一般对块设备读写才需要缓冲。

cache:page cache的内存数量,一般作为文件系统cache,频繁访问的文件都会被cache。如果cache的值较大,就说明cache的文件数较多,如果此时bi比较小,说明文件系统效率比较好。

swap列,si:由磁盘调入内存。

so:由内存调入磁盘。一般情况下si,so都为0,若长期不为0,则说明内存不足。

io列,bi:从快设备读入数据的总量。

bo:写入到块设备的数据总量。

设置bi+bo的参考值为1000,如果超过1000,而且wa较大,则系统磁盘读写有问题。

system显示采集间隔内发生的中断数,in:某一时间间隔中观测到的每秒设备中断数。

cs:每秒产生的上下文切换次数。

上面这两个值越大,由内核消耗的cpu时间越多。

us:用户进程消耗的cpu时间百分比。长期大于50%就要考虑优化程序或算法。

sy:内核进程消耗cpu时间百分比。

us+sy参考值为80%,如果过高可能cpu资源不足。

id:cpu空闲状态的时间百分比。

wa:io等待所占用的cpu时间百分比。wa的参考值为20%,过高则io等待严重。

cpu的评估中,重点是r us sy id的值。

    iostat

主要显示磁盘读写操作的统计信息,同时也给出cpu的使用情况,无法对某个进程进行单一分析。

下载安装:

http://sebastien.godard.pagesperso-orange.fr/download.html

tar -zxvf sysstat-10.1.2.tar.gz

cd sysstat-10.1.2

./configure

make

make install

然后就可以使用iostat等命令了。

参数:

-c:cpu     -d:磁盘    -k:每秒以k bytes为单位显示数据  -t:打印出统计信息开始执行的时间

-x device:指定某个设备  interval:指定量次统计间隔时间 count:统计的次数。

  1. [root@xiaoqi lanmp]# iostat -c 2 3 
  2. Linux 2.6.32-279.14.1.el6.i686 (xiaoqi)     2012年12月04日     _i686_  (2 CPU) 
  3.  
  4. avg-cpu:  %user   %nice %system %iowait  %steal   %idle 
  5.            4.69    0.00    1.03    0.73    0.00   93.55 
  6.  
  7. avg-cpu:  %user   %nice %system %iowait  %steal   %idle 
  8.            1.25    0.00    0.25    0.00    0.00   98.50 
  9.  
  10. avg-cpu:  %user   %nice %system %iowait  %steal   %idle 
  11.            0.75    0.00    0.25    0.00    0.00   99.00 

 sar

-A:显示系统所有资源设备(cpu、内存、磁盘)的运行状况。

-u:显示系统所有cpu在采样时间内的负载状态。

-p:显示当前系统中指定cpu的使用情况。

-d:所有硬盘在采样时间内的使用状况。

-r:内存在采样时间内的使用状况。

-b:缓冲区。

-v:显示进程、文件、i节点和锁表状态。

-n:网络运行状态。参数后面可跟DEV,EDEV,SOCK,FULL。DEV显示网络接口信息,EDEV显示网络错误的统计数据,SOCK显示套接字信息,FULL显示其他三个参数可显示的所有信息。

-q:显示了运行队列的大小,它与系统当前的平均负载相同。

-R:进程在采样时间内的活动情况。

-y:终端设备在采样时间内的活动情况。

-w:系统交换活动的状态。

-o filename:将命令结果以2进制格式放在filename文件中。

interval,count跟之前一样。

查看cpu的整体负载状况,三秒一次统计五次

sar -u 3 5

查看第二颗cpu的运行负载。

sar -p 3 5

另外有个问题:

  1. [root@xiaoqi sa]# sar -o 2 3 
  2. 无法打开 /var/log/sa/sa28: 是一个目录 

可以通过下面命令解决,多加了一个-o的参数

  1. [root@xiaoqi sa]# sar -o 2 3 
  2. Linux 2.6.32-279.14.1.el6.i686 (xiaoqi)     2012年11月28日     _i686_  (2 CPU) 
  3.  
  4. 22时12分56秒     CPU     %user     %nice   %system   %iowait    %steal     %idle 
  5. 22时12分58秒     all      0.75      0.00      0.75      0.00      0.00     98.49 
  6. 22时13分00秒     all      1.00      0.00      0.50      0.00      0.00     98.50 
  7. 22时13分02秒     all      1.01      0.00      0.50      8.54      0.00     89.95 
  8. 平均时间:     all      0.92      0.00      0.59      2.85      0.00     95.65 
  1. [root@xiaoqi lanmp]# sar -u 3 5 
  2. Linux 2.6.32-279.14.1.el6.i686 (xiaoqi)     2012年12月04日     _i686_  (2 CPU) 
  3.  
  4. 21时44分02秒     CPU     %user     %nice   %system   %iowait    %steal     %idle 
  5. 21时44分05秒     all      0.17      0.00      0.17      0.00      0.00     99.67 
  6. 21时44分08秒     all      1.68      0.00      0.50      0.00      0.00     97.82 
  7. 21时44分11秒     all      4.84      0.00      0.83      0.00      0.00     94.32 
  8. 21时44分14秒     all      0.17      0.00      0.17      0.00      0.00     99.67 
  9. 21时44分17秒     all      0.17      0.00      0.00      0.00      0.00     99.83 
  10. 平均时间:     all      1.40      0.00      0.33      0.00      0.00     98.26 

%user:用户进程消耗的cpu时间百分比。

%nice:运行正常进程所消耗的cpu时间百分比。

%system:系统进程消耗的cpu时间百分比。

%iowait:io等待占用的cpu时间百分比。

%systel:在相对紧张的环境下pagein强制对不同的页面进行的steal操作。

%idel:cpu空闲状态下的时间百分比。

uptime:统计系统当前的运行状况。

  1. [root@xiaoqi lanmp]# uptime 
  2.  21:58:11 up  3:17,  2 users,  load average: 0.00, 0.05, 0.05 

输出的信息一次为,系统现在的时间,系统从上次开机到现在运行了多长时间,系统目前有多少登录用户,系统在1,5,15分钟内的平均负载。这三个值不能大于cpu个数,大的话说明cpu负载很高。

以上部分内容来自网络以及对《循序渐进linux》一书的学习总结

网络性能监控工具iptraf-3.0.0

下载及安装

  1. wget http://wtdown1.onlinedown.net/down/iptraf-3.0.0.tar.zip 
  2. unzip iptraf-3.0.0.tar.zip 
  3. tar -zxvf iptraf-3.0.0.tar.gz 
  4. cd iptraf-3.0.0 

按网上的方法直接

  1. [root@xiaoqi iptraf-3.0.0]# ./Setup 

有很多错误,没成功,一直没能解决,先放一下。

    内存性能:

free:

  1. [root@xiaoqi lanmp]# free -m 
  2.              total       used       free     shared    buffers     cached 
  3. Mem:          2901       1011       1889          0         35        630 
  4. -/+ buffers/cache:        345       2556 
  5. Swap:         5999          0       5999 

实时监控

  1. [root@xiaoqi lanmp]# free -m -s 1 
  2.              total       used       free     shared    buffers     cached 
  3. Mem:          2901       1014       1887          0         36        630 
  4. -/+ buffers/cache:        347       2553 
  5. Swap:         5999          0       5999 
  6.  
  7.              total       used       free     shared    buffers     cached 
  8. Mem:          2901       1014       1886          0         36        630 
  9. -/+ buffers/cache:        348       2553 
  1. [root@xiaoqi lanmp]# watch -n 3 -d free 

sar -r

查看内存和交换空间的使用率

  1. [root@xiaoqi lanmp]# sar -r 2 3 
  2. Linux 2.6.32-279.14.1.el6.i686 (xiaoqi)     2012年12月04日     _i686_  (2 CPU) 
  3.  
  4. 22时15分14秒 kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty 
  5. 22时15分16秒   1934140   1036988     34.90     37156    645884   1250436     13.72    536328    406796        24 
  6. 22时15分18秒   1933644   1037484     34.92     37156    645892   1250436     13.72    536340    406804        24 
  7. 22时15分20秒   1933644   1037484     34.92     37156    645892   1250436     13.72    536344    406804        24 
  8. 平均时间:   1933809   1037319     34.91     37156    645889   1250436     13.72    536337    406801        24