基本/開発/shm

基本/開発/shm

私は現在、高速プロセス間および一時I / O通信(画像および大規模hdf5アレイ)を必要とするソフトウェアを開発しています。データの「寿命」はさまざまな要因によって異なりますが、ほとんどの場合、数秒から数分です。少数のファイルしか長く保存できません。データを保持する必要はありません。

/dev/shmだから私はそれが行くべき道だと思います。しかし、ベンチマークに苦労しています/dev/shm

私の最初の試みは次のとおりです。

sudo dd if=/proc/kcore of=/dev/shm/mem count=1000000

...次の結果を表示します。

1000000+0 records in
1000000+0 records out
512000000 bytes (512 MB, 488 MiB) copied, 0,661147 s, 774 MB/s

ただし、一度に何バイトを読み書きするかを指定するためにフラグをdd使用して実行すると、結果が大幅に変更されます。bs

sudo dd if=/proc/kcore of=/dev/shm/mem bs=$((1024*1024)) count=512

...結果は次のとおりです。

512+0 records in
512+0 records out
536870912 bytes (537 MB, 512 MiB) copied, 0,166003 s, 3,2 GB/s

非常に大きなデータブロック(数バイト、512倍)を読み書きするのが、小さいデータブロックを複数回(最初の試みのように1.000.000倍)読み書きするよりもはるかに速いのはなぜですか?

/dev/shmddベンチマークのソースとして使用するのは「合法的」ですか?/proc/kcoreまたは/proc/kcoreどのような方法でベンチマークを制限しますか?

どれくらい努力したのか正確には言えません。本物これは本当に必要ですが、読み書き速度が1 GB / s以上であることを願っています(読み書き可能な最大データ量は1 GBで、1秒以内に完了したいためです)。


私は主に次のように大規模な配列(50MB〜1GB)を保存します。HDF5

ベストアンサー1

おすすめ記事