基准/dev/shm

基准/dev/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/shm使用作为源dd进行基准测试是否“合法” ?/proc/kcore或者/proc/kcore以某种方式限制基准?

我无法准确说出我的表现有多少真的确实需要,但我希望有超过 1 GB/s 的读写速度(因为我读取或写入的最大数据量是 1 GB,并且我希望在不到一秒的时间内完成)。


我主要通过以下方式存储大数组(50 MB 至 1 GB)HDF5

相关内容