---
# System prepended metadata

title: OpenStacK - CPU Overcommit功能
tags: [' Openstack', 技術文章]

---

---
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
