CPU Virtualization Concepts 1

CPU Virtualization Concepts

Bir vSphere ortamında, aynı host bilgisayarda birden fazla sanal makine çalışır. Bir veya daha fazla sanal makinenin yetersiz CPU kaynağı tahsis edilmesi durumu önlemek için, hem host makine hem de sanal makine CPU kullanımını nasıl izleyeceğinizi bilmeniz gerekir.

About the CPU Scheduler

CPU Scheduler, konsolide bir ortamda iyi performans sağlamak için çok önemlidir. CPU Schedulerın  birden fazla işlevi var:

  • Fiziksel CPU’larda sanal CPU’ları (vCPU’lar) zamanlar
  • CPU kullanımı için oransal paylaşım algoritmasını zorlar
  • Simetrik çoklu işlem (SMP) sanal makineleri destekler
  • SMP sanal makineleri için relaxed co-scheduling kullanır
  • CPU scheduler, NUMA, işlemci ve önbellek topolojisinin haberdardır

Çoğu modern işlemcide işlemci başına birden fazla çekirdek bulunduğundan, yüzlerce sanal makineyi çalıştıran onlarca çekirdeğe sahip bir sistem oluşturmak kolaydır. Bu kadar büyük bir sistemde, CPU kaynağını verimli ve adil bir şekilde tahsis etmek çok önemlidir.

About Worlds

Worlds, bir işlemcide zamanlanmış bir yürütme bağlamıdır. World, geleneksel işletim sistemlerinde bir süreç gibidir.

Sanal makine, bir dünya koleksiyonudur veya grubudur.

Aşağıdakileri içeren farklı world türleri vardır:

  • Her vCPU için bir tane
  • Sanal makinenin faresi, klavyesi ve ekranı için bir tane (MKS)
  • Sanal makine monitörü için bir tane (VMM)

CPU scheduler, bir işlemcide hangi World un programlanacağını seçer.

CPU schedulerın rolü, işlemcilere yanıt verme, verimlilik ve kullanım gibi sistem hedeflerini karşılayacak şekilde işlem bağlamları atamaktır. Geleneksel işletim sistemlerinde, yürütme içeriği bir işleme veya iş parçacığına karşılık gelir. ESXi sunucularında, yürütme içeriği bir World e karşılık gelir.

Sanal olmayan makine World leri de var. Bu sanal olmayan makine worldleri VMkernel World leridir ve çeşitli sistem görevlerini gerçekleştirmek için kullanılır. Bu sanal olmayan makine worldlerinın örnekleri arasında  idle, driver ve vmotion dünyaları sayılabilir.

 

CPU Scheduler Features

CPU scheduler CPU kaynaklarını tahsis eder ve CPU kullanımını koordine eder.

CPU scheduler, dynamic  ve transparent CPU kaynak tahsisini kullanır:

  • Fiziksel CPU’larda vCPU’ları zamanlar.
  • Her 2 ila 40 milisaniyede bir fiziksel CPU kullanımını kontrol eder ve vCPU’ları gerektiği gibi taşır.

CPU scheduler, CPU kullanımı için proportional-share algoritmasını zorlar:

  • CPU kaynaklarının fazla tüketilmesi durumunda, tüm sanal makinelerde zaman dilimi fiziksel CPU’lara geçirilir
  • Her vCPU’ya kaynak ayırma ayarlarına göre öncelik verir: paylaşımlar, rezervasyonlar ve limitler.

CPU schedulerın ana görevlerinden biri, hangi World un bir işlemci için programlanacağını seçmektir. Hedef işlemci zaten meşgulse, scheduler, o sırada çalışan World u seçilen kişi adına engelleyip engellememeye karar vermelidir.

Bir world yoğun bir işlemciden boş bir işlemciye geçer. Bir world migration, boşta kalan fiziksel bir CPU ile veya programlanmaya hazır hale gelen bir world tarafından başlatılabilir.

Bir ESXi sunucusu, proportional-share tabanlı algoritmayı uygular. CPU kaynakları aşıldığında, ESXi ana bilgisayarı fiziksel işlemcileri tüm sanal makineler arasında zaman dilimlerinde geçirir, böylece her bir sanal makine, belirtilen sayıda sanal işlemciye sahipmiş gibi çalışır. ESXi sunucusu, her bir World u CPU kaynağı payıyla ilişkilendirir.

Bu kaynaklar birliğine entitlement denir. Entitlement share, rezervasyon ve limitler gibi kullanıcı tarafından sağlanan kaynak özelliklerinden hesaplanır. Programlama kararları verirken, tüketilen CPU kaynağının entitlement oranı World un önceliği olarak kullanılmaktadır. Eğer bir world, entitlement daha az tüketmişse, world yüksek öncelikli olarak kabul edilir ve büyük olasılıkla bir sonraki adım için seçilecektir.

