常常看到很多人有這些問題
用pd(或是vmware, vb)跑xx程式能順跑嗎或是已經切給vm所有的硬體資源了為何還是不順
小弟獻醜簡單解釋一下(資訊相關人員有計組,OS相關概念就左轉吧)
PD, VMWare, Virtualbox都是常聽到的Virtual Machine代表 也簡稱VM
Vm主要原理是在OS的kernelspace(系統核心、掌管電腦的重要功能,e.g.網路資訊傳輸、
系統輸入輸出、cpu執行程式的順序等等,相對應跑不重要的遊戲、繪圖、文書是userspa
ce 兩者之間會花費大量的時間消耗)
增加一個程序(hypervisor)來管理vm要用到的硬體資源
然後在上面開一個虛擬的空間跑另一個OS(又稱作guest os相對原本的就叫做host os)
又因為在guest os裡面所有的i/o(input output)都是經過hypervisor
而hypervisor又只是一個在host os裡面的process(程序)
而os對每個process會讓cpu平均分配一小段時間來輪流執行,等到所有process都執行完
再從頭開始(假設一個process分配到1/60秒)
也就是說hypervisor分配到1/60秒來執行guest os
guest os裡面又要再切1/60秒輪流執行
變成每次在guest os裡面的process一次只能分配到1/360秒
又每次換下一個process(每1/60秒過去)執行時都會消耗大量時間
而且在guest os又有userspace跟kernel space轉換的時間消耗
因此guest os裡面會非常多冗餘時間被消耗掉
也就會效能不佳
這在cs界是非常火熱的議題 因為data center現在正為vm效能不佳所苦
結論:要效能好就是外接顯卡或是買台桌電,vm就是免強湊合在用的,甚至程式開不起來
也不意外(這牽扯到vm的演進史)
題外話,macOS的kernel很穩的 絕對比windows的還穩,只是userspace的bug大概沒差多
少