/dev/shm
与在常规文件系统上写入文件相比,效率如何?据我所知,/dev/shm
也是硬盘上的一个空间,所以读写速度是一样的。
我的问题是,我有一个 96GB 的文件和只有 64GB 的内存(+ 64GB 交换空间)。然后,同一进程的多个线程需要读取文件的小随机 block (大约 1.5MB)。
/dev/shm
是一个很好的用例吗?
它会比从 /home
以只读模式打开文件然后传递给线程以读取所需的随机 block 更快吗?
最佳答案
你不使用/dev/shm
。它的存在使 POSIX C 库可以通过 POSIX API 提供共享内存支持。不是这样你可以戳里面的东西。
如果您想要一个属于您自己的内存文件系统,您可以将其挂载到任何您想要的地方。
mount -t tmpfs tmpfs/mnt/tmp
,例如。
Linux tmpfs
是一个只存在于 RAM 中的临时文件系统。它是通过一个没有任何磁盘存储的文件缓存来实现的。它会在内存压力下将其内容写入交换文件。如果您不想要交换文件,您可以使用 ramfs
。
我不知道您从哪里想到使用 /dev/shm
来提高读取文件的效率,因为它根本不是这样做的。
也许您正在考虑通过 mmap
系统调用使用内存映射?
在这里阅读这个答案:https://superuser.com/a/1030777/4642它涵盖了很多 tmpfs 信息。
关于linux - 如何以及何时使用/dev/shm 来提高效率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42884087/