CPU Scheduler Support for SMP Virtual Machines

ESXi, SMP sanal makinelerini verimli bir şekilde çalıştırmak için optimize edilmiş bir eş zamanlama biçimi kullanır.

Co-scheduling, ilgili işlemlerin aynı anda farklı işlemcilerde çalışacak şekilde planlanması için bir tekniği ifade eder:

  • Herhangi bir zamanda, bir vCPU, bir olayı beklerken programlanmış, soyulmuş, önlenmiş veya engellenmiş olabilir. CPU scheduler, bir SMP sanal makinesinde vCPU’ları planlarken eğriyi dikkate alır:
  • Skew, bir SMP sanal makinesinde iki veya daha fazla vCPU arasındaki yürütme oranlarındaki farktır.
  • Bir vCPU’nun eğriliği, ilerleme kaydetmediğinde ancak sibling vCPU’larından biri olduğunda artar.
  • Bir kümülatif eğri bir eşiği aştığında bir vCPU eğri kabul edilir.

 

symmetric multiprocessing (SMP) sanal makine, konuk işletim sistemini ve uygulamalarını özel bir fiziksel işlemcide çalıştıkları yanılsaması ile sunar. Bir ESXi sunucusu bu yanılsamayı, bir SMP sanal makinesinde vCPU’ların co-scheduling destekleyerek uygular.

Eş zamanlama olmadan, bir SMP sanal makinesiyle ilişkili vCPU’lar bağımsız olarak programlanacak ve konuğun tek tip bir ilerleme ile ilgili varsayımlarını ihlal edecek.

Bir SMP sanal makinesindeki her vCPU’nun gelişimi ayrı ayrı izlenir. Eğri, en yavaş vCPU ve diğer vCPU’ların her biri arasındaki devam eden fark olarak ölçülür.

ESXi zamanlayıcı, bir SMP sanal makinesindeki her vCPU için ayrıntılı bir çarpıklık değeri tutar. Bir vCPU, konuk düzeyinde CPU harcıyorsa veya durursa ilerleme kaydettiği kabul edilir. Hipervizörde harcanan süre ilerlemenin dışındadır. Bu hariç tutma, hipervizörün yürütülmesinin her zaman birlikte programlanmayabileceği anlamına gelir. Bu davranış kabul edilebilir çünkü hipervizördeki tüm işlemler birlikte programlanmadan fayda görmez. Eş zamanlamanın faydalı olması durumunda, hiper yönetici iyi bir performans elde etmek için açıkça eş zamanlama talepleri yapar.

Relaxed Co-Scheduling

Relaxed co-scheduling, çarpıklık tespit edildikten sonra sanal makinenin vCPU’larının bir alt kümesini zamanlamaya yönelik bir tekniği ifade eder. Relaxed co-scheduling, sanal makinenin birlikte başlatılması için gereken fiziksel CPU sayısını azaltır ve CPU kullanımını artırır. Boş bir vCPU’da hiçbir scheduler yoktur.

 

Relaxed co-scheduling ile, sadece eğrilmiş olan vCPU’lar birlikte başlatılmalıdır. Relaxed co-scheduling, herhangi bir vCPU programlandığında, arkasındaki tüm diğer vCPU’ların da planlanmış olmasını sağlayarak eğriliği azaltır. Bu yaklaşıma Relaxed co-scheduling denir, çünkü yalnızca bir sanal makinenin vCPU’larının bir alt kümesinin, sapma algılandıktan sonra aynı anda planlanması gerekir. Çok fazla gelişen vCPU ayrı ayrı durdurulur. Geciken vCPU’lar yakalandıktan sonra durdurulan vCPU’lar ayrı ayrı başlayabilir. Tüm vCPU’ların birlikte programlanması, co-scheduling performans avantajını en üst düzeye çıkarmaya çalışılıyor. Boşta çalışan bir CPU ek zamanlamaya sahip değildir, çünkü bir vCPU durduğunda çarpıklık artmaz. Boşta bir vCPU eğri biriktirmiyor ve ortak zamanlama amaçları için çalışıyormuş gibi muamele görüyor. Bu optimizasyon boşta kalan konuk vCPU’larının fiziksel işlemci kaynaklarını boşa harcamamasını, bunun yerine diğer sanal makinelere tahsis edilmesini sağlar. Örneğin, iki fiziksel çekirdeğe sahip bir ESXi sunucusu, eğer sibling vCPU’ları co-scheduling yapmadan boşta çalışıyorsa, her biri iki farklı sanal makineden bir vCPU kullanıyor olabilir.

Yorum bırakın