影響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