2009-08-28 14 views
1

私はディスクIOを最適化するつもりですが、ディスクキャッシュのサイズを調べようとしています。 system_profilerは私には言いませんが、他にどこを見ることができますか?osx:ディスクI/Oキャッシュのサイズを調べるにはどうすればいいですか?

私のプログラムは全ボリュームを処理しています:私は安全なワイプを行っていますので、ボリューム上のすべてのブロックをループして、データをランダム化して書き込みます。 IO操作当たりのブロック数は、1ジョブあたりのr/wa単一ブロック数よりも大幅に高速です。私の質問から、r/w操作の理想的なサイズ(パフォーマンス:スピードの点で理想的)を見つけることができます。ワイププログラムの場合、私は読み込み操作が必要ではないことを指摘しないでください。どうも。

+0

OSXのファイルシステムキャッシュ、または物理HDDコントローラのRAMチップを意味しますか? – MSalters

+0

@MSalters:ハードウェアのキャッシュサイズは私が探しているものだと思います。より具体的にするために質問を編集しました。どうも。 – kent

答えて

7

Mac OS Xは、統一バッファキャッシュを使用します。つまり、カーネルのVMオブジェクトとファイルはあるレベルで同じものであり、キャッシングに使用可能なメモリのサイズは、システムの他の部分のVMの圧力に完全に依存しています。また、読み込みキャッシュ内の項目が書き込まれた場合には、読み書きキャッシュが統一されていることを意味します。変更がコミットされると、ディスクに書き込まれます。

したがって、ディスクキャッシュは非常に小さいか、またはギガバイト大きく、システムが使用されると動的に変更されます。このため、キャッシュサイズを決定してそれに基づいて最適化しようとすると、失われた戦いになります。基礎となるデバイスの最適なIOサイズを確認するなど、キャッシュをより良く操作する方法や、キャッシュされるべきではないデータを特定し、F_NOCACHEを使用するなど、キャッシュを通知することを検討する方がはるかに優れています。

+0

ルイスに非常に有益な答えをありがとう。 フォローアップの質問は次のようになります。基礎となるデバイスの最適IOサイズをどのように検出しますか? thx! \ | K < – kent

+0

@Louis:re: "書き込みからフラッシュチップまで"とても良い投稿です。情報をありがとう! – kent

+0

あなたの最善の策は、statfs()システムコールを使用して、返された構造体のf_iosizeメンバを調べることです。 –

関連する問題