騰訊更新了提供給 Linux 的 DMEMFS 內存管理方式提案

2020-12-15 開源中國

今年 10 月份,騰訊的工程師曾提出了一個將 DMEMFS 作為 Linux "直接內存文件系統(Direct Memory File-System)" 的提案。目前,騰訊已針對那些最初的 DMEMFS 內核補丁進行了更新。並表示,他們將繼續努力把這個功能引入 Linux 內核。

DMEMFS 可將一些不由內核管理的內存保留下來,避免無謂開銷,進而將其直接暴露給雲端的虛擬機。

正如 phoronix 所述,騰訊的 DMEMFS 重點在於為了避免傳統上與每個物理內存相關聯的結構頁所節省的內存位。對於現在的高端臺式機來說這很微小,開銷也不大。但是當涉及到大規模的伺服器和其他超大規模的部署時,其節省的內存是相當可觀的。

據騰訊工程師估計,在一臺擁有 320G 內存的伺服器上,通過避開每一個物理頁面的 struct 頁面用於客用內存,最多可以通過 DMEMFS 節省大約 5G 的內存。

DMEMFS 可以在系統內存中劃出定義的部分,然後保留下來,可以像傳統的 Linux 文件系統一樣掛載用戶空間訪問。然後,QEMU 可以被配置為在啟動虛擬機時使用該安裝的 DMEMFS 區域作為內存備份存儲。

這是自 10 月以來對 DMEMFS 的第一個更新補丁集,直接內存文件系統補丁已經針對 Linux 5.10 Git 重新進行了調整,並進行了其他底層改進。此實現總計超過 3 千多行代碼。

與此同時,騰訊的開發人員也在等待對這些補丁進行第二輪審查。

更多詳情可查看:https://lkml.org/lkml/2020/12/7/342

