chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

騰訊云虛擬化開源團(tuán)隊(duì)為內(nèi)核引入全新虛擬文件系統(tǒng)

Linux閱碼場(chǎng) ? 來源:騰訊云 ? 作者:譽(yù)磊 ? 2021-02-20 17:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Linux內(nèi)存管理概述

我們知道linux系統(tǒng)內(nèi)核的主要工作之一是管理系統(tǒng)中安裝的物理內(nèi)存,系統(tǒng)中內(nèi)存是以page頁為單位進(jìn)行分配,每個(gè)page頁的大小是4K,如果我們需要申請(qǐng)使用內(nèi)存則內(nèi)核的分配流程是這樣的,首先內(nèi)核會(huì)為元數(shù)據(jù)分配內(nèi)存存儲(chǔ)空間,然后才分配實(shí)際的物理內(nèi)存頁,再分配對(duì)應(yīng)的虛擬地址空間和更新頁表。

好奇的同學(xué)肯定想問,元數(shù)據(jù)是什么,為什么我申請(qǐng)內(nèi)存還要分配元數(shù)據(jù),元數(shù)據(jù)有什么用呢?

其實(shí)為了管理內(nèi)存頁的使用情況,內(nèi)核設(shè)計(jì)者采用了page structure(頁面結(jié)構(gòu))的數(shù)據(jù)結(jié)構(gòu),也就是我們所說的元數(shù)據(jù)來跟蹤內(nèi)存,該數(shù)據(jù)結(jié)構(gòu)以數(shù)組的形式保存在內(nèi)存中,并且以physical frame number(物理頁框號(hào))為索引來做快速訪問 (見圖1) 。

27ec6f16-71ad-11eb-8b86-12bb97331649.png

(圖1)

元數(shù)據(jù)存儲(chǔ)著各種內(nèi)存信息,比如使用大頁復(fù)合頁的信息,slub分配器的信息等等,以便告訴內(nèi)核該如何使用每個(gè)頁面,以及跟蹤頁面在各個(gè)映射列表上的位置,或?qū)⑵溥B接到后端的存儲(chǔ)等等。所以在內(nèi)核的內(nèi)存管理中頁面元數(shù)據(jù)的重要性不言而喻,目前在64位系統(tǒng)上這個(gè)數(shù)據(jù)結(jié)構(gòu)占用64個(gè)字節(jié),而由于通常的頁面大小為4KB,比如一臺(tái)安裝了4GB內(nèi)存的普通電腦上就有1048576個(gè)普通頁,這意味著差不多需要64MB大小的內(nèi)存來存儲(chǔ)內(nèi)存元數(shù)據(jù)來用于管理內(nèi)存普通頁。

似乎看起來并沒有占用很多內(nèi)存,但是在某些應(yīng)用場(chǎng)景下面可就不同了哦,現(xiàn)今的云服務(wù)中普遍安裝了海量?jī)?nèi)存來支持各種業(yè)務(wù)的運(yùn)行,尤其是AI機(jī)器學(xué)習(xí)等場(chǎng)景下面,比如圖2中,如果服務(wù)器主機(jī)有768g的內(nèi)存,則其中能真正被業(yè)務(wù)使用的只有753g,有大約10多個(gè)g的物理內(nèi)存就被內(nèi)存元數(shù)據(jù)所占用了,假如我們可以精簡(jiǎn)這部分內(nèi)存,再將其回收利用起來,則云服務(wù)提供商就可以提供更多的云主機(jī)給自己的客戶,從而增加每臺(tái)服務(wù)器能帶來的收入,降低了總體擁有成本,也就是我們常說的TCO,有那么多好處肯定是要付諸實(shí)施咯,但是我們要如何正確并且巧妙地處理這個(gè)問題而不影響系統(tǒng)的穩(wěn)定性呢?

28245b24-71ad-11eb-8b86-12bb97331649.png

(圖2)

Direct Memory Management File System(直接內(nèi)存管理文件系統(tǒng))

