openEuler資源利用率提升之道06:虛擬機器混部OpenStack排程

語言: CN / TW / HK

虛擬機器混合部署是指把對 CPU、IO、Memory 等資源有不同需求的虛擬機器通過排程方式部署、遷移到同一個計算節點上,從而使得節點的資源得到充分利用。

虛擬機器混合部署的場景有多種,比如通過動態資源排程滿足節點資源的動態調整;根據使用者使用習慣動態調整節點虛擬機器分佈等等。而虛擬機器高低優先順序排程也是其中的一種實現方法。在單機的資源排程分配上,區分出高低優先順序,即高優先順序虛機和低優先順序虛機發生資源競爭時,資源優先分配給前者,嚴格保障其 QoS。

在 OpenStack Nova 中引入虛擬機器高低優先順序技術,再配合 Skylark QoS 服務能力,可以一定程度上滿足虛擬機器的混合部署要求。

實現方案

在 Nova 的虛擬機器建立、遷移流程中引入高低優先順序概念,虛擬機器物件新增高低優先順序屬性。高優先順序虛擬機器在排程的過程中,會盡可能的排程到資源充足的節點,這樣的節點需要至少滿足記憶體不超賣、高優先順序虛擬機器所用 CPU 不超賣的要求。

使用者建立 flavor 或建立虛機時,可指定其優先順序屬性。但優先順序屬性不影響 Nova 現有的資源模型及節點排程策略,即 Nova 仍按正常流程選取計算節點及建立虛機。虛機高低優先順序特性主要影響虛機建立後單機層面的資源排程分配策略。高優先順序虛機和低優先順序虛機發生資源競爭時,資源優先分配給前者,嚴格保障其 QoS。

Nova 針對虛機高低優先順序特性有以下改變:

  • VM 物件和 flavor 新增高低優先順序屬性配置。同時結合業務場景,約束高優先順序屬性只能設定給綁核型別虛機,低優先順序屬性只能設定給非綁核類虛機。
  • 對於具有優先順序屬性的虛機,需修改 libvirt XML 配置,讓單機上的 QoS 管理元件(名為 Skylark)感知,從而自動進行資源分配和 QoS 管理。
  • 低優先順序虛機的綁核範圍有改變,以充分利用高優先順序虛機空閒的資源。

如何使用

準備

假設有如下一臺主機:

  1. 假設主機有 12 個 cpu core。

  2. OS 是 openEuler 22.09,已安裝 Skylark 服務,且核心版本符合 Syklark 要求。

  3. 已基於 RPM 安裝部署好了 OpenStack Yoga 版本。

安裝

  1. 安裝 plugin
dnf install openstack-plugin-priority-vm
  1. 配置資料庫
nova-manage api_db sync

nova-manage db sync

3.重啟 nova 服務

systemctl restart openstack-nova-*

配置

  1. 修改 nova.conf檔案

開啟/etc/nova/nova.conf,修改[compute]內的cpu_dedicated_setcpu_shared_setcpu_priority_mix_enable,其中cpu_dedicated_set表示高優先順序虛機使用的 CPU 核心,cpu_shared_set指低優先順序虛機使用的 CPU 核心,cpu_priority_mix_enable表示是否允許低優先虛機同時使用cpu_dedicated_set的 CPU 核心,預設值是 False。

以此文章的主機為例,設定如下:

[compute]
cpu_dedicated_set=0-7
cpu_shared_set=8-11
cpu_priority_mix_enable=True
  1. 重啟 nova-compute 服務
systemctl restart openstack-nova-compute

使用

  1. 建立新的 flavor
openstack flavor create --ram 8192 --disk 50 --vcpus 8 --public  --property hw:cpu_priority='low' low_prio
openstack flavor create --ram 8192 --disk 50 --vcpus 8 --public  --property hw:cpu_priority='high' --property hw:cpu_policy='dedicated' high_prio
  1. 使用新 flavor 建立虛擬機器
openstack server create --flavor high_prio --image openEuler2203 --network private-network high_prio_test
openstack server create --flavor low_prio --image openEuler2203 --network private-network low_prio_test

檢查

使用virsh list檢視虛機 id,然後使用virsh vcpuinfo命令分別檢視兩個虛機,可以發現high_prio_test的 CPU 與 0-7 號 CPU 一一繫結,low_prio_test的 CPU 在 0-11 號 CPU 中範圍繫結。

總結

本特性的實現已釋出在 openEuler 22.09 創新版的 OpenStack Yoga 版本中,也會在即將釋出的 openEuler 22.03 LTS SP1 的 OpenStack Train 中整合。歡迎大家體驗,在 OpenStack SIG 中反饋問題、交流經驗。

加入我們

文中所述資源利用率提升技術,由  Cloud Native SIG、Kernel SIG、OpenStack SIG、Virt SIG 共同參與,其原始碼將在 openEuler 社群逐步開源。如果您對相關技術感興趣,歡迎您的圍觀和加入。您可以新增小助手微信,加入對應 SIG 微信群。

系列文章回顧

[1] openEuler  資源利用率提升之道  01  :概論 :http://mp.weixin.qq.com/s/x9sdogEslRJJ5mDbs5bxgQ

[2] openEuler  資源利用率提升之道  02  :典型應用下的效果 :http://mp.weixin.qq.com/s/anOTdRIufYaj5pl4hy1e_A

[3] openEuler  資源利用率提升之道  03  :rubik 混部引擎 :http://mp.weixin.qq.com/s/jJXeBCRM2k92rPqyA6SL-Q

[4] openEuler 資源利用率提升之道 04 :CPU 搶佔和 SMT 隔離控制 :http://mp.weixin.qq.com/s/8Odi24WjKAho8SYsYd7a1A

[5] openEuler 資源利用率提升之道 05 :虛擬機器混部介紹與功耗管理技術 :http://mp.weixin.qq.com/s/wXE5cpx2jBvXEISToqhW3Q


本文分享自微信公眾號 - openEuler(openEulercommunity)。
如有侵權,請聯絡 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。