author:skate
time:2011/08/22
提升磁碟效能瓶頸
linux的記憶體檔案系統:ramdisk,ramfs,tmpfs
ramdisk:
是塊裝置,在使用它們之前必須用選擇檔案系統將其格式化。並且調整檔案系統大小比較麻煩,
需要修改核心引導參數並重新啟動作業系統,在我們的應用中,需要 7X24不間斷啟動並執行系統
來說,並不是一個可以接受的選擇
ramfs:
Ramfs是記憶體檔案系統,他工作於虛擬文檔系統(VFS)層。不用格式化,直接mount使用,能夠建立多個,
在建立時能夠指定其最大能使用的實體記憶體大小。
[root@localhost current]# df -haT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
ext3 7.7G 6.6G 724M 91% /
proc proc 0 0 0 - /proc
sysfs sysfs 0 0 0 - /sys
devpts devpts 0 0 0 - /dev/pts
/dev/sda1 ext3 99M 13M 82M 14% /boot
/tmpfs tmpfs 502M 0 502M 0% /dev/shm
none binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc
sunrpc rpc_pipefs 0 0 0 - /var/lib/nfs/rpc_pipefs
my_tmpfs tmpfs 1.2G 1.2G 11M 100% /tmpfs
my_tmpfs tmpfs 1.2G 1.2G 11M 100% /tmpfs
ram_tmpfs tmpfs 1.2G 0 1.2G 0% /ram1
[root@localhost current]# mount -t ramfs my_ramfs /ramfs -o maxsize=100m
[root@localhost current]# df -haT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
ext3 7.7G 6.6G 724M 91% /
proc proc 0 0 0 - /proc
sysfs sysfs 0 0 0 - /sys
devpts devpts 0 0 0 - /dev/pts
/dev/sda1 ext3 99M 13M 82M 14% /boot
/tmpfs tmpfs 502M 0 502M 0% /dev/shm
none binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc
sunrpc rpc_pipefs 0 0 0 - /var/lib/nfs/rpc_pipefs
my_tmpfs tmpfs 1.2G 1.2G 11M 100% /tmpfs
my_tmpfs tmpfs 1.2G 1.2G 11M 100% /tmpfs
ram_tmpfs tmpfs 1.2G 0 1.2G 0% /ram1
my_ramfs ramfs 0 0 0 - /ramfs
[root@localhost current]#
tmpfs:
Tmpfs是個虛擬記憶體文檔系統,他不同於傳統的用塊裝置形式來實現的ramdisk,也不同於針對實體記憶體的Ramfs。
Tmpfs能夠使用實體記憶體,也能夠使用交換分區。在Linux核心中,虛擬記憶體資源由實體記憶體(RAM)和交換分區組成,
這些資源是由核心中的虛擬記憶體子系統來(VM)負責分配和管理。Tmpfs就是和虛擬記憶體子系統來"打交道"的,他向
虛擬記憶體子系統請求頁來儲存文檔,他同Linux的其他請求頁的部分相同,不知道分配給自己的頁是在記憶體中還是
在交換分區中。Tmpfs同Ramfs相同,其大小也不是固定的,而是隨著所需要的空間而動態增減。
tmpfs和ramfs不同
1.ramfs是記憶體檔案系統,只使用實體記憶體;tmpfs是虛擬記憶體檔案系統,使用實體記憶體和交換分區
2.在進程佔用記憶體較多,因為tmpfs根據vm的調度策略會使用交換分區,所以tmpfs的效能可能會低於ramfs,但tmpfs也為其他程式節省了實體記憶體
經過以上的測試發現,在我們實際應用情境中,我們只能用tmpfs和ramfs,而為了充分利用寶貴的記憶體資源,增大記憶體檔案系統,建議使用tmpfs
建立測試:
[root@localhost current]# df -hTa
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
ext3 7.7G 6.6G 724M 91% /
proc proc 0 0 0 - /proc
sysfs sysfs 0 0 0 - /sys
devpts devpts 0 0 0 - /dev/pts
/dev/sda1 ext3 99M 13M 82M 14% /boot
/tmpfs tmpfs 502M 0 502M 0% /dev/shm
none binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc
sunrpc rpc_pipefs 0 0 0 - /var/lib/nfs/rpc_pipefs
my_ramfs ramfs 0 0 0 - /ramfs
/tmpfs tmpfs 502M 0 502M 0% /dev/shm
my_ramfs ramfs 0 0 0 - /ramfs
[root@localhost current]# mount -t tmpfs my_tmpfs /tmpfs -o size=100m
[root@localhost current]# df -hTa
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
ext3 7.7G 6.6G 724M 91% /
proc proc 0 0 0 - /proc
sysfs sysfs 0 0 0 - /sys
devpts devpts 0 0 0 - /dev/pts
/dev/sda1 ext3 99M 13M 82M 14% /boot
/tmpfs tmpfs 502M 0 502M 0% /dev/shm
none binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc
sunrpc rpc_pipefs 0 0 0 - /var/lib/nfs/rpc_pipefs
my_ramfs ramfs 0 0 0 - /ramfs
/tmpfs tmpfs 502M 0 502M 0% /dev/shm
my_ramfs ramfs 0 0 0 - /ramfs
my_tmpfs tmpfs 100M 0 100M 0% /tmpfs
[root@localhost current]#
記憶體檔案系統使用情境:
tmpfs和ramfs記憶體檔案系統的特點是速度快,重啟資料丟失等特點,所以其中常用儲存非重要,中間計算,較少對磁碟的直接存取;
記憶體檔案系統不要設定過大,避免佔用記憶體太多,使系統整體系統下降或宕機。
-----------------end---------------