有的小伙伴會(huì)說好像現(xiàn)有的內(nèi)核接口就可以解決類似問題呀,比如我可以mmap系統(tǒng)中的/dev/mem,將線性地址描述的物理內(nèi)存直接映射到進(jìn)程的地址空間內(nèi),不但可以直接訪問這部分內(nèi)存也繞過了內(nèi)核繁復(fù)的內(nèi)存管理機(jī)制,豈不是很方便。但其實(shí)這里有很大的局限性,首先對(duì)于/dev/mem的訪問需要root權(quán)限的加持,這就增加了內(nèi)核被攻擊的風(fēng)險(xiǎn),其次mmap映射出來的是一整塊連續(xù)的內(nèi)存,在使用的過程中如何進(jìn)行碎片化的管理和回收,都會(huì)相應(yīng)需要用戶態(tài)程序增加大量的代碼復(fù)雜度和額外的開銷。 為了既能更好地提高內(nèi)存利用率,又不影響已有的用戶態(tài)業(yè)務(wù)代碼邏輯,騰訊云虛擬化開源團(tuán)隊(duì)獨(dú)辟蹊徑,為內(nèi)核引入了全新的虛擬文件系統(tǒng) - Direct Memory Management File System(直接內(nèi)存管理文件系統(tǒng))(見圖3),該文件系統(tǒng)可以支持頁面離散化映射用來避免內(nèi)存碎片,同時(shí)全新設(shè)計(jì)了高效的remap (重映射)機(jī)制用來處理內(nèi)存硬件故障(MCE)的情況,并且對(duì)KVM、VFIO和內(nèi)存子系統(tǒng)交互所用到的接口都進(jìn)行了優(yōu)化,用來加速虛擬機(jī)機(jī)EPT頁表和IOMMU頁表的建立,在避免了內(nèi)存元數(shù)據(jù)的額外開銷的情況下還增加了虛擬機(jī)的性能提升的空間。

2878d6ae-71ad-11eb-8b86-12bb97331649.png

(圖3)

從內(nèi)存管理上來看,dmemfs在服務(wù)器系統(tǒng)啟動(dòng)引導(dǎo)的時(shí)候就將指定數(shù)量的內(nèi)存預(yù)先保留在系統(tǒng)中的各個(gè)NUMA節(jié)點(diǎn)上,這部分內(nèi)存沒有被系統(tǒng)內(nèi)存管理機(jī)制接管,也就不需要消耗額外的內(nèi)存來存儲(chǔ)元數(shù)據(jù)。 我們知道內(nèi)核的內(nèi)存信息全部來自e820表, 這部分e820信息只提供了內(nèi)存的區(qū)間描述和類型,無法提供NUMA節(jié)點(diǎn)信息, 所以必須在memblock初始化之后, 內(nèi)核buddy伙伴系統(tǒng)初始化之前做好內(nèi)存預(yù)留 (見圖4), 而這時(shí)memblock可能已經(jīng)有分配出去的空間, 以及BIOS會(huì)預(yù)留等等原因, 導(dǎo)致同一個(gè)節(jié)點(diǎn)存在不連續(xù)的內(nèi)存塊,因此dmemfs引入了全新的kernel parameter “dmem=”,并將其指定為early param。 內(nèi)核在解析完參數(shù)之后會(huì)將得到的信息全部存放在全局結(jié)構(gòu)體dmem_param,其中包含著我們需要預(yù)留的memory的大小和起始地址等,隨后在內(nèi)核初始化到在ACPI處理和paging_ini()之間,我們插入dmem的預(yù)留處理函數(shù)memblock_reserve(),將dmem內(nèi)存從memblock中扣除,形成dmem內(nèi)存池。而存留在memblock中的系統(tǒng)內(nèi)存則會(huì)被paging_init()構(gòu)建對(duì)應(yīng)的內(nèi)存元數(shù)據(jù)并納入buddy子系統(tǒng)。(見圖4)

28a10142-71ad-11eb-8b86-12bb97331649.png

(圖4)

預(yù)留下來的內(nèi)存由稱為dmem_pool的內(nèi)存池結(jié)構(gòu)體來管理,第一層拓?fù)錇閐mem numa node,用來描述dmem在各個(gè)numa 節(jié)點(diǎn)上的分布情況以實(shí)現(xiàn)了numa親和性,第二層拓?fù)涫窃赿mem numa node的基礎(chǔ)上再實(shí)現(xiàn)一個(gè)dmem region鏈表,以描述當(dāng)前節(jié)點(diǎn)下每段連續(xù)的dmem內(nèi)存區(qū)間(見圖5)。每個(gè)region中以page作為分配的最小顆粒度,都關(guān)聯(lián)到一個(gè)local bitmap來維護(hù)和管理每個(gè)dmem 頁面的狀態(tài),在掛載dmemfs文件系統(tǒng)時(shí)為每個(gè) region申請(qǐng)并關(guān)聯(lián) bitmap, 并且指定頁面大小的粒度, 比如4K, 2M或1G,從而方便在服務(wù)器集群中部署使用

