壓縮可以降低占用空間,顧名思義,內存壓縮就是壓縮內存,節省內存空間。就目前的技術而言,I/O的速度遠遠慢于這RAM操作速度。因此,如果頻繁地做I/O操作,不僅影響flash使用壽命,還嚴重影響系統性能。內存壓縮是一種讓I/O過程平滑過渡的做法, 即盡量減少由于內存緊張導致的I/O,提升性能。
介紹 zSwap 技術
zSwap是Linux內核的一個功能,它為交換頁提供了一個壓縮的回寫緩存,作為一種虛擬內存壓縮形式。當內存頁要被換出時,zSwap不會把它們移到交換設備上,而是對它們進行壓縮,然后把它們存儲到系統RAM中動態分配的內存池中。后來,向實際的交換設備的回寫被推遲了,甚至完全避免了,從而大大減少了需要交換的Linux系統的I/O,其代價是需要額外的CPU周期來執行壓縮。
zSwap允許Linux更有效地利用RAM,因為它實際上增加了內存容量,而不是在壓縮/解壓縮交換頁時稍微增加CPU的使用。zSwap存在于內核中,但默認并沒有開啟,要使用它必須通過修改配置文件開啟。
主流內存壓縮技術
zSwap
zSwap是在memory與flash之間的一層緩存,當內存需要swap出去磁盤的時候,先通過壓縮放到zSwap中去,zSwap空間按需增長。達到一定程度后則會按照LRU的順序(前提是使用的內存分配方法需要支持LRU)將就最舊的page解壓寫入磁盤swap device,之后將當前的page壓縮寫入zSwap。
zSwap本身存在一些缺陷或問題:如果開啟當zSwap滿交換出backing store的功能, 由于需要將zSwap里的內存按LRU順序解壓再swap out,這就要求內存分配器支持LRU功能;如果不開啟當zSwap滿交換出backing store的功能, 和zRam是類似的。
zRAM
zRram即壓縮的內存,使用內存模擬block device的做法。實際不會寫到塊設備中去,只會壓縮后寫到模擬的塊設備中,其實也就是還是在RAM中,只是通過壓縮了。由于壓縮和解壓縮的速度遠比讀寫I/O好,因此在移動終端設備廣泛被應用。
zRram本身存在一些缺陷或問題:zRam大小是可靈活配置的,配置多少成為了一個問題;使用zRam可能會在低內存場景由于頻繁的內存壓縮導致kswapd進程占CPU高;增大了zRam配置,對系統內存碎片是否有影響
zCache
zCache是oracle提出的一種實現文件頁壓縮技術,也是memory與block dev之間的一層存儲,與zSwap比較接近,但zCache目前壓縮的是文件頁,而zSwap和zRAM壓縮是匿名頁。
介紹 zstd 壓縮算法
Zstandard是一種實時壓縮算法,提供高壓縮率。它提供了非常廣泛的壓縮/速度權衡,同時有一個非??斓慕獯a器支持。它還為小數據提供了一種特殊的模式,稱為字典壓縮,并可以從任何樣本集中創建字典。Zstandard庫是作為使用BSD許可證的開源軟件提供的。
開啟 zSwap 的方法
#editgrubasroot $sudovim/etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT="quietsplashzswap.enabled=1zswap.compressor=zstdzswap.zpool=z3fold" #updategrub $sudoupdate-grub
#installzstdandZ3fold $sudoaptinstallcheckinstallbuild-essential $sudoaptinstallzstd#notthelatestversion #editthemodulesfile $sudovim/etc/initramfs-tools/modules ... zstd zstd_compress z3fold #updateinitramfs $sudoupdate-initramfs-u-kall #restartPCandverifyZSWAPifenabled $cat/sys/module/zswap/parameters/enabled Y #verifyZSWAPifitsusingzstdandz3fold $sudodmesg|grep-izswap: [1.059997]zswap:loadedusingpoolzstd/z3fold
-
cpu
+關注
關注
68文章
10829瀏覽量
211194 -
內存
+關注
關注
8文章
3004瀏覽量
73900 -
移動終端
+關注
關注
1文章
207瀏覽量
24813
原文標題:如何使用 zSwap 提高系統性能
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論