Peki, sanallaştırmanın yükü nedir ve ne zaman endişelenmeliyim?


16

Bir makineyi ne zaman sanallaştırmayacağınızı anlamak için iyi kurallar arıyorum.

Örneğin,% 100'e yakın kullanımı olan tamamen CPU'ya bağlı bir işlemin sanallaştırmak için muhtemelen iyi bir fikir olmadığını biliyorum, ancak CPU'yu çoğu zaman "önemli miktarda" kullanan bir şey çalıştırmanın herhangi bir anlamı var (40 veya% 50)?

Başka bir örnek: 1000 makineyi sanallaştırırsam, sadece hafif veya orta derecede kullanılsalar bile, hepsini sadece 4 çekirdekli bir ana bilgisayarda çalıştırmak muhtemelen kötü olurdu.

Birisi, ana makine kaynaklarıyla karşılaştırıldığında makine iş yüküne veya çok sayıda konuk makineye dayalı sanallaştırma ipuçlarını özetleyebilir mi?

Genellikle VirtualBox veya VMWare kullanarak Windows ana bilgisayarlarında sanallaştırıyorum, ancak bunun oldukça genel bir soru olduğunu varsayıyorum.


1
bazı CPU bağlantılı görevlerde bile sanallaştırma için bir nokta vardır - kullanıcıların VM görüntüleri gibi işleri kümelere göndermelerine izin vermek, işlerin çalıştığı ortam üzerinde, örneğin basit bir toplu iş zamanlayıcı ile mümkün olandan çok daha fazla kontrole izin verir.
Flekso

Ama bir noktada "VM yürütme" zamanlaması zaten tek bir VM içinde iş parçacığı zamanlamak için yeterince zor olduğunda gereksiz yükü gibi görünüyor, değil mi?
kvista

Yanıtlar:


13

Disk alt sistemi. Bu genellikle en az paylaşılabilir kaynaktır. Hafıza, tabii ki, ama bu belli.

Disk alt sistemi sınırlamaları her iki şekilde de çalışır. Bir sistem çok fazla disk G / Ç kullanıyorsa, diğer misafirler yavaşlar. Bu konuk üretim aşamasındaysa, web sorgularına hızlı bir şekilde yanıt verilmesi gerekir. Bu çok sinir bozucu olabilir ve aynı zamanda sanal donanım kiralamamanın büyük bir nedeni olabilir. Özel diskler kullanarak bu sorunu en aza indirebilirsiniz.

Misafirlerde yalnızca 512 MB bellek kullanılması, tüm disk önbelleğini ana bilgisayara koyar. Ve konuklar arasında eşit olarak bölünmemiş.

CPU IO için endişelenmeyin. Bu şekilde sanallaştırma çok etkilidir, genellikle aynı sistemde çalışan birden çok işlemle ilgilidir. Çok nadiren CPU üzerinde% 100 çalışan multi-xeon sistemleri görüyorum.

düzenleme: yazım hataları


3
ağır disk G / Ç gereksinimleri, sanallaştırmamak için 1 numaralı neden olacaktır - sanallaştırma cezaları tarafından en çok etkilenen kaynak budur, bkz. codinghorror.com/blog/2006/10/…
Jeff Atwood

Teşekkürler - her iki yorum da faydalıdır. Sadece kimse yüksek disk kullanımının neden sanallaştırmak için sorunlu olduğunu biliyor mu merak? Sanallaştırma mühendisleri neden bu nispeten temel sorunu görmezden geliyorlardı? Yoksa temel olarak CPU sanallaştırmasından daha mı karmaşık?
kvista

Not - @Jeff, 2006 blog yayınınızı okuyorum ve bunun neden daha iyi olduğunu açıklayacağımı varsayıyorum (yani, iş mili rezervasyonu), ancak sanallaştırma tasarımcılarına / uygulayıcılarına olan sorum aynı kalıyor - bu sanallaştırma için temelde sorunlu CPU sanallaştırmanın bir yolu yok mu?
kvista

3
Bir sabit diskin yapabileceği pek çok şey var. 5 ms sabit disk için bu saniyede 200 arar. Genel olarak, bir işletim sistemi dosyaları kopyaladığında veya dizinleri taradığında, her zaman diskin% 100'ünü kullanır. Bu süre boyunca diskten gelen tüm küçük istekler gecikir ve birçoğu vardır. Ayrıca dosya sistemi arabellekleri kopya nedeniyle boşa. Çalışma OS konseptimizin boş bir sabit sürücüye dayandığı söylenebilir.
Antti Rytsölä

1
Teşekkürler. Sanırım SSD'lerin bu denklemi değiştirip değiştirmediğini görmek ilginç olurdu. Ama şimdi tartışma moduna çok geçiyoruz. Anladım - teşekkürler.
kvista

15

Asla bir VM'ye koymayacağım şeyler:

  • Sanallaştırılamayan belirli donanım kullanan her şey: genellikle grafikler, oldukça az donanım güvenlik modülü, özelleştirilmiş sürücülere sahip her şey (örneğin özel amaçlı ağ sürücüleri).

  • Lisans sorunu olan sistemler. VM'ye ne kadar az tahsis etmiş olursanız olun, fiziksel CPU veya çekirdek başına bazı yazılım ücretleri. 32 çekirdekli bir sunucuda VM'de çalışan tek bir çekirdek için lisanslanmış bir yazılımınız olsaydı bir denetimden geçersiniz.

