如何以及何时使用 /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 信息。
/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 信息。