linux 性能方面

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

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章