Linux 性能檢測

       Linux 性能檢測的常用命令或工具有:top、free、iostat、vmstat、time

       測試文件系統的工具有:  dd 、 iozone

      top :  詳細的說明見http://www.cnblogs.com/xuxm2007/archive/2010/12/02/1894809.html

      

     

    free : 看我的系統的截圖如下,恐怖的是free都爲零了,其實並沒什麼大礙,原因可見:                 http://www.cnblogs.com/tzhangofseu/archive/2011/12/27/2303162.html  和 http://www.linuxfly.org/post/320/ 

   


    其它命令實際上這裏講得比較清楚了: http://www.linuxfly.org/post/115/


   系統性能指標的參數說明: 以下四點摘自http://www.linuxfly.org/post/114/

(1)處理器參數

引用
·CPU utilization
這是一個很簡單的參數,它直觀的描述了每個CPU的利用率。在xSeries架構中,如果CPU的利用率長時間的超過80%,就可能是出現了處理器的瓶頸。
·Runable processes
這個值描述了正在準備被執行的進程,在一個持續時間裏這個值不應該超過物理CPU數量的10倍,否則CPU方面就可能存在瓶頸。
·Blocked
描述了那些因爲等待I/O操作結束而不能被執行的進程,Blocked可能指出你正面臨I/O瓶頸。
·User time
描述了處理用戶進程的百分比,包括nice time。如果User time的值很高,說明系統性能用在處理實際的工作。
·System time
描述了CPU花費在處理內核操作包括IRQ和軟件中斷上面的百分比。如果system time很高說明系統可能存在網絡或者驅動堆棧方面的瓶頸。一個系統通常只花費很少的時間去處理內核的操作。
·Idle time
描述了CPU空閒的百分比。
·Nice time
描述了CPU花費在處理re-nicing進程的百分比。
·Context switch
系統中線程之間進行交換的數量。
·Waiting
CPU花費在等待I/O操作上的總時間,與blocked相似,一個系統不應該花費太多的時間在等待I/O操作上,否則你應該進一步檢測I/O子系統是否存在瓶頸。
·Interrupts
Interrupts值包括硬Interrupts和軟Interrupts,硬Interrupts會對系統性能帶來更多的不利影響。高的Interrupts值指出系統可能存在一個軟件的瓶頸,可能是內核或者驅動程序。注意Interrupts值中包括CPU時鐘導致的中斷(現代的xServer系統每秒1000個Interrupts值)。

(2)內存參數
引用
·Free memory
相比其他操作系統,Linux空閒內存的值不應該做爲一個性能參考的重要指標,因爲就像我們之前提到過的,Linux內核會分配大量沒有被使用的內存作爲文件系統的緩存,所以這個值通常都比較小。
·Swap usage
這個值描述了已經被使用的swap空間。Swap usage只表示了Linux管理內存的有效性。對識別內存瓶頸來說,Swap In/Out纔是一個比較又意義的依據,如果Swap In/Out的值長期保持在每秒200到300個頁面通常就表示系統可能存在內存的瓶頸。
·Buffer and cache
這個值描述了爲文件系統和塊設備分配的緩存。在Red Flag DC Server 5版本中,你可以通過修改/proc/sys/vm中的page_cache_tuning來調整空閒內存中作爲緩存的數量。
·Slabs
描述了內核使用的內存空間,注意內核的頁面是不能被交換到磁盤上的。
·Active versus inactive memory
提供了關於系統內存的active內存信息,Inactive內存是被kswapd守護進程交換到磁盤上的空間。

(3)網絡參數
引用
·Packets received and sent
這個參數表示了一個指定網卡接收和發送的數據包的數量。
·Bytes received and sent
這個參數表示了一個指定網卡接收和發送的數據包的字節數。
·Collisions per second
這個值提供了發生在指定網卡上的網絡衝突的數量。持續的出現這個值代表在網絡架構上出現了瓶頸,而不是在服務器端出現的問題。在正常配置的網絡中衝突是非常少見的,除非用戶的網絡環境都是由hub組成。
·Packets dropped
這個值表示了被內核丟掉的數據包數量,可能是因爲防火牆或者是網絡緩存的缺乏。
·Overruns
Overruns表達了超出網絡接口緩存的次數,這個參數應該和packets dropped值聯繫到一起來判斷是否存在在網絡緩存或者網絡隊列過長方面的瓶頸。
·Errors
這個值記錄了標誌爲失敗的幀的數量。這個可能由錯誤的網絡配置或者部分網線損壞導致,在銅口千兆以太網環境中部分網線的損害是影響性能的一個重要因素。

