Fiziksel CPU / Sanal CPU Oranı

tarafından 25 Aralık 2018 tarihinde VMware, VMware ESXi, VMware vCenter kategorisine yazıldı.

Merhaba,

Fiziksel sunucular üzerine doğrudan işletim sistemi kurmaktansa fiziksel sunucu üzerine bir hypervisor kurup fiziksel donanım üzerinde sanallaştırma yapmak her zaman için kaynak kullanımı anlamında daha verimlidir.

Fiziksel bir donanım üzerine, ESXi (hypervisor) kurduktan sonra sunucu kaynaklarını kullanarak sanallaştırma yapmış oluyoruz. Sunucu sanallaştırma yaptığımız için mevcut fiziksel CPU sayısından daha fazla miktarda sanal CPU kullanabiliyoruz. Aslında sanallaştırma sayesinde elinizde var olmayan kaynakları da sanal sunuculara tahsis edebiliyorsunuz. Tabi gereğinden fazla sanal CPU yani vCPU kullanmanız size ileride performans problemleri ve stabilite problemleri çıkarabilir. Bundan dolayı fiziksel CPU’nun sanal CPU’ya oranını optimize bir şekilde hesaplamanız gerekiyor.

Ben bu yazımda fiziksel CPU’nun sanal CPU’ya oranından bahsedeceğim ve bunun hesaplama methodlarını anlatacağım. Anlam karmaşası olmaması için yazının devamında aşağıdaki kısaltmaları kullanacağım.

Fiziksel CPU = pCPU

Sanal CPU = vCPU

Vermiş olduğum VMware eğitimlerinde de bana çok sık olarak sorulan sorulardan bir tanesi de pCPU’nun vCPU’ya oranının hesaplanması oluyor. “ESXi’in kurulu olduğu fiziksel sunucuda 24 core var. Biz sanal sunucu oluştururken kaç vCPU oluşturabiliriz?” Bu soruların yanıtını bu yazımda detaylı olarak anlatacağım.

Yukarıda örnek olarak ESXi kurulu bir sunucunun CPU bilgilerini görebilirsiniz.

Yine yukarıda örnek verdiğim ESXi ‘dan powercli ile aldığım bir raporda toplam pCPU ve vCPU miktarlarını görebilirsiniz.

Öncelikle, sunucu sanallaştırma yapıldığında elinizde var olmayan kaynakları da verebilirsiniz. Yani bu şu demek oluyor; 24 Core CPU‘nuz bulunuyor ancak siz ESXi üzerindeki sanal sunucuların CPU’larını topladığınızda belki 96vCPU kullanıyor olabilirsiniz. Aynı benim yukarıda verdiğim örnek gibi. Burada bir kısıtlama bulunmuyor. Ancak bunu sürekli dengede tutmanız öneriliyor. Neden öneriliyor diyorum; çünkü değişen işlem yükleri sayesinde ve oluşan overcommitment’den dolayı performans problemleri yaşayabilirsiniz.

Peki buradaki konfigurasyon nasıl olmalı ve bunun hesabı nasıl yapılmalıdır? Bunun için öncelikle ESXi üzerindeki fiziksel core’un hesaplanması gerekmektedir.

(Fiziksel soket) x (core) = Toplam fiziksel CPU yani pCPU miktarını belirtir. Eğer ortamda HT aktif durumda değil ise virtual machine’e maksimum verebileceğiniz vCPU miktarıdır.

Eğer ortamda HT aktif durumda ise;

(pCPU) x (2 x core) = Toplam vCPU sayısını verir.

Şimdi basit bir örnek ile ilerleyecek olursak;

Her biri 16 core olan 2 fiziksel sokete sahip bir sunucumuz bulunuyor. Bu sunucu üzerinde aynı zamanda HT aktif durumdadır. Bu durumda yukarıdaki hesaplamaya göre ilerleyecek olursak;

(2 soket) x (16 core) = Toplam 32 core bulunuyor. Eğer HT aktif durumda değil ise bir sanal sunucuya verebileceğiniz maksimum CPU miktarıdır. Ancak HT aktif durumda olduğu için hesaplamaya devam ediyoruz.

(32 core) x (2) = HT aktif durumda olduğu için toplam vCPU miktarımız yani sanal sunucuya verebileceğimiz maksimum CPU miktarı 64 ‘dür.

Şimdi asıl soruya gelelim. 64 vCPU kapasiteli bir sunucumuz bulunuyor. Bu sunucu üzerinde kaç adet virtual machine barındırabilirim? Öncelikle yukarıda belirttiğim gibi CPU overcommitment sayesinde siz elinizde var olmayan kaynakları da kullandırabilirsiniz. Bu durumda, 64 vCPU ‘ya sahip 10 tane sanal sunucu oluşturabilirsiniz. Toplamda 640 vCPU atanmış olabilir ancak sanal sunucular bukadar kaynağı kullanamaz. Neden? Çünkü ESXi’in üzerindeki fiziksel kaynak bu kadar değildir. Yani bu kadar CPU verirseniz performans problemi yaşamanız çok olasıdır. Bunun için VMware aşağıdaki oranları öneriyor ve buna göre hesaplama yapmanızı istiyor.

