iotop - 監看每支程式讀寫硬碟的情形
Published by knick,
iotop - 監看每支程式讀寫硬碟的情形
阿舍之前有介紹過用 NetHogs 來檢查每支在跑的程式各使用了多少的頻寬,這是 Server 端比較會用到的工具,而這次阿舍要介紹的,是個人電腦比較會用到的東西,就是用來查看看,是誰一直、一直在讀寫硬碟哩 ! 阿舍會用到這種工具的情況,就是當電腦沒在做什麼事的時候,硬碟的燈還一直的給它亮著或是閃不停的時候哩 !
iotop 的執行畫面 |
阿舍在網路上找到有幾支程式可用,阿舍大概的比較了一下,最後選了這個 iotop 來用,阿舍選 iotop 是因為它很簡單易用和易看,用法和 top 指令很像,而且,在 Ubuntu 內建的 PPA 就有放 iotop,所以,只要用下面這一行的 apt-get 指令來安裝就可以了。
sudo apt-get install iotop
在安裝好之後,只要用下面這一行來啟動就可以了,要注意的是,一定要用 sudo 來執行,否則,會因為權限問題而出現錯誤訊息的,iotop 啟動後的顯示畫面和 top 指令幾乎是一模一樣的,最大的差別是在畫面中間的那二行是顯示該程式每秒讀 (DISK READ) 和寫 (DISK WRITE) 硬碟的量,而不是顯示記憶體的使用資訊。
sudo iotop
如果想要顯示成累計讀寫硬碟的資料量的話,就需要像下面這行一樣,在 iotop 指令後面加上 「-a 」選項。
sudo iotop -a
除了「-a」選項之外,iotop 還有幾個阿舍覺得比較實用的選項,所以,就來說明一下,下面就是這幾個選項的用法及用途,而要說明的是,這下面這幾個選項和前面提到的「-a」選項都是可以合併使用的,不需要一次只能使用一個選項哩 !
sudo iotop -o
如果加了「-o」選項,那麼 iotop 就只會顯示正在讀寫硬碟的程式,如果沒有程式在讀寫的話,就不會出現任何的程式哩 !
sudo iotop -d 10
「-d」 選項是用來設定 iotop 更新的頻率,預設是 1 秒鐘,如果要改成 10 秒更新一次的話,就要用上面這一行指令來調整。
sudo iotop -p 3093
如果想要只針對某一支正在執行中的程式來監看的話,那麼就會需要用「-p」選項加上要監看的程式的 PID,這樣 iotop 就只會出現這個 PID 的硬碟讀取情形哩 !
sudo iotop -u arthuryu
用「-p」選項可以監看特定程式,而使用「-u」選項的話,則是可以監看特定使用者所啟動的程式對硬碟的讀取情形,但是,和「-p」選項不同的是,「-u」選項後面要帶入的曞人使用者的帳號名稱而不是代碼哩 !
最後,阿舍要說明的是 iotop 的批次模式 (batch),iotop 的批次模式會將程式讀寫硬碟的資料依序送到指定的輸出裝置,所以,批次模式適合用來將 iotop 所產出的結果寫到檔案來供程式或處理時使用,而要啟用批次模式的話,需要使用「-b」選項,然後,可以搭配「-t」選項來要求在產出的資料上,加註日期和時間,同時,也能使用「-n」選項來要求產出幾次資料後停止哩 !
舉例來說,如果要讓 iotop 以批次方式產出三次資料到 io.log 檔案,然後,只產出正在讀取硬碟中的程式,並且,在產出的資料上加時間的話,那麼 iotop 就要用下一面這一行的方式來執行哩 !
sudo iotop -bot -n 3 > io.log
資料來源
http://www.arthurtoday.com/2013/03/iotop-tutorial.html#.UkI5cpAW3v4
http://www.arthurtoday.com/2013/03/iotop-tutorial.html#.UkI5cpAW3v4