我有脚本可以创建数百个快速连续的小型临时文件,并且很快就会重新读回来,然后取消链接。
我的测试显示,即使在中等负载下,也可以将所述文件放在/tmp
(到磁盘)或/dev/shm
(文件系统级共享内存)中,这几乎没有任何性能差异。我把它归因于文件系统缓存。
当然,磁盘将最终受到文件系统操作的影响,但是对于多个小的写入读取临时文件,为什么(不)推荐/dev/shm
通过磁盘支持的目录?您是否注意到共享内存目录在缓存的VFS上的性能大幅提升?
答案 0 :(得分:13)
/dev/shm
旨在用于非常特殊的目的,而不是用于任意程序提供的文件。
相比之下,/tmp
为exactly made for this。在我的系统上,/tmp
也是tmpfs
,与/var/tmp
形成对比,{{1}}用于放置较大的文件,可能会保留更长时间。
答案 1 :(得分:2)
它基本上是相同的(当你有一个交换文件时,shm也会被磁盘隐式支持)。
/ tmp的优势在于它填满了更多(考虑到你的硬盘可能比你的交换文件大)。而且它得到了更广泛的支持。