28c237cc-71ad-11eb-8b86-12bb97331649.png

(圖5)

簡(jiǎn)單的來說在掛載了dmemfs文件系統(tǒng)之后,就可以使用如下的qemu參數(shù)將dmemfs所管理的物理內(nèi)存?zhèn)鬟f給虛擬機(jī)直接使用。

而在虛擬機(jī)啟動(dòng)之后,對(duì)內(nèi)存的讀寫會(huì)發(fā)生缺頁異常,而內(nèi)核的缺頁處理機(jī)制會(huì)將請(qǐng)求發(fā)送給dmemfs,dmemfs就會(huì)將預(yù)留內(nèi)存按照所需頁面的大小補(bǔ)充到EPT表中從而幫助虛擬機(jī)建立好GVA->HPA的映射關(guān)系。 為了滿足實(shí)際生產(chǎn)環(huán)境,dmemfs還必須支持對(duì)MCE的處理。MCE, 即Machine Check ERROR, 是一種用來報(bào)告系統(tǒng)錯(cuò)誤的硬件方式。當(dāng)觸發(fā)了MCE時(shí), 在Linux內(nèi)核流程中會(huì)檢查這個(gè)物理頁面是否屬于dmem管理, 我們?cè)诨诿總€(gè)連續(xù)內(nèi)存塊的dmem region內(nèi)引入了一個(gè)error_bitmap, 這是以物理頁面為單位的, 來記錄當(dāng)前系統(tǒng)中發(fā)生過mce的頁。同時(shí)通過多個(gè)手段, 保證分配內(nèi)存使用的bitmap和這個(gè)mce error_bitmap保持同步, 從而后續(xù)的分配請(qǐng)求會(huì)跳過這些錯(cuò)誤頁面(見圖6)。 然后在內(nèi)存管理部分引入一個(gè) mce通知鏈, 通過注冊(cè)相應(yīng)的處理函數(shù), 在觸發(fā)mce時(shí)可以通知使用者進(jìn)行相應(yīng)的處理。 而在dmem文件系統(tǒng)層面, 我們則通過inode鏈表來追蹤文件系統(tǒng)的inode,當(dāng)文件系統(tǒng)收到通知以后, 會(huì)遍歷這個(gè)鏈表來判斷并得到錯(cuò)誤頁面所屬的inode,再遍歷inode關(guān)聯(lián)的vma紅黑樹, 最終得到使用這些錯(cuò)誤頁的相關(guān)進(jìn)程進(jìn)行相應(yīng)的處理。

28f133ec-71ad-11eb-8b86-12bb97331649.png

(圖6)

在使用了dmemfs之后,由于消除了冗余的內(nèi)存元數(shù)據(jù)結(jié)構(gòu),內(nèi)存的額外消耗有了顯著地下降,從圖7的實(shí)驗(yàn)數(shù)據(jù)中可以看到,內(nèi)存規(guī)格384GB的服務(wù)器中, 內(nèi)存消耗從9GB降到2GB, 消耗降低了77.8%,而內(nèi)存規(guī)格越大, 使用內(nèi)存全售賣方案對(duì)內(nèi)存資源的消耗占比越小, 從而可以將更多內(nèi)存回收再利用起來, 降低了服務(wù)器平臺(tái)成本。

29333760-71ad-11eb-8b86-12bb97331649.png

(圖 7)

原文標(biāo)題:內(nèi)存管理的另辟蹊徑 - 騰訊云虛擬化開源團(tuán)隊(duì)為內(nèi)核引入全新虛擬文件系統(tǒng)(dmemfs)

文章出處:【微信公眾號(hào):Linuxer】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    4

    文章

    1436

    瀏覽量

    42492
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    9

    文章

    3173

    瀏覽量

    76118
  • 騰訊云
    +關(guān)注

    關(guān)注

    0

    文章

    224

    瀏覽量

    17383

原文標(biāo)題:內(nèi)存管理的另辟蹊徑 - 騰訊云虛擬化開源團(tuán)隊(duì)為內(nèi)核引入全新虛擬文件系統(tǒng)(dmemfs)