Yukarıda yapmış olduğumuz hesaba göre 64 vCPU kapasitemiz bulunuyor. Bu hesaba göre;

1:1 = Eğer siz ESXi altında oluşturduğunuz sanal sunuculara atanan toplam vCPU sayısını 64 veya daha az tutarsanız herhangi bir performans problemi yaşamazsınız. Bu oranı yanlızca ve yanlızca çok kritik iş yüklerinizin bulunmuş olduğu ortamlarda kullanmanızı tavsiye ederim.

2:1 = Siz burada 2:1 oranını kullanmak isterseniz ESXi üzerinde oluşturduğunuz sanal sunuculara toplamda 128 vCPU kaynak verebilirsiniz. Bu oranı seçtiğinizde herhangi bir performans problemi yaşamazsınız.

3:1 =Siz burada 3:1 ortanını kullanmak isterseniz ESXi üzerinde oluşturduğunuz sanal sunucularda toplamda 192 vCPU kaynak verebilirsiniz. Bu oranı seçtiğinizde ufak da önceki iki konfigürasyona göre düşmeler yaşanabilir.

4:1 = Siz burada 4:1 ortanını kullanmak isterseniz ESXi üzerinde oluşturduğunuz virtual machine’lere toplamda 256 vCPU kaynak verebilirsiniz. Bu oran aslında önerilen en optimal orandır.

Eğer siz burada 5:1 veya 6:1 oranını kullanırsanız ciddi anlamda performans problemleri yaşayabilirsiniz. Eğer VDI ortamı kullanıyorsanız 5:1 veya 6:1 oranlarını kullanabilirsiniz.

VMware tarafında eğer mutlaka bir kurala uymak istiyor ve oranların nasıl olması gerektiğini merak ediyorsanız yukarıda belirtmiş olduğum oranları kullanabilirsiniz. Burada belirtilen oranlar aslında tamamen mimarisel kararlardır. Siz hiç CPU tarafında overcommitment yapmak istemeyebilir ve 1:1 oranında kullanmak isteyebilirsiniz. Evet bu mümkündür. Farklı bir senaryoyu düşünecek olursanız 10:1 gibi bir oranı da kullanabilirsiniz. Tabi bu oran size çeşitli performans sorunları yaşatacaktır. Ancak kullanmanızda bir engel bulunmamaktadır. Overcommitment yapmaz iseniz CPU kaynaklarını daha efektif, verimli bir şekilde kullanamazsınız.

Buradaki oranlar sizin barındırmış olduğunuz sanal sunucular ile de ilgili olduğu için ortama göre değişkenlik gösterebilir. Örneğin cluster’ınızda Database veya SAP ağırlıklı virtual machine’ler bulunuyor ise burada 5:1, 4:1 gibi oran kullanmak çok doğru olmaz. SAP gibi Database gibi yüksek CPU gereksinimi isteyen sanal sunucular kritik olduğu için CPU bazlı performans problemlerinden etkilenmemeleri gerekir. Bundan dolayı 2:1 veya 3:1 oranlarını kullanmak daha faydalı olabilir. Ancak yukarıda da belirttiğim gibi bu tamamen mimarisel bir karardır, kesin olarak şu oranı kullanmalısınız gibi bir durum bulunmamaktadır.

Ayrıca bu tarz hesaplamaları genellikle yeni fiziksel sunucu alımlarında da yaparsınız. Mevcut cluster’ınızdaki vCPU miktarını toplar ve nekadarlık bir overcommitment oranı ile çalıştığınızı hesaplarsınız. Böylece yeni sunucu alırken hangi CPU modeli olacağını ve bunun kaç core olacağı yönünde çeşitli analizlerde bulunabilirsiniz. Tabi büyük bir cluster’ınız var ise bu analizleri yapmak hiç de o kadar kolay olmayacaktır.

Umarım faydalı olmuştur.

İyi çalışmalar.

email

Bu yazı blog üzerinde Tayfun DEĞER tarafından paylaşılmıştır. 2009 yılında açılan blog kısa zaman içerisinde büyük bir izleyici kitlesine sahip olmuştur. Tayfun DEĞER danışmanlık ve eğitimler vermektedir. vExpert 2013-2019, VCP4/5/6, VCP5-DT, VCP-Cloud ve MCSE sertifikalarına sahiptir.Twitter 'dan @tayfundeger veya RSS ile sitedeki değişiklikleri takip edebilirsiniz.