色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

zRAM內存壓縮機制詳解

Linux愛好者 ? 來源:Linux內核那些事 ? 2023-11-13 14:59 ? 次閱讀

內存是計算機系統(tǒng)最重要的資源之一,當操作系統(tǒng)內存不足時,進程申請內存將會失敗,從而導致其運行異常或者崩潰。

Linux 內核提供swap機制來解決內存不足的情況,其原理是:

當系統(tǒng)內存不足時,內核會將進程不常用的內存交換(寫入)到磁盤中,然后將這些內存歸還給系統(tǒng),系統(tǒng)可以將這些內存繼續(xù)分配給其他需要使用內存的進程。

通過 swap 機制,系統(tǒng)可以將內存分配給需求更迫切的進程。但由于 swap 機制需要進行 I/O 操作,所以一定程度上會影響系統(tǒng)性能。那么是否存在一種能夠節(jié)省內存,而且對性能影響較少的機制呢?

在 Linux-3.14 引入了一種名為zRAM的技術,zRAM 的原理是:將進程不常用的內存壓縮存儲,從而達到節(jié)省內存的使用。如下圖所示:

16aca5c2-81ef-11ee-939d-92fbcf53809c.png

zRAM 機制建立在 swap 機制之上,swap 機制是將進程不常用的內存交換到磁盤中,而 zRAM 機制是將進程不常用的內存壓縮存儲在內存某個區(qū)域。所以 zRAM 機制并不會發(fā)生 I/O 操作,從而避免因 I/O 操作導致的性能下降。

zRAM原理

由于 zRAM 機制是建立在 swap 機制之上,而 swap 機制需要配置文件系統(tǒng)或塊設備來完成的。所以 zRAM 虛擬一個塊設備,當系統(tǒng)內存不足時,swap 機制將內存寫入到這個虛擬的塊設備中。也就是說,zRAM 機制本質上只是一個虛擬塊設備。

zRAM 的原理如下圖所示:

16cd491c-81ef-11ee-939d-92fbcf53809c.png

從上圖可以看出,在開啟了 zRAM 機制的情況下,當系統(tǒng)內存不足時,內核會進行如下操作:

通過 swap 機制從系統(tǒng)中查找一些進程不常用的內存。

將這些不常用的內存交換到 zRAM 塊設備中,而 zRAM 塊設備首先會對這些不常用的內存進行壓縮,然后存儲起來。

把不常用的內存壓縮存儲到 zRAM 塊設備后,swap 機制會把這些不常用的內存歸還給內核。

當進程訪問到這些被交換到 zRAM 塊設備的內存時,swap 機制將會通過 zRAM 塊設備解壓這些內存,并且重新建立與進程的地址映射關系。

啟用zRAM

1. 創(chuàng)建 zRAM 塊設備

要啟用 zRAM,首先需要創(chuàng)建 zRAM 塊設備。要創(chuàng)建 zRAM 塊設備,可以使用以下命令:

modprobezramnum_devices=1

num_devices參數(shù)可以指定創(chuàng)建 zRAM 塊設備的個數(shù),上面命令創(chuàng)建了一個 zRAM 塊設備,可以通過路徑/dev/zram0來訪問這個塊設備。

2. 設置 zRAM 塊設備的大小

創(chuàng)建完 zRAM 塊設備后,可以通過以下命令來設置其空間大小:

echo512M>/sys/block/zram0/disksize

上面命令設置了zram0的大小為 512MB,也就是說,zram0能夠存儲 512MB 壓縮后的數(shù)據(jù)。

3. 壓縮算法選擇

zRAM 機制支持多種壓縮算法,不同的壓縮算法有不同的壓縮比率和壓縮速度,用戶可以按照自身的需求來選擇不同的壓縮算法。

要更改 zRAM 的壓縮算法,可以使用下面命令:

echolzo>/sys/block/zram0/comp_algorithm

上面命令將 zRAM 的壓縮算法更改為lzo,我們也可以通過下面命令來查看內核支持哪些壓縮算法:

