您好,登錄后才能下訂單哦!
CPU 和內存虛擬化的原理是什么,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
KVM 的虛擬化是需要 CPU 硬件支持的。還記得我們在前面的章節講過用命令來查看 CPU 是否支持KVM虛擬化嗎?
root@ubuntu:~# egrep -o '(vmx|svm)' /proc/cpuinfo vmx
如果有輸出 vmx 或者 svm,就說明當前的 CPU 支持 KVM。CPU 廠商 Intel 和 AMD 都支持虛擬化了,除非是非常老的 CPU。
一個 KVM 虛機在宿主機中其實是一個 qemu-kvm 進程,與其他 Linux 進程一樣被調度。 比如在我的實驗機上運行的虛機 kvm1 在宿主機中 ps 能看到相應的進程。
虛機中的每一個虛擬 vCPU 則對應 qemu-kvm 進程中的一個線程。看下圖
在這個例子中,宿主機有兩個物理 CPU,上面起了兩個虛機 VM1 和 VM2。 VM1 有兩個 vCPU,VM2 有 4 個 vCPU。可以看到 VM1 和 VM2 分別有兩個和 4 個線程在兩個物理 CPU 上調度。
這里也演示了另一個知識點,即虛機的 vCPU 總數可以超過物理 CPU 數量,這個叫 CPU overcommit(超配)。 KVM 允許 overcommit,這個特性使得虛機能夠充分利用宿主機的 CPU 資源,但前提是在同一時刻,不是所有的虛機都滿負荷運行。 當然,如果每個虛機都很忙,反而會影響整體性能,所以在使用 overcommit 的時候,需要對虛機的負載情況有所了解,需要測試。
KVM 通過內存虛擬化共享物理系統內存,動態分配給虛擬機。看下圖
為了在一臺機器上運行多個虛擬機,KVM 需要實現 VA(虛擬內存) -> PA(物理內存) -> MA(機器內存)直接的地址轉換。虛機 OS 控制虛擬地址到客戶內存物理地址的映射 (VA -> PA),但是虛機 OS 不能直接訪問實際機器內存,因此 KVM 需要負責映射客戶物理內存到實際機器內存 (PA -> MA)。具體的實現就不做過多介紹了,大家有興趣可以查查資料。
還有一點提醒大家,內存也是可以 overcommit 的,即所有虛機的內存之和可以超過宿主機的物理內存。但使用時也需要充分測試,否則性能會受影響。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。