linux IO理解-1
容易被誤讀的IOSTAT
- 因為/proc/diskstats並未把佇列等待時間和硬碟處理時間分開,所以凡是以它為基礎的工具都不可能分別提供disk service time以及queue有關的值
- iostat是以/proc/diskstats為基礎計算出來的,
- 每個I/O的平均耗時是用await表示的,但它不能反映硬碟裝置的效能,因為await不僅包括硬碟裝置處理I/O的時間,還包括了在佇列中等待的時
- %util:該硬碟裝置的繁忙比率=[Δio_ticks/Δt],表示該裝置有I/O(即非空閒)的時間比率,不考慮I/O有多少,只考慮有沒有。太高可能都是順序IO
- %iowait 表示在一個取樣週期內有百分之幾的時間屬於以下情況:CPU空閒、並且有仍未完成的I/O請求
pidstat 計算程式單位時間內的增量
iotop 觀察程式的動態I/O
利用BLKTRACE分析IO效能
使用blktrace需要掛載debugfs:
$ mount -t debugfs debugfs /sys/kernel/debug
利用blktrace把資料記錄在檔案裡,預設的輸出檔名是 sdb.blktrace.<cpu>,每個CPU對應一個檔案。你也可以用-o引數指定自己的輸出檔名。
$ blktrace -d /dev/sdb
利用btt分析blktrace資料。btt是對blktrace資料進行自動分析的工具。
btt不能分析實時資料,只能對blktrace儲存的資料檔案進行分析。使用方法:
把原本按CPU分別儲存的檔案合併成一個,合併後的檔名為sdb.blktrace.bin:
$ blkparse -i sdb -d sdb.blktrace.bin
執行btt對sdb.blktrace.bin進行分析:
$ btt -i sdb.blktrace.bin
我們看到93.7461%的時間消耗在D2C,也就是硬體層,這是正常的,我們說過D2C是衡量硬體效能的指標,
這裡單個IO平均0.129201毫秒,已經是相當快了,單個IO最慢14.246176 毫秒,不算壞。Q2G和G2I都很小,完全正常。
I2D稍微有點大,應該是cfq scheduler的排程策略造成的,你可以試試其它scheduler,比如deadline,比較兩者的差異,然後選擇最適合你應用特點的那個。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26250550/viewspace-2148631/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java:IO:深入理解Java
- 理解IO多路複用
- Java IO1:IO和FileJava
- Socket.io 深入理解
- Linux IO模型Linux模型
- linux io toolsLinux
- 【IO】Linux下的五種IO模型Linux模型
- 從作業系統層面理解Linux下的網路IO模型作業系統Linux模型
- linux的IO模型Linux模型
- 理解socket.io(一)---相關的APIAPI
- Java入門學習-自我理解IO流Java
- Linux C 檔案IOLinux
- Linux IO排程方法Linux
- Linux檔案IO操作Linux
- 【Linux】基礎IO(下)!!!Linux
- 【Linux】基礎IO(上)!!!Linux
- Linux系統磁碟IOLinux
- Linux 效能監測:IOLinux
- 簡述Linux磁碟IOLinux
- 如何理解Linux系統中的資料一致性和IO型別?Linux型別
- Linux程式設計學習筆記 | Linux IO學習[2] – 標準IOLinux程式設計筆記
- 談談對不同I/O模型的理解 (阻塞/非阻塞IO,同步/非同步IO)模型非同步
- Dart 原始碼分析:深入理解 dart:io HttpClientDart原始碼HTTPclient
- <摘錄>linux檔案IOLinux
- linux 系統IO 排程Linux
- Linux 效能優化之 IO 篇Linux優化
- Linux 的 Socket IO 模型趣解Linux模型
- Linux下開發-IO複用Linux
- linux 同步IO: sync、fsync與fdatasyncLinux
- Linux 下的五種 IO 模型Linux模型
- 【轉】linux非同步io機制Linux非同步
- Linux中的IO模型介紹Linux模型
- IO——簡略的學習筆記(1)筆記
- 幽默講解 Linux 的 Socket IO 模型Linux模型
- Linux之 iostat 解讀磁碟ioLinuxiOS
- 磁碟IO效能監控(Linux 和 Windows)LinuxWindows
- Linux iostat監測IO狀態LinuxiOS
- 轉:linux io排程深入分析Linux