1. 程式人生 > >KVM CPU執行緒等學習記錄

KVM CPU執行緒等學習記錄

絕大多數作業系統排程單位是執行緒。執行緒是排程和分配的基本單位,程序是資源擁有的基本單位。
linux下fork的叫程序
pthread叫執行緒
建立程序比執行緒效能要差好多5-100倍,因程序不同而異。
程序之間共享資料較麻煩,耗費資源更多。程序之間的記憶體資料不可以直接訪問。
同一程序內的執行緒之間資料是共享的。
多CPU之間通過主機板的匯流排進行通訊。
1個CPU內的多核之間通過CPU內部匯流排進行通訊。
程序排程演算法有時間片輪轉排程、優先順序排程、多級佇列排程等
邏輯 cpu 既可能是 cores 的個數,也可能是 core 的倍數。當它和 core 的個數相等時,表示每一個 core 就是一個邏輯 CPU,若它時 core 的 2 倍時,表示每個 core 又 enable 了超執行緒(Hyper-Thread)。比如:一個雙核的啟用了超執行緒的物理 cpu,其 core id 分別為 1、2,但是 sibling 是 4,也就是如果有兩個邏輯 CPU 具有相同的 "core id",那麼超執行緒是開啟的。

KVM關於CPU型號的定義在/usr/share/libvirt/cpu_map.xml可以查到,如果在virt-install的時候指定CPU的型別更好,KVM有部分針對性的CPU優化,部分應用需要特定的CPU。
CPU熱新增是centos7的一個新特性,要求宿主機和虛擬機器都是centos7
命令是virsh setvcpus vm01 5 --live #cpu增加為5個
KVM虛擬機器巢狀和VMWare原理不同,VMWare第一層是用的硬體虛擬化技術,第二層就是完全軟體模擬出來的,所以VMWare只能做兩層巢狀。KVM是將物理CPU的特性全部傳給虛擬機器,所有理論上可以巢狀N多層。
檢查是否開啟nested巢狀功能 cat /sys/module/kvm_intel/parameters/nested

openstack對KVM虛機的CPU優化可以有以下幾種:
CPU 綁核(pinning)將虛擬 CPU 和物理 CPU 逐一繫結起來
CPU隔離(isolate)將虛擬機器使用的物理 CPU 從 Linux 隔離出來
CPU拓撲(Topology)CPU 分配儘量不要跨 NUMA