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