Linux下使用zram(壓縮內存)

Compressed memory

Mac OS X Mavericks增長了一個新特性——壓縮內存。WWDC 2013上特別介紹了這個特性。html

懶得寫壓縮內存的說明,抄一段TualatriX的博客吧:.net

我先來簡單介紹下什麼是「Compressed Memory」。code

Active memory:活躍的內存,比方能夠說是開個5個App,每一個佔用了100M,那麼就有500M活躍內存;htm

Inactive memory:非活躍的內存,好比關掉了三個App,那麼這三個App佔用的共300M內存就再也不是活躍了,可是內核還會保留它。若是這時立馬再啓動這三個App,就會以很是快的速度打開了,由於尚未被其餘App佔用的Inactive memory這時又被激活了。若是很長一段時間內這些非活躍內存都沒有再用的話,隨着系統內存佔用增長,這些非活躍內存也會被清空而用作新的用途。內存

那麼Compressed Memory在其中扮演什麼角色呢?很簡單,它儘量久的保留那些會用到的非活躍內存,以使系統更快的響應潛在的第二次響應。可是爲了照顧新的內存需求,內核會壓縮這些非活躍內存以騰出空間,以供新的App使用。ci

大概就是這麼個過程,通常咱們會以爲「壓縮」而聯想到這項技術省了內存,實際上Compressed Memory的核心價值在因而它加快了整個系統的響應速度。get

固然,壓縮和解壓縮須要消耗一點CPU,可是如今的電腦,大多數狀況下,瓶頸在內存而不是CPU。博客

zram

WWDC不會告訴你的是,類似的特性Linux下早有了,叫zram,2009年的時候就進了kernel的staging。如今大部分發行版應該都支持了。Google的Chrome OS默認開啓。it

啓用很簡單,Ubuntu(Precise以上版本),直接sudo apt-get install zram-config就行。zram-config會自動搞定一切。原理

其餘系統的話,在/etc/rc.local里加入:

sh# 加載zram模塊
modprobe zram &&
# 分配部份內存做zram,大小建議爲總內存的10%-25%,這裏分配了512M.
echo $((512*1024*1024)) > /sys/block/zram0/disksize &&
# 啓用zram設備爲swap。zram的原理就是分出一塊內存當swap分區用,其中的數據是壓縮的,這樣速度快,並且佔用空間小。
mkswap /dev/zram0 &&
# 給zram設備分配一個高優先級,不然要是放着zram不用,去用硬盤上的swap分區就欲哭無淚了
swapon -p 10 /dev/zram0 &&
# rc.local要求最後返回0
exit 0

這樣就能夠了。

Debian 能夠手動加啓動文件

zswap & zcache

內核比較新的童鞋還能夠嘗試下zswap和zcache,是相似zram的技術。關於三者的比較能夠看lwn.net的文章

簡單來講,zcache 好像後來移出 kernel 的 staging 了。zswap 最大壓縮率只能到 50 % 而 zram 比 zswap 壓縮率更高,代價是 page reclaim 更困難。

相關文章
相關標籤/搜索