Saya sedang mencari aturan praktis yang baik untuk memahami kapan TIDAK memvirtualisasi mesin.
Sebagai contoh, saya tahu bahwa proses yang sepenuhnya terikat CPU dengan pemanfaatan hampir 100% mungkin bukan ide yang bagus untuk divirtualisasi, tetapi apakah ada gunanya menjalankan sesuatu yang memanfaatkan CPU sebagian besar waktu sebagai "jumlah besar" (katakanlah 40 atau 50%)?
Contoh lain: jika saya memvirtualisasi 1000 mesin, bahkan jika itu hanya digunakan secara ringan atau sedang, mungkin akan buruk untuk menjalankan semuanya pada host dengan hanya 4 core.
Dapatkah seseorang meringkas petunjuk tentang virtualisasi berdasarkan beban kerja mesin atau banyaknya mesin tamu jika dibandingkan dengan sumber daya host?
Saya biasanya melakukan virtualisasi pada host Windows menggunakan VirtualBox atau VMWare, tapi saya berasumsi ini adalah pertanyaan yang cukup umum.
Jawaban:
Subsistem disk. Ini biasanya sumber daya yang paling tidak dapat dibagikan. Memori, tentu saja, tetapi yang itu jelas.
Batasan subsistem disk berfungsi dengan dua cara. Jika suatu sistem menggunakan banyak disk I / O, tamu lain melambat. Jika tamu ini dalam produksi, maka perlu respons cepat terhadap kueri web. Ini bisa sangat membuat frustrasi dan juga alasan besar mengapa tidak menyewa perangkat keras virtual. Anda dapat meminimalkan masalah ini dengan menggunakan disk khusus.
Menggunakan hanya 512 MB memori di Tamu menempatkan semua cache disk pada host. Dan itu tidak terbagi rata di antara para tamu.
Jangan khawatir tentang CPU IO. Dengan cara ini, virtualisasi sangat efisien, seringkali terkait karena hanya beberapa proses yang berjalan pada sistem yang sama. Saya jarang melihat sistem multi-xeon berjalan 100% pada CPU.
edit: salah ketik
sumber
Hal-hal yang saya tidak akan pernah masukkan ke dalam VM:
Apa pun yang menggunakan perangkat keras tertentu yang tidak dapat divirtualkan: biasanya grafik, beberapa modul keamanan perangkat keras, apa pun dengan driver yang disesuaikan (misalnya driver jaringan tujuan khusus).
Sistem dengan masalah lisensi. Beberapa biaya perangkat lunak per CPU fisik atau inti, tidak peduli seberapa sedikit Anda telah mengalokasikan ke VM. Anda akan terkena dalam audit jika Anda memiliki perangkat lunak yang dilisensikan untuk satu inti berjalan dalam VM pada server 32-inti.
Hal-hal yang saya tidak ingin menempatkan dalam VM:
Perangkat lunak yang sudah berupaya menggunakan semua sumber daya dalam perangkat keras komoditas. Mesin yang bekerja sebagai bagian dari upaya "data besar" seperti hadoop biasanya dirancang untuk dijalankan dengan logam biasa.
Apa pun yang akan disetel dengan halus untuk memanfaatkan sumber daya. Ketika Anda benar-benar mulai menyetel basis data, VM yang bersaing untuk sumber daya benar-benar akan melemparkan kunci pas dalam pekerjaan.
Apa pun yang sudah memiliki hambatan besar. Itu sudah tidak bermain baik dengan dirinya sendiri, kemungkinan tidak akan bermain dengan baik dengan orang lain.
Ada beberapa hal yang cukup mengagumkan untuk dimasukkan ke dalam VM:
Apa pun yang menghabiskan banyak waktu idle. Host utilitas seperti mail dan DNS mengalami kesulitan menghasilkan cukup beban pada perangkat keras modern untuk menjamin server khusus.
Aplikasi yang tidak skala dengan baik (atau mudah) sendiri. Kode lama cukup sering masuk dalam kategori ini. Jika aplikasi tidak akan berkembang untuk mengambil server, gunakan banyak server virtual kecil.
Proyek / aplikasi yang mulai kecil tetapi berkembang. Jauh lebih mudah untuk menambahkan sumber daya ke VM (dan juga pindah ke perangkat keras yang lebih baru, lebih besar) daripada memulai dengan bare metal.
Juga, saya tidak yakin apakah Anda melebih-lebihkan tentang menempatkan sejumlah besar VM pada satu host, tetapi jika Anda mencoba untuk rasio VM: HW yang besar, Anda mungkin ingin mempertimbangkan ESX, Xen, KVM sebagai gantinya. Tarif Anda akan jauh lebih baik daripada menggunakan VMware atau kotak virtual di Windows.
sumber
Ada dua poin untuk kinerja virtualisasi.
Pada kemacetan bersama, siapa lagi yang menggunakan besi yang sama? Jika Anda berada di lokasi yang tervirtualisasi, Anda sangat bergantung pada mitra hosting yang jujur kepada Anda.
Saya pikir pertanyaan utama untuk kinerja mentah (terutama interaktivitas) untuk ditanyakan adalah bagian mana dari sistem virtualisasi yang ditiru. Ini berbeda tergantung pada pengaturan. Disk dan jaringan adalah kandidat yang umum. Sebagai patokan, emulasi menggandakan "biaya" kinerja untuk melakukan suatu tindakan, sehingga waktu latensi perangkat keras harus dihitung dua kali lipat dan angka thruput apa pun harus dibelah dua.
sumber
Pada akhirnya, setiap beban kinerja tinggi tidak boleh divirtualisasi. Overhads kinerja virtualisasi adalah non-sepele. Lihat hasil tes saya di sini:
http://www.altechnative.net/2012/08/04/virtual-performance-part-1-vmware/
OTOH, jika Anda ingin mengkonsolidasikan sejumlah mesin yang sebagian besar tidak digunakan sepanjang waktu, virtualisasi adalah jalan ke depan.
sumber
Jawaban yang bagus dari anttiR.
Selain itu, sistem waktu kritis. Saya hanya mencari tahu bahwa pembalikan sepeser pun Hyper-V (vm perlahan-lahan jatuh di belakang, semua OS modern di vm melakukan itu, sering disinkron ulang) tidak bermain dengan baik dengan beberapa aplikasi penting waktu saya kembangkan. Ditambah lagi saya akan menggunakan cpu "banyak" di sana, dan berencana untuk mendapatkan mesin 12 inti hanya untuk aplikasi tersebut dalam produksi.
sumber