2010/02/15

ディスクの書き込み性能を測りたい時にはこんな風にしたら楽ちんだと思う #unix

小ネタを一つ。

タイトルの通り、ディスクの書き込み性能をサクっと測りたい時のやり方である。動作確認はSolarisでしか行ってないけど、おそらく UNIX/Linuxなシステムなら、どれでも動作すると思う。

やり方は、計測したいファイルシステムのマウントポイント(/ とか /export/home とか /home1 とか)に移動して、次のコマンドを実行する。それだけ。

   blksz=1024
   aCnt=10485760

   rm test.dat
   date > test.log ; \
    dd if=/dev/zero of=test.dat bs=${blksz} count=${aCnt} ; \
     date >> test.log ; du -ks test.dat >> test.log

このコマンドを実行すると:

  1. 処理の開始時間を test.log ファイルに書き出す
  2. 10GByteのファイル test.dat を作成する
    より厳密には1024Byteのブロック(中身は/dev/zero, つまりnull)を10,485,760個(10×1,024×1,024)、test.logファイルに書き出す
  3. 処理の終了時間を test.log ファイルに書き出す
上記の処理を行う。

つまりtest.logを見て終了時間から開始時間を引けば、1GByteのデータをディスクに書き込むのに、どのくらい時間が掛かるか分かる。

もっと小さいファイルがいい, あるいは大きいファイルがいいというコトであればaCnt(書き込み回数)を大きくしたり、小さくしたりすればいい。何回か計測してやれば、大きなファイ ルをコピーしたい, ディスクからディスクにデータを移行したいなんて時の目安もだいたい掴めるんじゃないかな。

またデータベースサーバで、書き込むときのブロックサイズが決まっているなら、blokszはそれに合わせた方がより「らしい」結果になると思う。

以上、ふと埋もれてたメモを見つけたので走り書きしてみた。不明な点などあったらコメント欄に質問頂ければ幸い。分かる範囲でお答えします。

blog comments powered by Disqus