Linux 下tempfs
tmpfs是一種虛擬內(nèi)存文件系統(tǒng),而不是塊設(shè)備。是基于內(nèi)存的文件系統(tǒng),創(chuàng)建時不需要使用mkfs等初始化。
它最大的特點就是它的存儲空間在VM(virtual memory),VM是由linux內(nèi)核里面的vm子系統(tǒng)管理的。Linux下面VM的大小由RM(Real Memory)和swap組成,RM的大小就是物理內(nèi)存的大小,而Swap的大小是由自己決定的。
Swap是通過硬盤虛擬出來的內(nèi)存空間,因此它的讀寫速度相對RM(Real Memory)要慢許多,當(dāng)一個進(jìn)程申請一定數(shù)量的內(nèi)存時,如內(nèi)核的vm子系統(tǒng)發(fā)現(xiàn)沒有足夠的RM時,就會把RM里面的一些不常用的數(shù)據(jù)交換到Swap里面,如果需要重新使用這些數(shù)
據(jù)再把它們從Swap交換到RM里面。如果有足夠大的物理內(nèi)存,可以不劃分Swap分區(qū)。
VM由RM+Swap兩部分組成,因此tmpfs最大的存儲空間可達(dá)(The size of RM + The size of Swap)。 但是對于tmpfs本身而言,它并不知道自己使用的空間是RM還是Swap,這一切都是由內(nèi)核的vm子系統(tǒng)管理的。
tmpfs默認(rèn)的大小是RM的一半,假如你的物理內(nèi)存是1024M,那么tmpfs默認(rèn)的大小就是512M,一般情況下,是配置的小于物理內(nèi)存大小的。tmpfs配置的大小并不會真正的占用這塊內(nèi)存,如果/dev/shm/下沒有任何文件,它占用的內(nèi)存實際上就是0字節(jié);如果它最大為1G,里頭放有100M文件,那剩余的900M仍然可為其它應(yīng)用程序所使用,但它所占用的100M內(nèi)存,是不會被系統(tǒng)回收重新劃分的。當(dāng)刪除tmpfs中文件,tmpfs 文件系統(tǒng)驅(qū)動程序會動態(tài)地減小文件系統(tǒng)并釋放 VM 資源。
LINUX中可以把一些程序的臨時文件放置在tmpfs中,利用tmpfs比硬盤速度快的特點提升系統(tǒng)性能。