cat/sys/block/zram0/comp_algorithm
lzo[lz4]

從上面命令的輸出可知,內核支持lzo和lz4兩種壓縮算法。

4. 將 swap 交換設備設置為 zRAM

要將 swap 的交換設備設置為 zRAM 塊設備,可以使用以下命令:

mkswap/dev/zram0

當執(zhí)行完上面這條命令后,內核將會使用zram0作為 swap 的交換設備。

zRAM實現(xiàn)

zRAM 塊設備驅動的實現(xiàn)代碼主要在drivers/block/zram/zram_drv.c文件中,下面我們主要圍繞此文件進行分析。

本文并不會介紹塊設備驅動的編寫流程,只會分析 swap 機制在進行內存交換時,與 zRAM 塊設備驅動的交互。

壓縮內存

當系統(tǒng)內存不足時,內核將會觸發(fā)swap機制。swap 機制首先會從系統(tǒng)中選擇一些進程不常用內存,然后將這些不常用的內存交換到zRAM塊設備中(使用 zRAM 塊設備作為交換設備的情況下)。

當 swap 機制將不常用的內存交換到 zRAM 塊設備時,會調用zram_make_request()函數(shù)處理請求。而zram_make_request()最終會通過調用zram_bvec_write()函數(shù)來壓縮內存,調用鏈如下:

zram_make_request()
->__zram_make_request()
->zram_bvec_rw()
->zram_bvec_write()

我們來分析一下zram_bvec_write()函數(shù)的實現(xiàn),其代碼如下:

staticint
zram_bvec_write(structzram*zram,structbio_vec*bvec,u32index,intoffset)
{
...
//1.獲取需要進行壓縮的內存
page=bvec->bv_page;
...
user_mem=kmap_atomic(page);
uncmem=user_mem;

...
//2.對內存進行壓縮
ret=zcomp_compress(zram->comp,zstrm,uncmem,&clen);
...

//3.獲取壓縮后的數(shù)據(jù)
src=zstrm->buffer;
...

//4.申請一個內存塊保存壓縮后的數(shù)據(jù)
handle=zs_malloc(meta->mem_pool,clen);
...
cmem=zs_map_object(meta->mem_pool,handle,ZS_MM_WO);

//5.將壓縮后的數(shù)據(jù)保存到新申請的內存塊中
memcpy(cmem,src,clen);
...

//6.將壓縮后的數(shù)據(jù)登記到zRAM塊設備的表格中
meta->table[index].handle=handle;
...
returnret;
}

為了簡化分析過程,我們對代碼進行精簡。從上面的代碼可以看出,zRAM 機制對內存進行壓縮的步驟如下:

獲取需要進行壓縮的內存,需要進行壓縮的內存由 swap 機制提供。

通過zcomp_compress()函數(shù)對內存進行壓縮,src指針指向壓縮后的內存地址。

通過zs_malloc()和zs_map_object()函數(shù)申請一塊新的內存塊,大小為壓縮后數(shù)據(jù)的大小。

將壓縮后的數(shù)據(jù)復制到新申請的內存塊中。

將壓縮后的數(shù)據(jù)記錄到zRAM塊設備的表格中。

由于 zRAM 塊設備是建立在內存中的虛擬塊設備,所以其并沒有真實塊設備的特性。真實塊設備會將存儲空間劃分成一個個塊,而zram_bvec_write()函數(shù)的index參數(shù)就是數(shù)據(jù)塊的編號。此參數(shù)有 swap 機制提供,所以 zRAM 塊設備驅動通過 index 參數(shù)作為原始內存數(shù)據(jù)的編號。

一圖勝千言:

16ebdbfc-81ef-11ee-939d-92fbcf53809c.png

zRAM驅動有個數(shù)據(jù)塊表,用來記錄原始內存數(shù)據(jù)對應的壓縮數(shù)據(jù),此表的索引就是數(shù)據(jù)塊的編號。swap 機制會維護此表格的使用情況,如哪個塊是空閑的,哪個塊被占用等。

