Punto de referencia /dev/shm

Punto de referencia /dev/shm

Actualmente estoy desarrollando un software que necesita una rápida comunicación de E/S temporal y entre procesos (imágenes y grandes matrices hdf5). La "vida útil" de los datos es diferente y depende de varias cosas, pero en la mayoría de los casos oscila entre segundos y minutos. Sólo unos pocos archivos deben almacenarse por más tiempo. Ninguno de los datos necesita guardarse de forma persistente.

Por lo tanto, pensé /dev/shmque debería ser el camino a seguir. Sin embargo, estoy luchando por comparar /dev/shm.

Mi primer intento fue:

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

...que muestra el siguiente resultado:

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

Sin embargo, cuando ejecuto ddel bsindicador para especificar cuántos bytes se deben leer/escribir a la vez, el resultado cambia mucho:

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

...da como resultado:

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

¿Por qué es mucho más rápido leer/escribir fragmentos de datos muy grandes (muchos bytes 512 veces) en comparación con fragmentos de datos pequeños muchas veces (1.000.000 de veces, como en el primer intento)?

¿Es "legítimo" comparar /dev/shmel dduso /proc/kcorecomo fuente? ¿O de alguna manera está /proc/kcorelimitando el punto de referencia?

No puedo decir exactamente cuánto rendimiento tengoen realidadNecesito, pero me gustaría tener una velocidad de lectura y escritura de más de 1 GB/s (porque la mayor cantidad de datos que estoy leyendo o escribiendo es 1 GB y me gustaría hacerlo en menos de un segundo).


Principalmente almaceno matrices grandes (50 MB hasta 1 GB) a través deHDF5.

información relacionada