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。博客
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,是相似zram的技術。關於三者的比較能夠看lwn.net的文章
簡單來講,zcache 好像後來移出 kernel 的 staging 了。zswap 最大壓縮率只能到 50 % 而 zram 比 zswap 壓縮率更高,代價是 page reclaim 更困難。