(4)塊設備參數
引用
·Iowait
CPU等待I/O操作所花費的時間。這個值持續很高通常可能是I/O瓶頸所導致的。
·Average queue length
I/O請求的數量,通常一個磁盤隊列值爲2到3爲最佳情況,更高的值說明系統可能存在I/O瓶頸。
·Average wait
響應一個I/O操作的平均時間。Average wait包括實際I/O操作的時間和在I/O隊列裏等待的時間。
·Transfers per second
描述每秒執行多少次I/O操作(包括讀和寫)。Transfers per second的值與kBytes per second結合起來可以幫助你估計系統的平均傳輸塊大小,這個傳輸塊大小通常和磁盤子系統的條帶化大小相符合可以獲得最好的性能。
·Blocks read/write per second
這個值表達了每秒讀寫的blocks數量,在2.6內核中blocks是1024bytes,在早些的內核版本中blocks可以是不同的大小,從512bytes到4kb。
·Kilobytes per second read/write
按照kb爲單位表示讀寫塊設備的實際數據的數量。


         文件系統測試該測哪些指標:(iozone支持)

   “ 

     Write: 測試向一個新文件寫入的性能。當一個新文件被寫入時,不僅僅是那些文件中的數據需要被存儲,還包括那些用於定位數據存儲在存儲介質的具體位置的額外信息。這些額外信息被稱作“元數據”。它包括目錄信息,所分配的空間和一些與該文件有關但又並非該文件所含數據的其他數據。拜這些額外信息所賜,Write的性能通常會比Re-write的性能低。

  Re-write: 測試向一個已存在的文件寫入的性能。當一個已存在的文件被寫入時,所需工作量較少,因爲此時元數據已經存在。Re-write的性能通常比Write的性能高。
  Read: 測試讀一個已存在的文件的性能。
  Re-Read: 測試讀一個最近讀過的文件的性能。Re-Read性能會高些,因爲操作系統通常會緩存最近讀過的文件數據。這個緩存可以被用於讀以提高性能。
  Random Read: 測試讀一個文件中的隨機偏移量的性能。許多因素可能影響這種情況下的系統性能,例如:操作系統緩存的大小,磁盤數量,尋道延遲和其他。
  Random Write: 測試寫一個文件中的隨機偏移量的性能。同樣,許多因素可能影響這種情況下的系統性能,例如:操作系統緩存的大小,磁盤數量,尋道延遲和其他。
  Random Mix: 測試讀寫一個文件中的隨機偏移量的性能。同樣,許多因素可能影響這種情況下的系統性能,例如:操作系統緩存的大小,磁盤數量,尋道延遲和其他。這個測試只有在吞吐量測試模式下才能進行。每個線程/進程運行讀或寫測試。這種分佈式讀/寫測試是基於round robin 模式的。最好使用多於一個線程/進程執行此測試。
  Backwards Read: 測試使用倒序讀一個文件的性能。這種讀文件方法可能看起來很可笑,事實上,有些應用確實這麼幹。MSC Nastran是一個使用倒序讀文件的應用程序的一個例子。它所讀的文件都十分大(大小從G級別到T級別)。儘管許多操作系統使用一些特殊實現來優化順序讀文件的速度,很少有操作系統注意到並增強倒序讀文件的性能。
  Record Rewrite: 測試寫與覆蓋寫一個文件中的特定塊的性能。這個塊可能會發生一些很有趣的事。如果這個塊足夠小(比CPU數據緩存小),測出來的性能將會非常高。如果比CPU數據緩存大而比TLB小,測出來的是另一個階段的性能。如果比此二者都大,但比操作系統緩存小,得到的性能又是一個階段。若大到超過操作系統緩存,又是另一番結果。
  Strided Read: 測試跳躍讀一個文件的性能。舉例如下:在0偏移量處讀4Kbytes,然後間隔200Kbytes,讀4Kbytes,再間隔200Kbytes,如此反覆。此時的模式是讀4Kbytes,間隔200Kbytes並重復這個模式。這又是一個典型的應用行爲,文件中使用了數據結構並且訪問這個數據結構的特定區域的應用程序常常這樣做。
  許多操作系統並沒注意到這種行爲或者針對這種類型的訪問做一些優化。同樣,這種訪問行爲也可能導致一些有趣的性能異常。一個例子是在一個數據片化的文件系統裏,應用程序的跳躍導致某一個特定的磁盤成爲性能瓶頸。
  Fwrite: 測試調用庫函數fwrite()來寫文件的性能。這是一個執行緩存與阻塞寫操作的庫例程。緩存在用戶空間之內。如果一個應用程序想要寫很小的傳輸塊,fwrite()函數中的緩存與阻塞I/O功能能通過減少實際操作系統調用並在操作系統調用時增加傳輸塊的大小來增強應用程序的性能。
  這個測試是寫一個新文件,所以元數據的寫入也是要的。
  Frewrite:測試調用庫函數fwrite()來寫文件的性能。這是一個執行緩存與阻塞寫操作的庫例程。緩存在用戶空間之內。如果一個應用程序想要寫很小的傳輸塊,fwrite()函數中的緩存與阻塞I/O功能能通過減少實際操作系統調用並在操作系統調用時增加傳輸塊的大小來增強應用程序的性能。
  這個測試是寫入一個已存在的文件,由於無元數據操作,測試的性能會高些。
  Fread:測試調用庫函數fread()來讀文件的性能。這是一個執行緩存與阻塞讀操作的庫例程。緩存在用戶空間之內。如果一個應用程序想要讀很小的傳輸塊,fwrite()函數中的緩存與阻塞I/O功能能通過減少實際操作系統調用並在操作系統調用時增加傳輸塊的大小來增強應用程序的性能。
  Freread: 這個測試與上面的fread 類似,除了在這個測試中被讀文件是最近纔剛被讀過。這將導致更高的性能,因爲操作系統緩存了文件數據。
  幾個特殊測試:
  Mmap:許多操作系統支持mmap()的使用來映射一個文件到用戶地址空間。映射之後,對內存的讀寫將同步到文件中去。這對一些希望將文件當作內存塊來使用的應用程序來說很方便。一個例子是內存中的一塊將同時作爲一個文件保存在於文件系統中。
  mmap 文件的語義和普通文件略有不同。如果發生了對內存的存儲,並不是立即發生相應的文件I/O操作。使用MS_SYNC 和MS_ASYNC標誌位的 msyc()函數調用將控制內存和文件的一致性。調用msync() 時將MS_SYNC置位將強制把內存裏的內容寫到文件中去並等待直到此操作完成才返回。而MS_ASYNC 置位則告訴操作系統使用異步機制將內存刷新到磁盤,這樣應用程序可以直接返回而不用等待此操作的完成。
  這個測試就是測量使用mmap()機制完成I/O的性能。
  Async I/O: 許多操作系統支持的另外一種I/O機制是POSIX 標準的異步I/O。本程序使用POSIX標準異步I/O接口來完成此測試功能。

例如: aio_write(), aio_read(), aio_error()。這個測試測量POSIX異步I/O機制的性能。

        ---引自:--http://baike.baidu.com/view/3502720.htm

  

      測試文件系統最主要的是是順序讀寫、隨機讀寫、併發測試,另外如果是分佈式文件系統,注意測試環境的帶寬,如果是千兆以太網,帶寬的限制會在125MB/S內(1000Mb/8),所以如果有infiniband 的測試環境,更能真實的體現出分佈式文件系統真正的系統。

       比如我最近測的glusterfs,網絡就是瓶頸了.



sar - system activity report
iperf - perform network throughput tests
hdparm - to test local disk performance of any bricks
dbench - Measure disk throughput for simulated netbench run
iozone - Filesystem Benchmark
htop - interactive process viewer
vnstat - a console-based network traffic monitor
iftop - display bandwidth usage on an interface by host


       這篇文章除了粗體字是我所寫,其它均爲東截西湊而成,主要是前人總結的已經相當不錯了,但要想看還得到處搜,所以就截放一起了,不好意思了快哭了




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