命名空間(Namespace)是 Linux 內(nèi)核的一個特性,它對內(nèi)核資源進行分區(qū),使得一組進程看到一組資源,而另一組進程看到一組不同的資源。該功能的工作原理是為一組資源和進程使用相同的命名空間,但這些命名空間引用不同的資源。資源可能存在于多個空間中。此類資源的示例包括進程 ID、主機名、用戶 ID、文件名以及一些與網(wǎng)絡(luò)訪問和進程間通信相關(guān)的名稱。
IBM 工程師 Pratik Sampat?近日發(fā)表了 Linux 內(nèi)核的 CPU Namespace 接口的早期原型。設(shè)計這個命名空間是為了解決當前查看可用 CPU 資源的方法的一致性問題,以及解決因了解系統(tǒng)上的資源訪問/位置而可能產(chǎn)生的安全問題。
如今,在容器上運行的應(yīng)用程序在 cgroups 的幫助下執(zhí)行它們的 CPU、內(nèi)存限制與要求。然而,許多應(yīng)用程序通過 sysfs/procfs 繼承或以其他方式獲得系統(tǒng)的視圖,并根據(jù)這些信息分配資源,如線程/進程的數(shù)量,內(nèi)存分配。這可能會導(dǎo)致意外的運行行為,并對性能產(chǎn)生很大影響。
除了一致性問題,目前的處理方式也給多租戶系統(tǒng)帶來了安全和公平使用的影響,例如:
攻擊者可以在知道 CPU 節(jié)點拓撲的情況下調(diào)度工作負載并選擇 CPU,從而使總線被淹沒而造成拒絕服務(wù)攻擊;以及識別 CPU 系統(tǒng)拓撲結(jié)構(gòu)可以幫助識別靠近總線和外圍設(shè)備(如 GPU)的內(nèi)核,以便從其他工作負載中獲得不適當?shù)难舆t優(yōu)勢。
因此,由 IBM 領(lǐng)導(dǎo)的 CPU Namespace 提案追求以下設(shè)計:
- 這個原型補丁集引入了一個新的內(nèi)核命名空間機制 —— CPU Namespace。
- CPU Namespace 通過虛擬化邏輯 CPU ID 和創(chuàng)建相同的虛擬 CPU 映射來隔離 CPU 信息。它鎖定在 task_struct 上,并且 CPU 轉(zhuǎn)化被設(shè)計成扁平的層次結(jié)構(gòu),這意味著每個虛擬命名空間 CPU 在創(chuàng)建命名空間時都映射到一個物理 CPU,轉(zhuǎn)化速度更快;并且子代不需要向上遍歷樹來檢索轉(zhuǎn)化。
- 該命名空間允許控制和顯示接口都能夠感知 CPU 命名空間上下文,這樣命名空間內(nèi)的任務(wù)只能通過虛擬 CPU 映射獲取視圖并因此控制它,以及查看可用的 CPU 資源。
在用 Nginx Web 服務(wù)器進行的測試中,內(nèi)存利用率下降了 92-95%,延遲減少了 64%,每秒的請求和傳輸?shù)韧掏铝繘]有顯著變化。雖然目前的設(shè)計仍有存在一些缺陷,但隨著 IBM 的持續(xù)改進,Linux 的性能有望大幅提升。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/122223.html