Тест производительности /dev/shm

Тест производительности /dev/shm

В настоящее время я разрабатываю программное обеспечение, которому требуется быстрая межпроцессная и временная коммуникация ввода-вывода (изображения, а также большие массивы 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 ГБ/с (потому что наибольший объем данных, который я читаю или записываю, составляет 1 ГБ, и мне бы хотелось сделать это менее чем за секунду).


Я в основном храню большие массивы (от 50 МБ до 1 ГБ) черезHDF5.

Связанный контент