當內存頁被壓縮后,swap 機制將會把原來的內存頁釋放掉,并且把所有映射到此內存頁的進程解除映射,細節(jié)可以參考 swap 機制相關的資料







審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux系統(tǒng)

    關注

    4

    文章

    593

    瀏覽量

    27392
  • SWAP
    +關注

    關注

    0

    文章

    51

    瀏覽量

    12820
  • zram
    +關注

    關注

    0

    文章

    3

    瀏覽量

    75

原文標題:一文讀懂|zRAM 內存壓縮機制

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    OpenHarmony3.1 Release關鍵特性解析——Enhanced SWAP內存管理

    關鍵技術就介紹完了,我們來總結一下:● 定制的 ZRAM 和交換分區(qū):將數(shù)據(jù)通過關聯(lián)性、冷熱順序進行存放,保證了數(shù)據(jù)的存取速度,提升了 IO 性能。● 動態(tài)的內存回收機制:從回收優(yōu)先級、可用
    發(fā)表于 05-17 17:24

    壓縮機油的特征及應用

    壓縮機油主要用于潤滑壓縮機的汽缸、活塞環(huán)、軸承、增速齒輪、曲柄連桿及曲軸箱潤滑系統(tǒng)。
    發(fā)表于 12-11 14:04 ?9次下載

    嵌入式系統(tǒng)中的內存壓縮技術

    摘要:介紹內存壓縮技術和一個基于硬件的內存壓縮系統(tǒng)模型,探討內存壓縮技術在嵌入式系統(tǒng)中的應用
    發(fā)表于 03-11 12:43 ?1140次閱讀
    嵌入式系統(tǒng)中的<b class='flag-5'>內存</b><b class='flag-5'>壓縮</b>技術

    什么是制冷壓縮機,制冷壓縮機的工作原理

    什么是制冷壓縮機,制冷壓縮機的工作原理 制冷壓縮機是制冷裝置中最主要的設備,通常稱為制冷裝置中的主機。制冷劑蒸氣從低壓提高
    發(fā)表于 04-08 17:09 ?1.7w次閱讀

    肖特推出了電動壓縮機標準的壓縮機端子系列產品

    在電動汽車、混合動力汽車和燃料電池汽車中,電動空調壓縮機的性能和可靠性很大程度上取決于一個部件——壓縮機端子。壓縮機端子必須保持密封,以防止制冷劑泄漏,同時支持大量電能從電池轉移到壓縮機
    的頭像 發(fā)表于 11-12 08:51 ?3321次閱讀

    半導體制冷和壓縮機制冷哪個好

    電子半導體制冷電路簡單,整體結構體積小,制冷效率高,速度快,無噪音,無污染,壽命長,但成本高。壓縮機制冷與其相反。 半導體制冷可以做到茶杯里,但壓縮機制冷做不到。壓縮機制冷可以大到冷庫、中央空調
    的頭像 發(fā)表于 11-13 11:05 ?6.9w次閱讀

    離心壓縮機和往復壓縮機的區(qū)別

    本文主要闡述了離心壓縮機和往復壓縮機的區(qū)別。
    發(fā)表于 12-04 10:53 ?9161次閱讀

    滾動轉子式壓縮機優(yōu)點_滾動轉子式壓縮機的缺點

    滾動轉子式壓縮機又稱滾動活塞壓縮機或固定滑片壓縮機,是回轉式壓縮機的一種。
    的頭像 發(fā)表于 12-06 09:37 ?1.3w次閱讀
    滾動轉子式<b class='flag-5'>壓縮機</b>優(yōu)點_滾動轉子式<b class='flag-5'>壓縮機</b>的缺點

    多滑片式壓縮機結構圖_多滑片式壓縮機的特點

    滑片式制冷壓縮機是一種容積型回轉式壓縮機。它可分為單滑片式與多滑片式兩種。多滑片式壓縮機目前主要用作配組雙級壓縮機的低壓級壓縮機
    的頭像 發(fā)表于 12-06 09:54 ?6454次閱讀

    容積型壓縮機分類_容積型壓縮機的特點

    容積式壓縮機主要分為下面四種:螺桿式壓縮機、活塞式壓縮機、滾動轉子式壓縮機、渦旋式壓縮機
    的頭像 發(fā)表于 12-06 10:58 ?1.6w次閱讀

    冰箱壓縮機的作用_冰箱壓縮機修理價格是多少

    本文首先闡述了冰箱壓縮機的作用,其次介紹了冰箱壓縮機的種類,最后介紹了冰箱壓縮機修理價格。
    發(fā)表于 04-01 10:30 ?3766次閱讀

    虛擬機:linux Kernel 添加 ZRAM 支持

    ZRAM, 簡單的說,就是拿一部分內存當做交換分區(qū)使用,暫時不用的內存頁面壓縮后保存在 zram交換分區(qū)面。因為是
    的頭像 發(fā)表于 06-22 17:09 ?2681次閱讀
    虛擬機:linux Kernel 添加 <b class='flag-5'>ZRAM</b> 支持

    制冷壓縮機的種類_制冷壓縮機的結構

    制冷壓縮機是制冷系統(tǒng)的核心和心臟。壓縮機引的能力和特征決定了制冷系統(tǒng)的能力和特征。某種意義上,制冷系統(tǒng)的設計與匹配就是將壓縮機的能力體現(xiàn)出來。因此,世界各國制冷行業(yè)無不在制冷壓縮機的研
    的頭像 發(fā)表于 08-24 10:52 ?8637次閱讀
    制冷<b class='flag-5'>壓縮機</b>的種類_制冷<b class='flag-5'>壓縮機</b>的結構

    如何選擇壓縮機

    如何選擇壓縮機? 選擇壓縮機是一個相當復雜的過程,需要綜合考慮多個因素。本文將詳細介紹如何選擇壓縮機,包括了所需的基本知識、市場上常見的壓縮機類型、關鍵的選擇因素和技術參數(shù)等。 一、基
    的頭像 發(fā)表于 12-11 11:26 ?1170次閱讀

    壓縮機的類型和區(qū)別

    壓縮機的類型和區(qū)別? 壓縮機是一種用于提高氣體壓縮和輸送能力的機械設備。根據(jù)不同的工作原理和應用需求,壓縮機可分為多種類型,包括離心壓縮機
    的頭像 發(fā)表于 02-01 14:36 ?3245次閱讀
    主站蜘蛛池模板: 久久亚洲精品无码A片大香大香| 免费看毛片网| 欧美激情视频二区| 我的好妈妈8高清在线观看WWW| 亚洲精品第五页中文字幕| 4399日本电影完整版在线观看免费 | 久久这里只有精品国产99| 区久久AAA片69亚洲| 亚洲日韩有码无线免费| G国产精品无马| 精品国产高清自在线看| 日本高清免费在线观看| 亚洲男女羞羞无遮挡久久丫| 9久高清在线不卡免费无吗视频| 国产午夜精AV在线麻豆| 女仆翻身大作战| 亚洲天堂一区二区三区| 成人国产三级在线播放| 久久午夜一区二区| 午夜免费福利小电影| 999久久狠狠免费精品| 国色天香社区视频免费高清3| 日本精品久久久久中文字幕| 永久午夜福利视频一区在线观看| 国产成人免费片在线观看| 欧美freesex黑人又粗又| 亚洲无线观看国产| 国产精品v片在线观看不卡| 嫩B人妻精品一区二区三区| 国产精品一区二区AV白丝在线| 欧美精品色视频| 伊人yinren6综合网色狠狠| 国产精品久久久久久熟妇吹潮软件 | 一边喂奶一边做边爱| 福利视频久久| 女人高潮久久久叫人喷水| 亚洲字幕在线观看| 国产精品视频免费观看| 日本不卡不码高清免费| 70岁妇女牲交色牲片| 久久精品视频免费|