ディスクの書き込み性能を測りたい時にはこんな風にしたら楽ちんだと思う #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
このコマンドを実行すると:
- 処理の開始時間を test.log ファイルに書き出す
- 10GByteのファイル test.dat を作成する
より厳密には1024Byteのブロック(中身は/dev/zero, つまりnull)を10,485,760個(10×1,024×1,024)、test.logファイルに書き出す - 処理の終了時間を test.log ファイルに書き出す
つまりtest.logを見て終了時間から開始時間を引けば、1GByteのデータをディスクに書き込むのに、どのくらい時間が掛かるか分かる。
もっと小さいファイルがいい, あるいは大きいファイルがいいというコトであればaCnt(書き込み回数)を大きくしたり、小さくしたりすればいい。何回か計測してやれば、大きなファイ ルをコピーしたい, ディスクからディスクにデータを移行したいなんて時の目安もだいたい掴めるんじゃないかな。
またデータベースサーバで、書き込むときのブロックサイズが決まっているなら、blokszはそれに合わせた方がより「らしい」結果になると思う。
以上、ふと埋もれてたメモを見つけたので走り書きしてみた。不明な点などあったらコメント欄に質問頂ければ幸い。分かる範囲でお答えします。