Fiziksel CPU / Sanal CPU Oranı

Abone Ol İçerikleri Kaçırma
tarafından 25 Aralık 2018 tarihinde Manşet, 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.

5 1 vote
Makaleyi Oylamayı Unutmayın !

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.

Subscribe
Bildir
guest
17 Yorum
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Mehmet
Mehmet

Merhaba,
Örneğin 8 core cpu vermek istiyoruz bunu 1×8 , 2×4 , 4×2 , 8×1 gibi farklı kombinasyonlarda verdiğimizde fark tam olarak ne oluyor, karar verirken neyi gözetmeliyiz ?

avesta
avesta
Reply to  Mehmet

socket sayınızı baz almalısınız. 4 socketiniz var ise cpu tanımlarken socketi maksimum 4 seçmelisiniz.

Fatih
Fatih

Teşekkürler, güzel ve açıklayıcı bir yazı olmuş.

Mahmut Edremit
Mahmut Edremit

Çok faydalı bir konu olmuş gerçekten. Tebrik ederim kaleminize sağlık. 🙂

Yasemin Özer
Yasemin Özer

Mehmet Bey’in sorduğu soruyu bende merak ediyorum, 4×2 ile 8×1 kombinasyonu arasında performans farkı olur mu?

Bekir Köse
Bekir Köse

En iyi performansı almak için, 8 çekirdekli bir sistemde nasıl bir ayarlama yapmalıyım?

Ayhan Taş
Ayhan Taş

Bazı arkadaşlar performans olayını sormuş, hangi kombinasyonu yapalım diye, arkadaşlar socket sayınıza göre verin, 8×1 yerine 4×2 bana göre daha performanslı geliyor iş yükünü hafifletiyor. 🙂

Osman Erdoğan
Osman Erdoğan

Bu soket kombinasyonu ile ilgili bir örneklendirme yazısı yazmanız çok faydalı olur, benim gibi kafası karışan arkadaşlara çok faydalı olur. 🙂

Aykut Kaya
Aykut Kaya

8 core cpu lu bir sistem kuracaksanız 8×1 yerine 4×2 bence daha performanslı olur iş yükü ortak bölünür.

Kadir Ateş
Kadir Ateş

8×1 4×2 2×4 seçeneklerini anlatan bir yazı yazacak mısınız benimde o konuda baya kafam karışık hangisi daha performanslı olur diye?

Enes Aktaş
Enes Aktaş

Ben 8×1 yerine 4×2 yapıyorum ve daha performanslı bir sunucu elde ediyorum açıkçası.

İbrahim Aksoy
İbrahim Aksoy

Fiziksel CPU’yu kaça kadar bölebiliriz, misal 8 çekirdekli bir sistemde, 3 sanal makine 4’er çekirdek verirsek performans düşmesi olur mu?