私は現在、高速プロセス間および一時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/shm
dd
ベンチマークのソースとして使用するのは「合法的」ですか?/proc/kcore
または/proc/kcore
どのような方法でベンチマークを制限しますか?
どれくらい努力したのか正確には言えません。本物これは本当に必要ですが、読み書き速度が1 GB / s以上であることを願っています(読み書き可能な最大データ量は1 GBで、1秒以内に完了したいためです)。
私は主に次のように大規模な配列(50MB〜1GB)を保存します。HDF5。