--- tags: 技術文章, Openstack GA: UA-79596126-4 title: OpenStacK - CPU Overcommit功能 --- {%hackmd BJrTq20hE %} > 賀平發問:vCPU變多,是不是處理效能也會降低,只為了切割給更多程式同時執行?這種技術提供甚麼優勢? > 子航回應:此技術是為了讓閒置的 vCPU 可以被有效的利用,由於每台虛擬機分配的 vCPU 數量並不會永遠都在使用中,透過此技術可以將閒置的 vCPU 分配給有需要的虛擬機先行使用,因此不會造成效能下降 # OpenStacK的CPU Overcommit功能 ###### 撰寫日期:2020/04/08 <font size=5, color=rainbow>此處不講安裝,只講使用</font> CPU 的 overcommit 的功能,簡單來說就是讓虛擬機可以使用超過實際的 CPU 數量的一種技術, 舉個例來說:我擁有80顆 vCPU,但是透過 overcommit 的技術,我可以讓虛擬機使用的 vCPU 數量超過80顆,如下圖所示 ![](https://i.imgur.com/OzgCQai.png) 可以看到在 openstack 上我總共擁有80顆 vCPU,但我可使用並分配給虛擬機的 vCPU 數量卻可以到達320顆。 Overcommit技術其實是openstack在安裝的時候就有一起安裝的技術,使用者可以使用metadata設定主機群組(Host_Aggregate)之cpu_allocation_ratio設定主機能夠過量使用之比例,當然除了CPU以外,記憶體也是有相同的效果! <font size=5, color=yellow>設定步驟</font> 1.進入Admin > Compute > Host Aggregate設定新的主機群組。 2.設定其『Availability Zone』名稱、特定主機(如:compute 1)與其『Metadata』規則。(使用『更新詮釋資料』) ![](https://i.imgur.com/SvNklvX.png) 3.建立虛擬機,並確保它建立在特定的主機上。(可以在專案>運算>雲實例中選擇一個雲實例,可在概觀的地方看到此虛擬機建立在哪一台運算節點上) ![](https://i.imgur.com/NKXeJPz.png) 預設的cpu_allocation_ratio是16 (定義在nova.conf裡面,如圖所示) ![](https://i.imgur.com/pYMfqh5.png) 此16的意思代表說,你的vCPU可以可以提供16倍數量的vCPU,已上面的例子來說,我有80顆vCPU,若是我設定cpu_allocation_ratio=4,我可使用的vCPU數量就是80*4 = 320 或是參考此網站,透過指令的方法建立CPU overcommit https://www.ibm.com/developerworks/cn/cloud/library/1604-openstack-host-aggregate/index.html