文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    開源鴻蒙技術(shù)大會(huì)2025丨虛擬化與容器分論壇:構(gòu)筑開源鴻蒙虛擬化技術(shù)高地

    隨著開源鴻蒙技術(shù)的快速發(fā)展,各行各業(yè)、各品類的生態(tài)設(shè)備加速融入生態(tài),當(dāng)數(shù)字世界的邊界不斷拓寬,我們正站在操作系統(tǒng)革命的十字路口。虛擬化技術(shù)打破硬件桎梏,?讓一塊芯片承載多重宇宙,從智能手表到車載
    的頭像 發(fā)表于 11-20 17:35 ?545次閱讀
    <b class='flag-5'>開源</b>鴻蒙技術(shù)大會(huì)2025丨<b class='flag-5'>虛擬</b>化與容器分論壇:構(gòu)筑<b class='flag-5'>開源</b>鴻蒙<b class='flag-5'>虛擬</b>化技術(shù)高地

    虛擬機(jī)數(shù)據(jù)恢復(fù)—異常斷電致ESXI存儲(chǔ)失聯(lián)?這份實(shí)戰(zhàn)數(shù)據(jù)恢復(fù)案例請(qǐng)收好

    服務(wù)器存儲(chǔ)數(shù)據(jù)恢復(fù)環(huán)境: 一臺(tái)服務(wù)器上部署esxi虛擬化平臺(tái)。上層采用通過FreeNAS構(gòu)建的iSCSI方式FCSAN功能,F(xiàn)reeNAS層采用UFS2文件系統(tǒng)。 esxi虛擬系統(tǒng)
    的頭像 發(fā)表于 11-11 14:11 ?113次閱讀

    飛凌嵌入式ElfBoard-系統(tǒng)應(yīng)用編程之文件I/O

    字機(jī)制,用于不同進(jìn)程之間的通信。管道和套接字也被視為文件,并通過文件描述符進(jìn)行訪問。虛擬文件系統(tǒng)(Virtual File System):虛擬文件系統(tǒng)是Linux
    發(fā)表于 10-24 08:57

    Linux三大主流文件系統(tǒng)解析

    還在為選擇哪個(gè)文件系統(tǒng)而糾結(jié)?作為一名摸爬滾打多年的運(yùn)維老鳥,我將用最接地氣的方式,帶你徹底搞懂 Linux 三大主流文件系統(tǒng)的奧秘。
    的頭像 發(fā)表于 08-05 17:37 ?1044次閱讀

    飛凌嵌入式ElfBoard ELF 1板卡-文件系統(tǒng)常用命令之磁盤管理與維護(hù)常用命令

    :當(dāng)前系統(tǒng)在哪個(gè)設(shè)備的哪個(gè)分區(qū),其中tmpfs虛擬文件系統(tǒng);Type:文件系統(tǒng)類型;Size:當(dāng)前系統(tǒng)的大小。1K-blocks對(duì)應(yīng)列的單
    發(fā)表于 06-24 11:26

    飛凌嵌入式ElfBoard ELF 1板卡-文件系統(tǒng)簡(jiǎn)介

    臨時(shí)的設(shè)備,例如網(wǎng)絡(luò)文件系統(tǒng)/proc一個(gè)虛擬文件系統(tǒng),內(nèi)核提供向進(jìn)程發(fā)送信息的機(jī)制。操作系統(tǒng)運(yùn)行時(shí),進(jìn)程以及
    發(fā)表于 06-19 17:22

    Vsan數(shù)據(jù)恢復(fù)——Vsan分布式文件系統(tǒng)虛擬機(jī)不可用的數(shù)據(jù)恢復(fù)

    一臺(tái)采用VsSAN分布式文件系統(tǒng)的存儲(chǔ)設(shè)備由于未知原因關(guān)機(jī)重啟。管理員發(fā)現(xiàn)上層的虛擬機(jī)不可用,存儲(chǔ)內(nèi)的數(shù)據(jù)丟失。
    的頭像 發(fā)表于 05-15 17:42 ?425次閱讀
    Vsan數(shù)據(jù)恢復(fù)——Vsan分布式<b class='flag-5'>文件系統(tǒng)</b>上<b class='flag-5'>虛擬</b>機(jī)不可用的數(shù)據(jù)恢復(fù)

    Linux內(nèi)核編譯失???移動(dòng)硬盤和虛擬機(jī)的那些事兒

    Linux內(nèi)核卻失敗了,這是咋回事?FAT和NTFS文件系統(tǒng)不能支持軟鏈接,在這寫格式的磁盤里編譯內(nèi)核會(huì)失敗,同樣也不能在這樣的磁盤里解壓內(nèi)核源碼,會(huì)造成軟鏈接被破
    的頭像 發(fā)表于 04-11 11:36 ?736次閱讀
    Linux<b class='flag-5'>內(nèi)核</b>編譯失?。恳苿?dòng)硬盤和<b class='flag-5'>虛擬</b>機(jī)的那些事兒

    支持48位尋址!華為開源文件系統(tǒng)EROFS跨入大模型訓(xùn)練

    的要求。 ? 最近,開源文件系統(tǒng)EROFS在即將到來的Linux 6.15內(nèi)核周期中進(jìn)行擴(kuò)展,以處理更大規(guī)模的存儲(chǔ)系統(tǒng)。此次改進(jìn)旨在使EROFS更適配AI訓(xùn)練場(chǎng)景及其他大規(guī)模數(shù)據(jù)歸檔需求。 ? 在Linux 6.15合并窗口開啟
    發(fā)表于 03-27 01:22 ?971次閱讀

    虛擬化數(shù)據(jù)恢復(fù)—VMware虛擬化環(huán)境下重裝系統(tǒng)導(dǎo)致服務(wù)器數(shù)據(jù)丟失的數(shù)據(jù)恢復(fù)

    VMware虛擬化平臺(tái) vmfs文件系統(tǒng) 工作人員誤操作重裝操作系統(tǒng),服務(wù)器崩潰。 重裝系統(tǒng)會(huì)導(dǎo)致文件系統(tǒng)
    的頭像 發(fā)表于 03-13 10:33 ?633次閱讀
    <b class='flag-5'>虛擬</b>化數(shù)據(jù)恢復(fù)—VMware<b class='flag-5'>虛擬</b>化環(huán)境下重裝<b class='flag-5'>系統(tǒng)</b>導(dǎo)致服務(wù)器數(shù)據(jù)丟失的數(shù)據(jù)恢復(fù)

    NFS網(wǎng)絡(luò)文件系統(tǒng)深度解析

    NFS:Network File System 網(wǎng)絡(luò)文件系統(tǒng),基于內(nèi)核文件系統(tǒng)。Sun 公司開發(fā),通過使用 NFS,用戶和程序可以像訪問本地文件一樣訪問遠(yuǎn)端
    的頭像 發(fā)表于 03-01 14:15 ?1172次閱讀

    電腦搭建虛擬,電腦搭建虛擬電腦的具體方法

    較好的服務(wù)器,至少具備多核處理器、16GB以上內(nèi)存和大容量硬盤,且有穩(wěn)定的網(wǎng)絡(luò)連接。 ? ?安裝系統(tǒng):下載電腦系統(tǒng)的鏡像文件并制作U盤啟動(dòng)盤,將服務(wù)器設(shè)置從U盤啟動(dòng),然后按照安裝向?qū)?/div>
    的頭像 發(fā)表于 01-22 10:27 ?1137次閱讀
    電腦搭建<b class='flag-5'>虛擬</b><b class='flag-5'>云</b>,電腦搭建<b class='flag-5'>虛擬</b><b class='flag-5'>云</b>電腦的具體方法

    知聲Atlas超算平臺(tái)的核心亮點(diǎn)

    ”,榮耀入選《分布式統(tǒng)一大數(shù)據(jù)虛擬文件系統(tǒng)Alluxio原理、技術(shù)與實(shí)踐》。這一榮譽(yù)不僅彰顯了知聲在技術(shù)創(chuàng)新方面的實(shí)力,也充分肯定了其在AI計(jì)算領(lǐng)域的貢獻(xiàn)。
    的頭像 發(fā)表于 01-07 16:08 ?948次閱讀

    騰訊內(nèi)核團(tuán)隊(duì)修復(fù)Linux關(guān)鍵Bug

    騰訊操作系統(tǒng)(Tencent OS)內(nèi)核團(tuán)隊(duì)近日在Linux社區(qū)取得了顯著成果。他們提交的兩項(xiàng)改進(jìn)方案,成功解決了自2021年以來一直困擾
    的頭像 發(fā)表于 12-31 10:58 ?916次閱讀

    關(guān)于更新openharmony文件系統(tǒng)時(shí)遇到的問題

    用的固件,文件系統(tǒng)內(nèi)核是之前的,之前版本用起來沒問題。但是 用下面三個(gè)的時(shí)候 固件可以正常燒錄,也按照文檔里面加載了環(huán)境變量,但是燒錄內(nèi)核文件系統(tǒng)(都是U盤更新的)的時(shí)候出現(xiàn)了
    發(fā)表于 12-30 11:55