2012-03-16 41 views
19

我有幾個快速連續的腳本,需要創建小型臨時文件,並很快讀回,然後取消關聯。/tmp與/ dev/shm用於Linux上的臨時文件存儲?

即使在中等負載下,我的測試在Linux上將/tmp(對磁盤)或/dev/shm(文件系統級別的共享內存)放入文件系統級共享內存時,性能差異很小。我把它歸因於文件系統緩存。

授予磁盤將最終受到文件系統操作,但在多個小寫讀取臨時文件,爲什麼你(不)推薦/dev/shm通過磁盤支持的目錄?你有沒有注意到共享內存目錄在緩存的VFS上有很大的性能提升?

回答

13

/dev/shm旨在用於非常特殊的目的,而不是由任意程序提供的文件。

相比之下,/tmpexactly made for this。在我的系統上,/tmp也是tmpfs,與/var/tmp對比,用於放置較大的文件,可能會停留更長時間。

+1

+1'/ dev/shm'是一個通用的'tmpfs',是Linux的實現細節,不是以任何方式保證(可用空間通常非常有限)。使用'/ tmp'和'/ var/tmp'來表示它們的用途。根據使用情況和文件系統的不同,如果您創建並取消鏈接文件,則可能只會緩存在緩存中,並且從未打開過磁盤。 – ephemient 2012-03-17 01:25:08

+0

@ephemient - 一個文件創建並立即取消鏈接,即使緩存最終會打到磁盤,不是? – Xailor 2012-03-17 17:44:07

+1

@glglgl - 在我們正在部署的系統中(託管服務場景中)/ tmp不是由'tmpfs'備份,而是由主sda1磁盤備份。否則,我會同意遵守標準,但這是我們目前的部署環境。 – Xailor 2012-03-17 17:50:58

3

它本質上是一樣的(shm也是在交換文件時由磁盤隱式支持的)。

/tmp的優勢在於它更難填滿(考慮到您的硬盤可能比您的交換文件大)。而且它得到了更廣泛的支持。