影响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活动进行监控,无法对某个进程进行深入分析。
- [root@xiaoqi 下载]# vmstat 3
- procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
- r b swpd free buff cache si so bi bo in cs us sy id wa st
- 1 0 0 1991392 44848 548404 0 0 36 35 155 267 4 1 94 1 0
- 0 0 0 1991556 44856 548404 0 0 5 19 241 943 3 1 95 1 0
- 0 0 0 1991604 44856 548420 0 0 0 0 177 549 1 0 99 0 0
每3秒更新一次,循环输出。
- [root@xiaoqi 下载]# vmstat 3 5
- procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
- r b swpd free buff cache si so bi bo in cs us sy id wa st
- 0 0 0 1992440 44944 548436 0 0 36 35 154 269 4 1 94 1 0
- 0 0 0 1992108 44944 548436 0 0 0 0 176 706 2 1 97 0 0
- 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:统计的次数。
- [root@xiaoqi lanmp]# iostat -c 2 3
- Linux 2.6.32-279.14.1.el6.i686 (xiaoqi) 2012年12月04日 _i686_ (2 CPU)
- avg-cpu: %user %nice %system %iowait %steal %idle
- 4.69 0.00 1.03 0.73 0.00 93.55
- avg-cpu: %user %nice %system %iowait %steal %idle
- 1.25 0.00 0.25 0.00 0.00 98.50
- avg-cpu: %user %nice %system %iowait %steal %idle
- 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
另外有个问题:
- [root@xiaoqi sa]# sar -o 2 3
- 无法打开 /var/log/sa/sa28: 是一个目录
可以通过下面命令解决,多加了一个-o的参数
- [root@xiaoqi sa]# sar -o 2 3
- Linux 2.6.32-279.14.1.el6.i686 (xiaoqi) 2012年11月28日 _i686_ (2 CPU)
- 22时12分56秒 CPU %user %nice %system %iowait %steal %idle
- 22时12分58秒 all 0.75 0.00 0.75 0.00 0.00 98.49
- 22时13分00秒 all 1.00 0.00 0.50 0.00 0.00 98.50
- 22时13分02秒 all 1.01 0.00 0.50 8.54 0.00 89.95
- 平均时间: all 0.92 0.00 0.59 2.85 0.00 95.65
- [root@xiaoqi lanmp]# sar -u 3 5
- Linux 2.6.32-279.14.1.el6.i686 (xiaoqi) 2012年12月04日 _i686_ (2 CPU)
- 21时44分02秒 CPU %user %nice %system %iowait %steal %idle
- 21时44分05秒 all 0.17 0.00 0.17 0.00 0.00 99.67
- 21时44分08秒 all 1.68 0.00 0.50 0.00 0.00 97.82
- 21时44分11秒 all 4.84 0.00 0.83 0.00 0.00 94.32
- 21时44分14秒 all 0.17 0.00 0.17 0.00 0.00 99.67
- 21时44分17秒 all 0.17 0.00 0.00 0.00 0.00 99.83
- 平均时间: 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:统计系统当前的运行状况。
- [root@xiaoqi lanmp]# uptime
- 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
下载及安装
- wget http://wtdown1.onlinedown.net/down/iptraf-3.0.0.tar.zip
- unzip iptraf-3.0.0.tar.zip
- tar -zxvf iptraf-3.0.0.tar.gz
- cd iptraf-3.0.0
按网上的方法直接
- [root@xiaoqi iptraf-3.0.0]# ./Setup
有很多错误,没成功,一直没能解决,先放一下。
内存性能:
free:
- [root@xiaoqi lanmp]# free -m
- total used free shared buffers cached
- Mem: 2901 1011 1889 0 35 630
- -/+ buffers/cache: 345 2556
- Swap: 5999 0 5999
实时监控
- [root@xiaoqi lanmp]# free -m -s 1
- total used free shared buffers cached
- Mem: 2901 1014 1887 0 36 630
- -/+ buffers/cache: 347 2553
- Swap: 5999 0 5999
- total used free shared buffers cached
- Mem: 2901 1014 1886 0 36 630
- -/+ buffers/cache: 348 2553
- [root@xiaoqi lanmp]# watch -n 3 -d free
sar -r
查看内存和交换空间的使用率
- [root@xiaoqi lanmp]# sar -r 2 3
- Linux 2.6.32-279.14.1.el6.i686 (xiaoqi) 2012年12月04日 _i686_ (2 CPU)
- 22时15分14秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
- 22时15分16秒 1934140 1036988 34.90 37156 645884 1250436 13.72 536328 406796 24
- 22时15分18秒 1933644 1037484 34.92 37156 645892 1250436 13.72 536340 406804 24
- 22时15分20秒 1933644 1037484 34.92 37156 645892 1250436 13.72 536344 406804 24
- 平均时间: 1933809 1037319 34.91 37156 645889 1250436 13.72 536337 406801 24