Appendix D. パフォーマンス、テスト、デバッグ用のツール

scu. SCSI Command Utility(SCU)には、SCSI 機器の日常のメンテナンスや診断に必要な 様々な SCSI コマンドが用意されています。含まれている機能は、フォーマット、 不良ブロックのスキャン(とブロックの再配置)、新しいファームウェアの ダウンロード、診断の実行、パフォーマンス情報の取得などがあります。Unix プラット フォーム(と NT)のいくつかで利用可能ですが、現状ではバイナリ形式のみの提供 です。詳細は www.bit-net.com/~rmiller/scu.htmlを見てください。

dd. ディスクや CD-ROM、DVD で、ストリーミング性能のテストにとても便利です。 詳細は man dd してみてください。例として、0 ブロックから はじまる 1 GB(10**9 バイト)のデータをディスクから読み取るのにどのくらい かかるのか調べる例を挙げておきます。

$ time dd if=/dev/sda of=/dev/null bs=512 count=1953126
/dev/sda の raw デバイスが /dev/raw/raw1 なら、上記の行は下記と等しくなります。

$ time dd if=/dev/raw/raw1 of=/dev/null bs=512 count=1953126
一度に 1 セクタ 512 バイトを読んでいるので、期待していた程速くない かもしれません。dd の最後 2 つの引数を「bs=8k count=122071」に変更すれば、 「raw」への dd はより高速になるはずです。

dt. Data Test(DT)プログラムは、dd の書式を雛形にしています。しかし、dt には シーケンシャルなコピーの他にも、いろいろな機能があります。ディスクやテープ、 CD-ROM、DVD のような SCSI デバイス向けの総合的なデータテストプログラムです。 Unix プラットフォーム(と NT)のいくつかで利用が可能で、ソースも利用可能です (これが前出の「scu」と異なります)。 www.bit-net.com/~rmiller/dt.html に詳しい情報があります。

lmdd. このコマンドは、lmbench に入っているプログラムの 1 つで、dd コマンドと同系列のプログラムです。入出力の測定用になっていて、完了時に かかった時間と転送量を出力します。つまり time コマンドと 電卓は必要なくなります。

blockdev. ブロックデバイス(通常はディスク)のセクタサイズとセクタ数、先読み状態 を取得します。バッファをフラッシュするのにも利用でき、パーティション テーブルの再読み込みも可能です。man blockdev を参照して ください。

sg_dd. このコマンドは sg_utils パッケージの一部(W4を参照) です。dd コマンドの仲間で、入出力両方もしくはいずれか 一方を sg もしくは raw デバイスに対して行います。ブロックサイズの引数(「bs」) は、その物理デバイスのものと合致している必要があります。引数の「skip」と「seek」 は、32 ビットアーキテクチャでは 2**31 - 1 まで設定でき、1 TB(2G * 512)の ディスクにアクセスできます。64 ビットのファイルの読み書きオフセットのシーク には、Linux のシステムコマンド llseek() が用いられます。lmdd は、2 GB より大きい場合は扱えませんし、dd コマンドは複数 の相対的な seek を行うとまともな結果は返りません。sg_dd には、「bpt」(転送当たりのブロック数)引数があり、入出力それぞれにおける読み 書きのブロック数を制御します。

sg_utils パッケージにはその他にもプログラムがあります。SCSI バスをスキャン する(sg_scansg_map)、SCSI バスの 転送量を計測する(sg_rbufsg_turs)、 SCSI の INQUIRY コマンドからのデータを表示する(sg_inq)、 媒体をスピンアップしたりダウンしたりする(sg_start)が あります。

dd_rescue + scsiinfo. この dd 系コマンドは、SCSI(もしくは IDE)ディスクや CD-ROM (W6を参照)といった媒体を障害から復旧するために 作られました。scsiinfo は、モードページ情報を表示 したり変更したりするユーティリティで、同じ所から入手できます。

sard. このユーティリティは、System V Release 4 の sar -dを 参考にし、マウントしているデバイスとパーティションの入出力状態を見られる ようにします。Stephen Tweedie 氏が作成し、sard ユーティリティが入って います。 /proc/partitions に出力するよう拡張するにはカーネル パッチが必要です。 ftp.uk.linux.org/pub/linux/sct/fs/profilingから入手できます。 vmstat(「man vmstat」を参照)のようなプログラム と比べて、比較的低レベル(例えば SCSI の中間レベル)の状態を収集します。