91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

3天內不再提示

騰訊云虛擬化開源團隊為內核引入全新虛擬文件系統

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

掃碼添加小助手

加入工程師交流群

Linux內存管理概述

我們知道linux系統內核的主要工作之一是管理系統中安裝的物理內存,系統中內存是以page頁為單位進行分配,每個page頁的大小是4K,如果我們需要申請使用內存則內核的分配流程是這樣的,首先內核會為元數據分配內存存儲空間,然后才分配實際的物理內存頁,再分配對應的虛擬地址空間和更新頁表。

好奇的同學肯定想問,元數據是什么,為什么我申請內存還要分配元數據,元數據有什么用呢?

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

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

(圖1)

元數據存儲著各種內存信息,比如使用大頁復合頁的信息,slub分配器的信息等等,以便告訴內核該如何使用每個頁面,以及跟蹤頁面在各個映射列表上的位置,或將其連接到后端的存儲等等。所以在內核的內存管理中頁面元數據的重要性不言而喻,目前在64位系統上這個數據結構占用64個字節,而由于通常的頁面大小為4KB,比如一臺安裝了4GB內存的普通電腦上就有1048576個普通頁,這意味著差不多需要64MB大小的內存來存儲內存元數據來用于管理內存普通頁。

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

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

(圖2)

Direct Memory Management File System(直接內存管理文件系統)

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

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

(圖3)

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

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

(圖4)

預留下來的內存由稱為dmem_pool的內存池結構體來管理,第一層拓撲為dmem numa node,用來描述dmem在各個numa 節點上的分布情況以實現了numa親和性,第二層拓撲是在dmem numa node的基礎上再實現一個dmem region鏈表,以描述當前節點下每段連續的dmem內存區間(見圖5)。每個region中以page作為分配的最小顆粒度,都關聯到一個local bitmap來維護和管理每個dmem 頁面的狀態,在掛載dmemfs文件系統時為每個 region申請并關聯 bitmap, 并且指定頁面大小的粒度, 比如4K, 2M或1G,從而方便在服務器集群中部署使用

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

(圖5)

簡單的來說在掛載了dmemfs文件系統之后,就可以使用如下的qemu參數將dmemfs所管理的物理內存傳遞給虛擬機直接使用。

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

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

(圖6)

在使用了dmemfs之后,由于消除了冗余的內存元數據結構,內存的額外消耗有了顯著地下降,從圖7的實驗數據中可以看到,內存規格384GB的服務器中, 內存消耗從9GB降到2GB, 消耗降低了77.8%,而內存規格越大, 使用內存全售賣方案對內存資源的消耗占比越小, 從而可以將更多內存回收再利用起來, 降低了服務器平臺成本。

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

(圖 7)

原文標題:內存管理的另辟蹊徑 - 騰訊云虛擬化開源團隊為內核引入全新虛擬文件系統(dmemfs)

文章出處:【微信公眾號:Linuxer】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內核
    +關注

    關注

    3

    文章

    1416

    瀏覽量

    41448
  • 內存
    +關注

    關注

    8

    文章

    3125

    瀏覽量

    75285
  • 騰訊云
    +關注

    關注

    0

    文章

    221

    瀏覽量

    17120

