選單

IBM新設計,Linux 效能有望大幅提升

來自公眾號:OSC開源社群

名稱空間(Namespace)是 Linux 核心的一個特性,它對核心資源進行分割槽,使得一組程序看到一組資源,而另一組程序看到一組不同的資源。該功能的工作原理是為一組資源和程序使用相同的名稱空間,但這些名稱空間引用不同的資源。資源可能存在於多個空間中。此類資源的示例包括程序 ID、主機名、使用者 ID、檔名以及一些與網路訪問和程序間通訊相關的名稱。

IBM 工程師 Pratik Sampat 近日發表了 Linux 核心的 CPU Namespace 介面的早期原型。設計這個名稱空間是為了解決當前檢視可用 CPU 資源的方法的一致性問題,以及解決因瞭解系統上的資源訪問/位置而可能產生的安全問題。

如今,在容器上執行的應用程式在 cgroups 的幫助下執行它們的 CPU、記憶體限制與要求。然而,許多應用程式透過 sysfs/procfs 繼承或以其他方式獲得系統的檢視,並根據這些資訊分配資源,如執行緒/程序的數量,記憶體分配。這可能會導致意外的執行行為,並對效能產生很大影響。

除了一致性問題,目前的處理方式也給多租戶系統帶來了安全和公平使用的影響,例如:

攻擊者可以在知道 CPU 節點拓撲的情況下排程工作負載並選擇 CPU,從而使匯流排被淹沒而造成拒絕服務攻擊;以及識別 CPU 系統拓撲結構可以幫助識別靠近匯流排和外圍裝置(如 GPU)的核心,以便從其他工作負載中獲得不適當的延遲優勢。

因此,由 IBM 領導的 CPU Namespace 提案追求以下設計:

這個原型補丁集引入了一個新的核心名稱空間機制 —— CPU Namespace。

CPU Namespace 透過虛擬化邏輯 CPU ID 和建立相同的虛擬 CPU 對映來隔離 CPU 資訊。它鎖定在 task_struct 上,並且 CPU 轉化被設計成扁平的層次結構,這意味著每個虛擬名稱空間 CPU 在建立名稱空間時都對映到一個物理 CPU,轉化速度更快;並且子代不需要向上遍歷樹來檢索轉化。

該名稱空間允許控制和顯示介面都能夠感知 CPU 名稱空間上下文,這樣名稱空間內的任務只能透過虛擬 CPU 對映獲取檢視並因此控制它,以及檢視可用的 CPU 資源。

在用 Nginx Web 伺服器進行的測試中,記憶體利用率下降了 92-95%,延遲減少了 64%,每秒的請求和傳輸等吞吐量沒有顯著變化。雖然目前的設計仍有存在一些缺陷,但隨著 IBM 的持續改進,Linux 的效能有望大幅提升。

END