我有幾個快速連續的腳本,需要創建小型臨時文件,並很快讀回,然後取消關聯。/tmp與/ dev/shm用於Linux上的臨時文件存儲?
即使在中等負載下,我的測試在Linux上將/tmp
(對磁盤)或/dev/shm
(文件系統級別的共享內存)放入文件系統級共享內存時,性能差異很小。我把它歸因於文件系統緩存。
授予磁盤將最終受到文件系統操作,但在多個小寫讀取臨時文件,爲什麼你(不)推薦/dev/shm
通過磁盤支持的目錄?你有沒有注意到共享內存目錄在緩存的VFS上有很大的性能提升?
我有幾個快速連續的腳本,需要創建小型臨時文件,並很快讀回,然後取消關聯。/tmp與/ dev/shm用於Linux上的臨時文件存儲?
即使在中等負載下,我的測試在Linux上將/tmp
(對磁盤)或/dev/shm
(文件系統級別的共享內存)放入文件系統級共享內存時,性能差異很小。我把它歸因於文件系統緩存。
授予磁盤將最終受到文件系統操作,但在多個小寫讀取臨時文件,爲什麼你(不)推薦/dev/shm
通過磁盤支持的目錄?你有沒有注意到共享內存目錄在緩存的VFS上有很大的性能提升?
/dev/shm
旨在用於非常特殊的目的,而不是由任意程序提供的文件。
相比之下,/tmp
是exactly made for this。在我的系統上,/tmp
也是tmpfs
,與/var/tmp
對比,用於放置較大的文件,可能會停留更長時間。
它本質上是一樣的(shm也是在交換文件時由磁盤隱式支持的)。
/tmp的優勢在於它更難填滿(考慮到您的硬盤可能比您的交換文件大)。而且它得到了更廣泛的支持。
+1'/ dev/shm'是一個通用的'tmpfs',是Linux的實現細節,不是以任何方式保證(可用空間通常非常有限)。使用'/ tmp'和'/ var/tmp'來表示它們的用途。根據使用情況和文件系統的不同,如果您創建並取消鏈接文件,則可能只會緩存在緩存中,並且從未打開過磁盤。 – ephemient 2012-03-17 01:25:08
@ephemient - 一個文件創建並立即取消鏈接,即使緩存最終會打到磁盤,不是? – Xailor 2012-03-17 17:44:07
@glglgl - 在我們正在部署的系統中(託管服務場景中)/ tmp不是由'tmpfs'備份,而是由主sda1磁盤備份。否則,我會同意遵守標準,但這是我們目前的部署環境。 – Xailor 2012-03-17 17:50:58