web-dev-qa-db-ja.com

ramdiskへのシンボリックリンク後のI / O集中操作でパフォーマンスの向上はありません

数千のマルチMBファイルのセットを変換するシステムがあります。変換のすべてのステップの後、中間ファイルをディスクに書き込みます。コンセプトはスクラッチディスクに似ています。

RAID6で実行されている高性能のSASドライブがありますが、RAMもCPUも多くの打撃を受けていないため、ボトルネックの1つは実際、中間ファイルをスクラッチディレクトリに書き込みます。

これらのシステムには多くのRAMがあり、RHELはRAMドライブ/ dev/shmが付属しています。簡単なテストとして、スクラッチディレクトリを削除し、シンボリックリンクしました。 RAMドライブのディレクトリに移動します。パフォーマンスは同じか、わずかに劣っていましたか?どうやって?

シンボリックリンクを取得するためにディスクに移動すると、RAMディスクのパフォーマンス上の利点が何らかの形で無効になりますか?

10GBを超えるデータ(Java vm)の最大値)に触れたため、キャッシュされるべきではないことがわかっているいくつかのシナリオでこれをテストしました。

ここで何が欠けていますか?

7
MattPark

あなたが見逃しているのは、ファイルの書き込みはほとんどの場合非ブロッキングであるということです。 OSに十分なメモリがある限り、ファイルの書き込みはメモリに書き込むだけです。 OSは、そうするためのリソースを持っているので、それらの書き込みをディスクにフラッシュします。 RAMがたくさんあり、小さなファイルを書き込んでいて、ディスクが高速であるため、アプリケーションは書き込みが完了するのを待つ必要はほとんどありません。

完全な推測として、あなたは実際にはアプリケーションアーキテクチャが制限されていると思います。あなたはCPUがあまり打撃を与えないと言いますが、それはおそらくあなたのアプリケーションがあなたのCPUのリソースの多くを利用するには粗すぎることを意味します。たとえば、CPUに8コアがあり、アプリケーションアーキテクチャがシングルプロセス、シングルスレッドの場合、使用できるコアは1つだけです。

7
David Schwartz