如何以及何时使用 /dev/shm 来提高效率?

How and when to use /dev/shm for efficiency?

/dev/shm 与在常规文件系统上写入文件相比,效率如何?据我所知,/dev/shm 也是 HDD 上的 space,因此 read/write 速度相同。

我的问题是,我有一个 96GB 的文件和只有 64GB 的内存(+ 64GB 交换空间)。然后,来自同一进程的多个线程需要读取文件的小随机块(大约 1.5MB)。

/dev/shm 是一个很好的用例吗?
它会比从 /home 以只读模式打开文件然后传递给线程以读取所需的随机块更快吗?

您没有使用 /dev/shm。它的存在使 POSIX C 库可以通过 POSIX API 提供共享内存支持。不是这样你可以戳那里的东西。

如果您想要一个属于您自己的内存文件系统,您可以将其挂载到任何您想要的地方。

mount -t tmpfs tmpfs /mnt/tmp,例如

A Linux tmpfs 是一个只存在于内存中的临时文件系统。它是通过一个没有任何磁盘存储的文件缓存来实现的。它会在内存压力下将其内容写入交换文件。如果你不想要交换文件,你可以使用 ramfs

我不知道您是从哪里想到使用 /dev/shm 来提高读取文件效率的,因为它根本不是这样做的。

也许您正在考虑通过 mmap 系统调用使用内存映射?

在这里阅读这个答案:https://superuser.com/a/1030777/4642它涵盖了很多 tmpfs 信息。