LINUX下磁碟IO效能監測分析

來源:互聯網
上載者:User

LINUX下磁碟IO效能監測分析 2011-08-16 18:10:23

標籤:效能監測分析

linux
磁碟IO
休閑
SUSE LINUX 著作權聲明:原創作品,謝絕轉載!否則將追究法律責任。

     這兩天發現一台測試用的伺服器經常負載很高,但cpu和記憶體消耗卻很少,很是奇怪,經過診斷髮現是由於大容量的測試資料導致高並發下的磁碟IO消耗比較大,由於緩衝是小檔案並且數量比較大,所以並發比較高的情況下Io消耗非常大。
那怎樣才能快速的定位到並發高是由於磁碟io開銷大呢?
一、用 top 命令中的 資訊進行觀察

劃紅線的參數解釋如下:
Tasks: 437 total 進程總數
4 running 正在啟動並執行進程數
430 sleeping 睡眠的進程數
3 stopped 停止的進程數
0 zombie 殭屍進程數
Cpu(s):
7.1% us 使用者空間佔用CPU百分比
4.2% sy 核心空間佔用CPU百分比
0.0% ni 使用者進程空間內改變過優先順序的進程佔用CPU百分比
76.8% id 空閑CPU百分比
12% wa 等待輸入輸出的CPU時間百分比
12% wa 的百分比可以大致的體現出當前等待輸入輸出的磁碟io請求過於頻繁。

為進一步分析,我們跟蹤關鍵進程定位程式
#strace  -p  28644  (示佔用CPU較高)

 說明在多線程條件下,如果並行作業過於頻繁,semtimedop會調用失敗,Input/output  出錯。
進一步定位到程式 #ps  -ef | grep  28644
 

可以知道是ora_lgwr_nms程式導致的讀寫開銷比較大。

二、利用IOSTAT命令觀察
磁碟的IO效能是衡量電腦總體效能的一個重要指標。Linux提供了iostat命令來獲卻磁碟輸入/輸出(即IO)統計資訊。
#iostat  -x   1  統計完整的結果,每秒一次。

 iowait的值比較大,說明讀寫頻繁。
#iostat  -p   1統計各個分區的讀寫情況,每秒1次。

使用 #mount  命令,來對應尋找就知道sda5對應的/opt分區和sdb8對應的/data分區讀寫頻繁。

 再定位到DATA分區,查看資料庫歸檔情況,發現一分鐘內歸檔產生四個文檔並且每個檔案有48M這麼大,寫入應該非常頻繁,導致磁碟IO開銷比較大。

  而OPT分區由於有FTP傳輸到導致磁碟開銷比較大。
分析定位完畢,針對相關問題調整FTP和資料庫歸檔,然後再看一下都正常了。

  

 總結:TOP、IOSTAT都是比較常見的命令,通過基本命令的靈活應用來分析和定位問題是比較方便的,特別是基本命令的參數選擇和使用更是值得我們大家研究的。
 

補充:磁碟IOPS知識

IOPS (Input/Output Per Second)即每秒的輸入輸出量(或讀寫次數),是衡量磁碟效能的主要指標之一。IOPS是指單位時間內系統能處理的I/O請求數量,一般以每秒處理的I/O請求數量為單位,I/O請求通常為讀或寫資料操作請求。隨機讀寫頻繁的應用,如OLTP(Online
Transaction Processing),IOPS是關鍵衡量指標。另一個重要指標是資料輸送量(Throughput),指單位時間內可以成功傳輸的資料數量。對於大量順序讀寫的應用,如VOD(Video On Demand),則更關注輸送量指標。

傳統磁碟本質上一種機械裝置,如FC, SAS, SATA磁碟,轉速通常為5400/7200/10K/15K rpm不等。影響磁碟的關鍵因素是磁碟服務時間,即磁碟完成一個I/O請求所花費的時間,它由尋道時間、旋轉延遲和資料轉送時間三部分構成。
尋道時間Tseek是指將讀寫磁頭移動至正確的磁軌上所需要的時間。尋道時間越短,I/O操作越快,目前磁碟的平均尋道時間一般在3-15ms。
旋轉延遲Trotation是指碟片旋轉將請求資料所在扇區移至讀寫磁頭下方所需要的時間。旋轉延遲取決於磁碟轉速,通常使用磁碟旋轉一周所需時間的1/2表示。比如,7200 rpm的磁碟平均旋轉延遲大約為60*1000/7200/2 = 4.17ms,而轉速為15000 rpm的磁碟其平均旋轉延遲約為2ms。
資料轉送時間Ttransfer是指完成傳輸所請求的資料所需要的時間,它取決於資料轉送率,其值等於資料大小除以資料轉送率。目前IDE/ATA能達到133MB/s,SATA II可達到300MB/s的介面資料轉送率,資料轉送時間通常遠小於前兩部分時間。

因此,理論上可以計算出磁碟的最大IOPS,即IOPS = 1000 ms/ (Tseek + Troatation),忽略資料轉送時間。假設磁碟平均物理尋道時間為3ms, 磁碟轉速為7200,10K,15K rpm,則磁碟IOPS理論最大值分別為,
IOPS = 1000 / (3 + 60000/7200/2) = 140
IOPS = 1000 / (3 + 60000/10000/2) = 167
IOPS = 1000 / (3 + 60000/15000/2) = 200

決定IOPS的主要取決與陣列的演算法,cache命中率,以及磁碟個數。陣列的演算法因為不同的陣列不同而不同.在raid5與raid10上,讀iops沒有差別,但是相同的業務,寫iops最終落在每塊磁碟上是有差別的,如果達到了每塊磁碟的寫的i0ps限制,效能會受到影響。對於raid5來說每一個寫實際發生了4個io,而raid10隻發生了2次io,所以raid10比raid5在寫上要快一些。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.