Bir VM koymaktan vazgeçirmek istediğim şeyler:

  • Emtia donanımındaki tüm kaynakları kullanmak için zaten çaba harcayan yazılım. Hadoop gibi "büyük veri" çabasının bir parçası olarak çalışan makineler genellikle çıplak metal üzerinde çalışmak üzere tasarlanmıştır.

  • Kaynakları kullanmak için ince ayar yapılacak her şey. Bir veritabanını gerçekten ayarlamaya başladığınızda, kaynak isteyen VM'ler gerçekten işe bir anahtar atacaklar.

  • Zaten büyük bir darboğaz olan her şey. Zaten kendisi ile iyi oynamıyor, muhtemelen başkalarıyla iyi oynamıyor.

VM'leri koymak için oldukça harika olan bazı şeyler var:

  • Boşta oldukça fazla zaman harcayan her şey. Posta ve DNS gibi yardımcı program ana bilgisayarları, özel sunucuları garanti etmek için modern donanım üzerinde yeterli yük oluşturmakta zorlanır.

  • Kendi başlarına iyi (veya kolayca) ölçeklenmeyen uygulamalar. Eski kod oldukça sık bu kategoriye girer. Uygulama sunucuyu almak için genişlemezse, çok sayıda küçük sanal sunucu kullanın.

  • Küçük başlayan ancak büyüyen projeler / uygulamalar. Çıplak metale başlama yerine bir sanal makineye kaynak eklemek (ve daha yeni, daha büyük donanıma geçmek) çok daha kolaydır.

Ayrıca, tek bir ana bilgisayara çok sayıda VM yerleştirmek konusunda abartılı olup olmadığınızdan emin değilim, ancak büyük bir VM: HW oranı için çalışıyorsanız, bunun yerine ESX, Xen, KVM'yi düşünmek isteyebilirsiniz. Windows'da VMware veya virtualbox kullanmaktan çok daha iyi ücret alacaksınız.


1
+1 çok yararlı organize yorumlar - teşekkürler!
kvista

Bir yorum daha - ESX, vb kullansam bile, bir noktada X makinelerini Y çekirdek ana bilgisayarına koymanın bir anlamı olmadığını varsayarım. Temel kurallar nelerdir? Sanallaştırma s / w beyaz kağıtlarının bir yerde bu sorunu ele alması gerektiğini varsayıyorum, ama ne yazık ki kolayca bulamıyorum.
kvista

1
VMware için buradan başlayabilirsiniz: vmware.com/technology/whyvmware/calculator
Cakemox

Referans için: yukarıdaki VMWare bağlantısı başına CPU başına 30 VM'ye kadar yapılandırabilirsiniz. Varsayılan CPU başına 6 VM'dir.
Alex Yursha

4

Sanallaştırma performansının iki noktası vardır.

  • paylaşılan darboğaz
  • öykünme

Paylaşılan darboğazlarda, aynı demirde başka kim var? Sanallaştırılmış bir ortamda birlikte bulunuyorsanız, barındırma iş ortağının size karşı dürüst olmasına çok bağlıdırsınız.

Bence ham performansın (özellikle etkileşim) sorulması gereken ana soru, sanallaştırma sisteminin hangi bölümlerinin taklit edildiği. Bu, kuruluma bağlı olarak değişir. Disk ve ağ tipik adaylardır. Genel bir kural olarak, öykünme, bir eylemi gerçekleştirmenin performans "maliyetini" iki katına çıkarır, bu nedenle herhangi bir donanım gecikme süresi iki kez sayılmalı ve herhangi bir kesinti numarası yarıya indirilmelidir.


1
gördüğüm rakamlar% 96-97'de CPU,% 70-90'da ağ ve% 40-70'de (çıplak metalden)
diskti

1
+1 yorumunun başparmak kuralı yardımcı olur.
kvista


1

AnttiR'den iyi cevap.

Ayrıca, zaman açısından kritik sistemler. Sadece Hyper-V dime çürümesinin (vm yavaşça geride kalması, vm'deki tüm modern işletim sistemlerinin bunu yapması, sık sık yeniden senkronize edilmesinin) geliştirdiğim bazı zaman kritik uygulamalarla iyi oynamadığını anladım. Ayrıca orada "çok" işlemci kullanacağım ve sadece üretimdeki uygulama için 12 çekirdekli bir makine almayı planlayacağım.


Yıldız işareti böyle bir uygulamadır. Görselleştirildiğinde konferans görüşmeleri sırasında çok tuhaf şeyler oluyor.
Ryaner

Veri kayıtları için saat kararlılığı ile ilgili sorunum var;) Teşekkürler cennete Veri beslemesinden güvenilir bir zaman damgası alıyorum, ancak sistem saati sabit olmadığında ağ sorunlarının olup olmadığını bulmak zor.
TomTom
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.