相關焦點

  • 每個程式設計師都該了解一點 Linux 內存管理知識
    如果殺掉一個進程還不足以解決問題,Killer 會按照它對進程的評分,逐次幹掉,分數越高,被幹掉的機率越大,直到內存可以正常使用。為什麼會出現這種情況呢?這要從 Linux 的內存管理策略說起。作業系統裡內存管理的主要作用是,進程請求內存的時候為其分配可用內存,進程釋放後回收內存,並監控內存的使用狀況。
  • 嵌入式Linux內存管理的一些知識點總結
    這個內存管理的知識點還真的需要我們專門的去理解一下,今天大家一起來學習學習嵌入式Linux內存管理的知識。1.不涉及linux內核的彙編知識,僅C語言層面解析1.回答:彙編主要處理的是寄存器地址(包括內容)的計算,進行一部分的地址轉換工作(當然,它是重要的);C語言處理了極大部分的系統內存管理工作。
  • Linux內核中的內存管理
    本文對Linux內存管理使用到的一些數據結構和函數作了簡要描述,而不深入到它們的內部。對這些數據結構和函數有了一個總體上的了解後,再針對各項分別作深入了解的時候,也許會簡單一些。Linux內存訪問限制(僅針對32位系統)默認情況下Linux的內核空間映射到4G虛擬地址的最高1G(即0xC0000000 - 0xFFFFFFF)。
  • 別再說你不懂 Linux 內存管理了
    用戶空間內存數據結構在前面「進程與內存」章節我們提到,Linux進程可以劃分為 5 個不同的內存區域,分別是:代碼段、數據段、BSS、堆、棧,內核管理這些區域的方式是,將這些內存區域抽象成vm_area_struct的內存管理對象。
  • 郭健:Linux內存管理系統參數配置之OOM(內存耗盡)
    按照慣例,最後一章是參考文獻,本文的參考文獻都是來自linux內核的Documentation目錄,該目錄下有大量的文檔可以參考,每一篇都值得細細品味。二、什麼是OOMOOM就是out of memory的縮寫,雖然linux kernel有很多的內存管理技巧(從cache中回收、swap out等)來滿足各種應用空間的vm內存需求,但是,當你的系統配置不合理,讓一匹小馬拉大車的時候,linux kernel會運行非常緩慢並且在某個時間點分配page frame的時候遇到內存耗盡、無法分配的狀況
  • Linux如何調試內存洩漏
    內存洩漏並非指內存在物理上的消失,而是應用程式分配某段內存後,由於設計錯誤,導致在釋放該段內存之前就失去了對該段內存的控制,從而造成了內存的浪費。我們平時開發過程中不可避免的會遇到內存洩漏問題,你是如何排查的呢?估計你是使用下面這幾個工具吧?
  • 別再說你不懂Linux內存管理了,30 張圖給你安排的明明白白
    用戶空間內存數據結構在前面「進程與內存」章節我們提到,Linux進程可以劃分為 5 個不同的內存區域,分別是:代碼段、數據段、BSS、堆、棧,內核管理這些區域的方式是,將這些內存區域抽象成vm_area_struct的內存管理對象。
  • 10 張圖解再談 Linux 物理內存和虛擬內存
    你更想學時間管理,我不配,抱個西瓜去微博學吧。img言歸正傳,上一篇文章 別再說你不懂Linux內存管理了,10張圖給你安排的明明白白! 分析了 Linux 內存管理機制,如果已經忘了的同學還可以回頭看下,並且也強烈建議先閱讀那一篇再來看這一篇。限於篇幅,上一篇沒有深入學習物理內存管理和虛擬內存分配,今天就來學習一下。
  • Linux QQ 終於更新了!
    這是因為在2008年的時候,騰訊曾經發布過一次Linux QQ,但如同浪花一般隨即消失得無影無蹤,如今隨著Linux生態日益完善,QQ回歸也是順應大勢。不過,在第一個2.0.0 Beta版本放出之後,一切又回歸沉寂,此後騰訊官方再也沒有更新過Linux QQ,直到160天後的現在,趕在愚人節,Linux QQ 2.0.0 Beta2終於出現了。
  • Linux平臺中調試C/C++內存洩漏方法 (騰訊和MTK面試的時候問到的)
    因 此,出於這些原因,需要特別關注 C 和 C++ 編程的內存問題,特別是內存洩漏。本文先從如何發現內存洩漏,然後使用不同的方法和工具定位內存洩漏,最後對這些工具進行了比較,另外還簡單介紹了資源洩 漏的處理(以句柄洩漏為例)。本文使用的測試平臺是:Linux (Redhat AS4)。但是這些方法和工具許多都不只是局限於 C/C++ 語言以及 linux 作業系統。
  • 別再說你不懂Linux內存管理了,30 張圖給你安排的明明白白
    用戶空間內存數據結構在前面「進程與內存」章節我們提到,Linux進程可以劃分為 5 個不同的內存區域,分別是:代碼段、數據段、BSS、堆、棧,內核管理這些區域的方式是,將這些內存區域抽象成vm_area_struct的內存管理對象。
  • Linux內存、Swap、Cache、Buffer
    在Linux系統下,我們一般不需要去釋放內存,因為系統已經將內存管理的很好,但是凡事也有例外。    used:已經使用的內存大小(這裡面包含cached和buffers和shared部分)。  free:空閒的內存大小。  shared:進程間共享內存(一般不會用,可以忽略)。  buffers:內存中寫完的東西緩存起來,這樣快速響應請求,後面數據再定期刷到磁碟上。
  • 系統內存/進程內存知識掃盲
    Linux的內存管理和相關概念要比Windows複雜一些,而且還有一些區別,有悖於平時的理解,而做性能測試的同學都知道,很多時候性能測試的伺服器都是linux
  • 萬字長文,別再說你不懂Linux內存管理了(合輯),30 張圖給你安排的明明白白
    用戶空間內存數據結構在前面「進程與內存」章節我們提到,Linux進程可以劃分為 5 個不同的內存區域,分別是:代碼段、數據段、BSS、堆、棧,內核管理這些區域的方式是,將這些內存區域抽象成vm_area_struct的內存管理對象。
  • Linux下找出吃內存的方法總結
    linux下查詢進程佔用的內存方法總結,假設現在有一個「php-cgi」的進程 ,進程id為「25282」。
  • linux系統下free命令內存計算邏輯
    本篇文章介紹下linux下free命令展示的內存相關計算邏輯。
  • Linux內存初始化(上)
    有了armv8架構訪問內存的理解,我們來看下linux在內存這塊的初始化就更容易理解了。創建啟動頁表:在彙編代碼階段的head.S文件中,負責創建映射關係的函數是create_page_tables。彙編結束後的內存映射關係如下圖所示:
  • Linux內存、Swap、Cache、Buffer詳解(三)
    咱接著Linux內存、Swap、Cache、Buffer詳解(二)聊,前面提到Linux 內核會在內存將要耗盡時觸發內存自動回收工作。
  • linux各個目錄代表什麼
    ,在foomatic中,可以記錄多條印表機數據,讓用戶只在使用前先行配置所有需要使用的印表機即可; hal:全名Hardware Abstraction Layer,是linux一種管理硬體的機制,它會幫所有的應用程式或用戶搜集所有PCI及USB等硬體信息,因此,用戶可以很簡單並實時地通過HAL的方式取得硬體的相關數據;
  • 基於Linux/NC中小學的資源管理和互動教學系統
    他具有用戶希望的任何一個成熟的現代Unix系統的一切特點,包括真正的多任務功能、多用戶、虛擬內存、共享庫、高級內存管理等。2 多用戶管理  多用戶管理設計的主要目的是考慮課題實際情況,主要是西部的中小學學生和教師用戶運用計算機水平相對較低,在設計中採用越方便、越簡單的操作方式,用戶就越容易使用。在開發過程中,通過對不同系統使用者授予不同的權限,在權限上採取3級管理模式:管理員、教師和普通的用戶組(學生)。所有的用戶權限分配都由管理員完成,管理員可以根據實際情況給每個用戶分配權限。