blktrace是一套追蹤檔案系統上block寫入、讀取動作的程式,
因為實驗室需要大量的workload作測試,所以大家電腦都要被追蹤一下Orz
不過,等到開機再執行,然後關機前再結束紀錄的方式,總是有點小誤差,
也有點麻煩:p所以就自己寫了一個短短的script,
讓他開機的時候會自動跑,關機的時候會自動紀錄,
獻醜了:


#!/bin/sh
#####################################################################
# this script is for blktrace, and make it
# 1. auto start blktrace when boot
# 2. parse the log to text format when shutdown
#####################################################################

#### variable setting ####
DEV=sda # device for monitor
DEV_FILE=/dev/$DEV # real device file
LOG_DIR=~/blktrace_log/ # directory of log
LOG_PREFIX=`hostname`_`date +%Y%m%d%H%M`_$DEV # prefix of log filename

#### function definition ####
do_start(){
blktrace -a issue -D $LOG_DIR -d $DEV_FILE &
}

do_log(){
# blktrace must be terminated before parse,
# otherwise the log is not valid.
killall blktrace
blkparse -D $LOG_DIR $DEV -o $LOG_DIR/$LOG_PREFIX.log
}

case "$1" in
start) # boot
do_start
;;
stop) # shutdown
do_log
;;
restart|reload|force-reload) # restart manually
do_log
do_start
;;
*) # some error
echo "Error: argument '$1' not supported" >&2
echo "Usage: $0 start|stop|restart" >&2
exit 3
;;
esac

exit 0


檔案存成run_blktrace.sh,修改屬性為755
# chmod 755 run_blktrace.sh
複製到/etc/init.d/下
# sudo cp run_blktrace.sh /etc/init.d
加入到init.d所有run level
# sudo update-rc.d run_blktrace.sh defaults

重開之後,用 ps -aux|grep blktrace 檢查看看有沒有再跑就可以了

log放的地方 <- 這個要修改一下,不然會放在/root/blktrace_log下 囧
還有監看的裝置都設定在run_blktrace.sh裡面
直接修改 /etc/init.d/run_blktrace.sh 就好了,不用重新加入,
修改之前需要stop以便把上次的紀錄存下來
# sudo /etc/init.d/run_blktrace.sh stop
不用重開機只要重新啟動就可以了
# sudo /etc/init.d/run_blktrace.sh start

有bug請回報 XDD
創作者介紹

koukai的Blog

koukaipan 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • wei
  • 看不董.我也不會用

    我想問的是@@"

    這是屬於 自動記錄 你電腦運行時間的 程式嗎 @@? 謝謝
  • 不是的,完全不一樣,這事紀錄你磁碟機的運作資料,例如:
    0.2秒時 對磁區246 寫入了長度8的資料
    0.3秒時 對磁區313 讀取了長度4的資料
    諸如此類,因為方便性+準確性的關係,所以要讓他從開機就開始紀錄,接著關機時把這些紀錄輸出到一個檔案中,以便之後的分析。

    koukaipan 於 2009/08/03 16:05 回覆