How is /dev/shm
more efficient than writing the file on the regular file system? As far as I know, /dev/shm
is also a space on the HDD so the read/write speeds are the same.
My problem is, I have a 96GB file and only 64GB RAM (+ 64GB swap). Then, multiple threads from the same process need to read small random chunks of the file (about 1.5MB).
Is /dev/shm
a good use case for this?
Would it be faster than opening the file in read-only mode from /home
and then passing over to the threads to do the reading the required random chunks?
You don't use /dev/shm
. It exists so that the POSIX C library can provide shared memory support via the POSIX API. Not so you can poke at stuff in there.
If you want an in-memory filesystem of your very own, you can mount one wherever you want it.
mount -t tmpfs tmpfs /mnt/tmp
, for example.
A Linux tmpfs
is a temporary filesystem that only exists in RAM. It is implemented by having a file cache without any disk storage behind it. It will write its contents into the swap file under memory pressure. If you didn't want the swapfile you can use a ramfs
.
I don't know where you got the idea of using /dev/shm
for efficiency in reading files, because that isn't what it does at all.
Maybe you were thinking of using memory mapping, via the mmap
system call?