OpenShift中CPU限額單位m是個什么鬼

紅帽的OpenShift定位于構建一個PaaS服務平臺,即這個平臺上必定會有不同的企業客戶來租用資源。不同的企業,不同的進程在使用共同的物理計算資源,如何保證各個客戶的應用不過度地占用資源,非常重要。
一個PaaS服務平臺也有點像一個美食城。在物業管理層面上,美食城對來租店面經營餐飲業務的商家除了限制其營業面積(出多少錢,租多大店面)之外,還要有其他的限制或管理。比如,門前的公共通道的衛生、拉客的方式、店面的裝修風格、播放音樂的音量、補給食材和物資的時間和路線、安裝電器的功率等等,都要有具體的管理辦法。否則,出現糾紛與沖突,會影響整個美食城的經濟效益。
同理,為打造PaaS“美食城”而生的OpenShift也必須提供控制資源的技術手段。該有的,肯定會有。OpenShift提供了兩種資源控制方法:一種是控制對象的數量,如:
·豆苞(pod)
·再生器(rc- replication controller)
·服務(service)
·密文(secret)
·永久卷請求(pvc – persistentvolumeclaim)
以上對象都是以數量來控制的。
另一種則按照計算使用量來控制,如存儲、內存的大小和CPU的總使用量。存儲、內存的使用量是以Gi為單位的,即GiB。
1 GiB = 1073741824 bytes = 10243 B = 230 B
而CPU的使用單位卻是m,而OpenShift的教材上則寫道:m means millicores,即m是“毫核”。毫核,是個什么鬼?OpenShift官方網站上,這樣寫道:
CPU的計量單位叫毫核。集群中的每一個節點可以通過操作系統確認本節點的CPU內核數量,將這個數量乘以1000,得到的就是節點總的CPU總數量。如,一個節點有兩個核,那么該節點的CPU總量為2000m。如果你要使用單核的十分之一,則你要求的是100m。
還是有點暈,繼續在網上翻找,終于我在Kubernetes的網站上找到相應的說明。順便提一下,OpenShift使用的是Kubernetes + Docker + Etcd及其他開源技術棧構建起來的。原來,在一個豆苞內,Kubernetes通過兩個參數來限制CPU的使用,即:
spec.containers[].resources.limits.cpu
//主動限制。這個月銷售額必須達到1000萬,否則給我卷鋪蓋走人。
spec.containers[].resources.requests.cpu
//主動請求限制。張飛大叫:只撥三千軍與我去取武陵郡,活捉太守金旋來獻!
而這個m的單位,則是將一個cpu抽象化,分成1000等份。每一份即為一個millicore,即千分之一個核,或毫核。跟米與毫米的關系是一樣的。而且,Kubernetes的一個CPU核概念與下面各家的概念是等同的:
·1 AWS vCPU
?。?個亞馬遜云虛擬核)
·1 GCP Core
?。?個谷歌計算平臺核)
·1 Azure vCore
?。?個微軟Azure虛擬核)
·1 IBM vCPU
?。?個IBM虛擬核)
·1 Hyperthread on a bare-metal Intel processor with Hyperthreading(Intel超級線程物理CPU上的1個線程)
這個限制最小的單位是100m,不允許制訂更小的精度,如限制為90m或120m,只能以100為基數增減。有時候,也寫作0.1。Intel的處理器的核的計算能力,恐怕各代產品都有所不同,所以這種限制也是相對的,是一種模糊的控制。但總比沒有控制要好。

當然,本文只是作者對OpenShift這個宏大的云計算系統進行的一次卑微的管窺,希望能激發讀者的興趣,形成一個記憶點。是一面之緣,還是終身朋友,就看你的了。
OpenShift是紅帽認證RHCA云計算五大核心課程之一,課程代碼為DO280。騰科IT教育集團是國內最早開設紅帽認證系列課程,包括RHCA認證課程的專業培訓機構,目前在廣州、深圳、上海設有分支機構,面向社會提供培訓、考試及就業引薦一體化服務,歡迎到騰科報讀紅帽系列認證課程。
官方網址:http://www.didibird.cn