原文標題:內存管理的另辟蹊徑 - 騰訊云虛擬化開源團隊為內核引入全新虛擬文件系統(dmemfs)

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    飛凌嵌入式ElfBoard ELF 1板卡-文件系統常用命令之磁盤管理與維護常用命令

    :當前系統在哪個設備的哪個分區,其中tmpfs虛擬文件系統;Type:文件系統類型;Size:當前系統的大小。1K-blocks對應列的單
    發表于 06-24 11:26

    Vsan數據恢復——Vsan分布式文件系統虛擬機不可用的數據恢復

    一臺采用VsSAN分布式文件系統的存儲設備由于未知原因關機重啟。管理員發現上層的虛擬機不可用,存儲內的數據丟失。
    的頭像 發表于 05-15 17:42 ?183次閱讀
    Vsan數據恢復——Vsan分布式<b class='flag-5'>文件系統</b>上<b class='flag-5'>虛擬</b>機不可用的數據恢復

    Linux內核編譯失敗?移動硬盤和虛擬機的那些事兒

    Linux內核卻失敗了,這是咋回事?FAT和NTFS文件系統不能支持軟鏈接,在這寫格式的磁盤里編譯內核會失敗,同樣也不能在這樣的磁盤里解壓內核源碼,會造成軟鏈接被破
    的頭像 發表于 04-11 11:36 ?349次閱讀
    Linux<b class='flag-5'>內核</b>編譯失敗?移動硬盤和<b class='flag-5'>虛擬</b>機的那些事兒

    虛擬化數據恢復—VMware虛擬化環境下重裝系統導致服務器數據丟失的數據恢復

    VMware虛擬化平臺 vmfs文件系統 工作人員誤操作重裝操作系統,服務器崩潰。 重裝系統會導致文件系統
    的頭像 發表于 03-13 10:33 ?389次閱讀
    <b class='flag-5'>虛擬</b>化數據恢復—VMware<b class='flag-5'>虛擬</b>化環境下重裝<b class='flag-5'>系統</b>導致服務器數據丟失的數據恢復

    騰訊內核團隊修復Linux關鍵Bug

    騰訊操作系統(Tencent OS)內核團隊近日在Linux社區取得了顯著成果。他們提交的兩項改進方案,成功解決了自2021年以來一直困擾
    的頭像 發表于 12-31 10:58 ?665次閱讀

    Jtti:Linux中虛擬文件系統和容器化的關系

    在Linux中,虛擬文件系統(VFS)和容器化技術之間有密切的關系。容器化是指通過使用容器來運行應用程序,而容器本質上是在宿主機上運行的獨立進程,它們通常共享宿主機的操作系統內核和部分文件系統
    的頭像 發表于 11-27 15:38 ?489次閱讀

    虛擬化數據恢復—UFS2文件系統數據恢復案例

    虛擬化數據恢復環境: SAN環境下通過iSCSI實現FreeNAS,FreeNAS采用的UFS2文件系統。物理存儲架構在一臺服務器上,另外兩臺服務器上安裝ESXi虛擬系統。整個存儲
    的頭像 發表于 11-11 11:02 ?628次閱讀

    計算中的虛擬化技術應用

    計算中的虛擬化技術是一種將計算機物理實體(如服務器、存儲設備、網絡設備)通過軟件技術劃分為多個虛擬實體的技術,每個虛擬實體可以獨立運行操作系統
    的頭像 發表于 10-24 09:22 ?1854次閱讀

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-應用編程示例控制LED燈之sysfs文件系統

    文件系統,被稱為虛擬文件系統。它對系統設備進行管理,產生一個包含所有系統硬件層次的視圖,同時將內核信息以
    發表于 10-21 09:52

    飛凌嵌入式ElfBoard ELF 1板卡-應用編程示例控制LED燈之sysfs文件系統

    個基于內存的文件系統,被稱為虛擬文件系統。它對系統設備進行管理,產生一個包含所有系統硬件層次的視圖,同時將內核信息以
    發表于 10-18 09:31

    飛凌嵌入式ElfBoard ELF 1板卡-Linux C接口編程入門之文件I/O

    程之間的通信。管道和套接字也被視為文件,并通過文件描述符進行訪問。虛擬文件系統(Virtual File System):虛擬文件系統是Linux
    發表于 10-09 15:38

    Linux根文件系統的掛載過程

    Linux根文件系統(rootfs)是Linux系統中所有其他文件系統和目錄的起點,它是內核啟動時掛載的第一個文件系統
    的頭像 發表于 10-05 16:50 ?973次閱讀

    什么是虛擬機?什么是虛擬化?

    在日新月異的科技世界中,虛擬化技術如同一座橋梁,連接著現實與數字的鴻溝,我們打開了全新的計算維度。虛擬機,這一概念,自其誕生以來,就以其獨特的魅力和強大的功能,深深地影響了軟件開發、
    的頭像 發表于 09-04 14:55 ?2300次閱讀

    Linux中的proc介紹

    /proc 是一種偽文件系統(也即虛擬文件系統),存儲的是當前內核運行狀態的一系列特殊文件,用戶可以通過這些文件查看有關
    的頭像 發表于 08-14 18:14 ?900次閱讀
    Linux中的proc介紹

    虛擬機數據恢復—KVM虛擬機被誤刪除的數據恢復案例

    虛擬機數據恢復環境: Linux操作系統服務器,EXT4文件系統。服務器中有數臺KVM虛擬機。 虛擬機1:主數據庫服務器
    的頭像 發表于 08-07 13:33 ?807次閱讀
    <b class='flag-5'>虛擬</b>機數據恢復—KVM<b class='flag-5'>虛擬</b>機被誤刪除的數據恢復案例
    主站蜘蛛池模板: 免费一级做a爰片久久毛片 免费一看一级毛片 | 看日本黄大片在线观看 | 啪啪免费网站视频观看 | 最新欧美精品一区二区三区 | 特级一级毛片免费看 | 国产色综合天天综合网 | 欧美高清免费一级在线 | 2021色噜噜狠狠综曰曰曰 | 国产aaaaaaa毛片 | 神马三级我不卡 | 国产色婷婷精品免费视频 | 啪啪影城 | 国产精品激情综合久久 | 成年网站在线观看 | 国产老肥熟xxxx | 99热最新网址 | 五月婷婷六月爱 | 精品国产你懂的在线观看 | 日本黄色爽 | 成年人三级视频 | 国产精品天天看天天爽 | 国产在线精品香蕉综合网一区 | 久久51| 成人午夜影院在线观看 | 国产精品a在线观看香蕉 | 久久福利青草精品资源站免费 | 欧美精品综合一区二区三区 | 国产精品美女一级在线观看 | 女人张开腿让男人捅爽 | 中国高清性色生活片 | 亚洲第一在线播放 | 男女一区二区三区免费 | 免费精品美女久久久久久久久 | 在线观看免费视频一区 | 国产一级特黄aa级特黄裸毛片 | 黄网站免费视频 | 精品女同| 亚洲成人99| 午夜在线视频观看 | 国产精品igao在线观看樱花日本 | 国产全部理论片线观看 |