Apa perbedaan kinerja dari Mesin Virtual vs host Fisik?

15

Di tempat saya bekerja, kami menjalankan PC yang relatif kuat menggunakan Distribusi Debian Linux. Namun untuk program tertentu yang perlu kita instal akan lebih baik untuk memiliki CentOS dan ini akan menjadi alat kerja utama kita. Mengubah OS untuk semua komputer di tempat kerja kami adalah suatu kemungkinan, tetapi kami mencoba untuk memutuskan apakah menggunakan VirtualBox adalah pilihan yang lebih baik untuk kesederhanaan.

Ini semua bergantung pada poin berikut. Program yang perlu kita jalankan adalah simulator yang merupakan tugas yang sangat intensif prosesor yang dapat dengan mudah berjalan hingga satu jam atau lebih setiap kali simulasi diluncurkan. Kita perlu memutuskan apakah penurunan kinerja saat menggunakan Virtual Box cukup besar untuk mendapatkan perubahan OS kita.

Jadi pertanyaan saya adalah apakah ada orang yang dapat memberi tahu saya dengan pasti kinerja apa yang dihasilkan dari menjalankan tugas intensif prosesor dalam kotak virtual dibandingkan menjalankannya pada PC asli?

Terima kasih.

aarelovich
sumber

Jawaban:

15

Untuk program angka-angka (sangat terikat CPU), harus ada hampir nol hit kinerja untuk VM. Instruksi berjalan langsung pada CPU, yang sama untuk host dan VM.

Bahkan untuk tugas kompilasi yang serius, perbedaan kinerja hampir tidak terlihat. Kami menjalankan CentOS VM di VMware pada Windows.

Karena Anda menjalankan Linux pada host, Anda mungkin juga mempertimbangkan KVM (Kernel Virtual Machine) daripada VirtualBox. Ini adalah serangkaian modul kernel yang menyediakan layanan virtualisasi di Linux, menggunakan ekstensi virtualisasi Intel VT-x yang tersedia di sebagian besar semua CPU modern. QEMU menggunakan KVM sebagai akselerator untuk menjalankan kode x86 langsung pada CPU host.

Cukup instal virt-manageruntuk mencobanya.

Jonathon Reinhart
sumber
Baik. Saya akan mencobanya. Terima kasih balasannya.
aarelovich
Bagaimana, dari segi kinerja, KVM dibandingkan dengan VirtualBox (Katakanlah menjalankan Windows 10 di Sistem Linux)?
Royi
Mereka harus hampir identik jika VirtualBox memanfaatkan ekstensi virtualisasi CPU (seperti yang dilakukan KVM), dan beban kerjanya sebagian besar terikat oleh CPU. Jika tugas I / O berat, kinerjanya akan bervariasi tergantung pada perangkat keras yang dipilih. KVM memiliki driver paravirtualized (virtio) yang dapat melampaui perangkat emulasi (mis. E1000 NIC dan LSI SCSI disk controller). Meskipun secara umum mereka harus cukup dekat.
Jonathon Reinhart
6

Tidak ada satu jawaban yang baik untuk ini. Itu sangat tergantung pada bagaimana Anda menggunakan VM dan program mana.

Misalnya menggunakan VMWare (tipe 2 hypervisor) dan program terikat CPU murni menghasilkan kecepatan CPU hampir penuh. Jika saya menggunakan hypervisor yang sama sebuah program dengan banyak panggilan sistem saya akan mendapatkan perlambatan yang serius.

Dan hal-hal juga berubah ketika Anda menggunakan hypervisor tipe 1 (tanpa tamu) OS. Dan bahkan di antara mereka Anda memiliki banyak variasi. Misalnya Xen dengan 5 (IIRC dari akhir pekan lalu FOSDEM bicara pada mode Xen) yang didukungnya. Dari HW gunakan untuk para virtualised.

Untuk rekap: Seperti yang diminta, dapat bervariasi dari hampir tidak ada pelambatan hingga sangat lambat.


Sekarang jika saya fokus pada VirtualBox, itu adalah hypervisor tipe 2. Program terikat CPU murni harus baik-baik saja.

Hennes
sumber
Sebagian besar program ini pada dasarnya mengubah bahasa ke dalam Kode C dan mengkompilasinya. Ketika kami menjalankan simulasi, kompilasi ini adalah apa yang dijalankan. Bagaimana dengan Anda, maka itu harus baik-baik saja?
aarelovich
Saya menduga kinerja akan baik-baik saja. Pengalaman kotak virtual saya terbatas (saya kebanyakan menggunakan workstation VMware), tetapi saya tidak melihat alasan teknis mengapa harus lambat.
Hennes
Bagaimana, dari segi kinerja, KVM dibandingkan dengan VirtualBox (Katakanlah menjalankan Windows 10 di Sistem Linux)?
Royi
5

Sebenarnya, sepertinya Docker mungkin menjadi pilihan yang lebih baik untuk apa yang Anda lakukan. Docker menyediakan wadah, yang merupakan kotak pasir terisolasi yang berjalan di atas kernel yang sama. System call / IO overhead adalah nol, karena proses dalam-wadah Anda tidak berbeda dengan yang ada di host.

Karena Anda sudah menjalankan Linux, Docker akan menjadi cara yang bagus untuk menyediakan lingkungan CentOS tanpa harus menginstal ulang semua mesin Anda.

Juga, periksa utilitas saya, Scuba yang membuatnya mudah untuk menjalankan hal-hal seperti membangun di dalam wadah Docker. Alih-alih menjalankan makeAnda akan lari scuba make. Itu saja!

Jonathon Reinhart
sumber
Beri tahu saya jika Anda ingin mencobanya dan perlu bantuan untuk memulai.
Jonathon Reinhart
Terima kasih tapi ini sudah lama sekali dan keputusan dibuat untuk melakukan langkah tersebut. Tetapi saya akan mempertimbangkan ini ketika harus menjalankan program yang memiliki masalah menjalankan con CentOS.
aarelovich