VMware ESXi Hostunda Yüksek CPU Kullanımını Anlama ve Analiz Etme Yöntemleri
9/14/20265 min read


VMware ESXi Hostunda Yüksek CPU Kullanımı Nasıl Analiz Edilir?
VMware ortamlarında yüksek CPU kullanımı her zaman sanal makinelerin gerçekten yoğun CPU tükettiği anlamına gelmez.
Bazen aynı sanal makineler bir ESXi hostunda yüksek CPU kullanımına neden olurken başka bir hosta taşındığında normal şekilde çalışabilir.
Bu yazıda, böyle bir durumda ESXi tarafında hangi kontrollerin yapılabileceğini ve problemin nasıl adım adım daraltılabileceğini ele alacağım.
Bir VMware cluster ortamında belirli bir ESXi hostuna birkaç sanal makine taşındığında CPU kullanımının beklenenden fazla yükseldiğini düşünelim.
Aynı sanal makineler cluster içerisindeki başka bir ESXi hostuna taşındığında ise CPU kullanımı normale dönüyor.
Bu durumda problemi yalnızca VM'lerin CPU tüketimi üzerinden değerlendirmek doğru olmayacaktır.
Sorunun aşağıdaki katmanlardan kaynaklanma ihtimali bulunmaktadır:
ESXi host yapılandırması
CPU güç yönetimi
NUMA mimarisi
CPU scheduling
BIOS ayarları
Firmware veya driver farklılıkları
Donanımsal performans problemi
Bu nedenle ilk olarak host seviyesinde inceleme yapmak gerekir.
ESXi CPU Kullanımını Kontrol Etme
İlk kontrolü vCenter üzerinden yapabiliriz.
Host → Monitor → Performance → CPU
bölümünden hostun CPU kullanımını inceleyebiliriz.
Ancak vCenter üzerindeki genel CPU yüzdesi tek başına problemi anlamak için yeterli olmayabilir.
Daha detaylı analiz için ESXi üzerinde esxtop kullanılabilir.
SSH üzerinden ESXi hostuna bağlandıktan sonra:
esxtop
komutunu çalıştırıyoruz.
Ardından CPU ekranına geçmek için:
c
tuşuna basabiliriz.
Burada özellikle aşağıdaki metrikler önemlidir:
%USED
%RUN
%RDY
%CSTP
%WAIT
CPU Ready (%RDY) Değerini Kontrol Etme
CPU problemi araştırılırken dikkat edilmesi gereken en önemli değerlerden biri CPU Ready değeridir.
CPU Ready, bir sanal makinenin çalışmaya hazır olduğu hâlde fiziksel CPU üzerinde çalışma sırası beklediği süreyi ifade eder.
Örneğin bir VM CPU kullanmak istiyor ancak ESXi scheduler fiziksel CPU kaynağını henüz VM'e sağlayamıyorsa %RDY değeri yükselmeye başlayabilir.
Yüksek CPU Ready değerleri;
Host üzerindeki CPU yoğunluğuna
Gereğinden fazla vCPU atanmasına
CPU overcommit durumuna
VM'lerin CPU scheduler üzerinde beklemesine işaret edebilir.
Bu nedenle yalnızca VM'in CPU kullanım yüzdesine değil %RDY değerine de bakmak gerekir.
VM'lere Atanan vCPU Sayısını Kontrol Etme
VMware ortamlarında bir sanal makineye fazla vCPU vermek her zaman daha yüksek performans sağlamaz.
Örneğin uygulamanın ihtiyacı 4 vCPU iken VM'e 16 vCPU atanması bazı senaryolarda scheduler'ın VM için kaynak ayırmasını zorlaştırabilir.
VM üzerinde:
Edit Settings → CPU
bölümünden atanmış vCPU sayısı kontrol edilebilir.
Aynı zamanda host üzerindeki toplam fiziksel CPU kaynaklarıyla VM'lere atanmış toplam vCPU miktarını karşılaştırmak faydalıdır.
NUMA Yapısını Kontrol Etme
Çift işlemcili fiziksel sunucularda NUMA mimarisi performans açısından önemlidir.
ESXi host üzerinde NUMA bilgisini görmek için:
esxcli hardware memory get
ve donanım bilgileri için:
esxcli hardware cpu global get
kullanılabilir.
VM'in vCPU ve RAM yapılandırmasının fiziksel NUMA yapısıyla uyumlu olması özellikle büyük sanal makinelerde önemlidir.
Bir VM'in CPU ve RAM ihtiyacının NUMA node sınırlarını aşması durumunda remote memory erişimleri oluşabilir ve performans etkilenebilir.
esxtop içerisinde:
m
ile memory ekranına geçerek NUMA ile ilgili metrikler de incelenebilir.
ESXi Power Policy Kontrolü
Benzer donanıma sahip iki ESXi hostunun performansının farklı olmasının nedenlerinden biri güç yönetimi politikası olabilir.
ESXi üzerinden:
Host → Configure → Hardware → Power Management
bölümü kontrol edilebilir.
Burada örneğin:
Balanced
High Performance
gibi güç politikaları bulunabilir.
Performans problemi yaşayan host Balanced modda çalışıyorsa test amacıyla High Performance kullanılabilir.
Power Policy değiştirildikten sonra CPU davranışı tekrar gözlemlenmelidir.
Burada amaç doğrudan ayarı değiştirmek değil, performans farkının güç yönetiminden kaynaklanıp kaynaklanmadığını doğrulamaktır.
BIOS Güç Yönetimini Kontrol Etme
ESXi üzerindeki Power Policy kadar fiziksel sunucunun BIOS ayarları da önemlidir.
Sunucu BIOS'unda aşağıdaki ayarlar kontrol edilebilir:
System Profile
CPU Power Management
C-States
Turbo Boost
Energy Performance Bias
Performans odaklı bir VMware ortamında üreticinin önerileri doğrultusunda uygun performans profilinin kullanılması gerekebilir.
Örneğin iki ESXi host aynı cluster içerisinde bulunmasına rağmen BIOS profilleri farklıysa aynı workload altında farklı performans gösterebilirler.
Hostları Birbiriyle Karşılaştırma
Problemi tespit etmenin en etkili yöntemlerinden biri çalışan ve problemli hostu karşılaştırmaktır.
Özellikle şu değerler karşılaştırılabilir:
ESXi Version / Build
BIOS Version
Firmware Version
CPU Model
CPU Core Sayısı
Hyper-Threading
Power Policy
NUMA Node Sayısı
Driver Sürümleri
Network Adapter Firmware
HBA Firmware
Eğer aynı cluster içerisindeki hostlardan yalnızca birinde problem yaşanıyorsa bu karşılaştırma oldukça önemlidir.
Örneğin:
Host-A
VM Sayısı : Az
CPU : Yüksek
Host-B
VM Sayısı : Daha fazla
CPU : Normal
gibi bir durum varsa problemin doğrudan VM workload'undan kaynaklandığını söylemek doğru olmayabilir.
Hyper-Threading Durumunu Kontrol Etme
Hyper-Threading durumunu kontrol etmek için:
esxcli hardware cpu global get
kullanılabilir.
Ayrıca vSphere Client üzerinden:
Host → Configure → Hardware → Processors
bölümünden fiziksel işlemci, core ve logical processor bilgileri görülebilir.
Cluster içerisindeki hostların CPU yapılandırmalarının karşılaştırılması faydalıdır.
Firmware ve Driver Kontrolü
İşletim sistemi seviyesinde yapılan kontroller normal görünmesine rağmen sorun devam ediyorsa donanım katmanına geçmek gerekir.
Kontrol edilmesi gereken başlıca bileşenler:
BIOS
iDRAC/iLO
RAID Controller
Network Adapter
HBA
Chipset
CPU Microcode
ESXi sürümü ile kullanılan driver ve firmware sürümlerinin donanım üreticisinin desteklediği kombinasyonlarla uyumlu olması önemlidir.
Özellikle problem yalnızca tek bir fiziksel hostta yaşanıyorsa firmware ve BIOS farklılıkları mutlaka kontrol edilmelidir.
VMotion ile Karşılaştırmalı Test
Problemin VM'den mi yoksa hosttan mı kaynaklandığını anlamak için uygulanabilecek en etkili testlerden biri VMotion'dır.
Test senaryosu şu şekilde uygulanabilir:
VM → Host-A
CPU yüksek
↓
vMotion
↓
VM → Host-B
CPU normal
Ardından VM tekrar eski hosta taşınarak davranış gözlemlenebilir.
Eğer aynı VM;
Host-A üzerinde sorunlu, Host-B üzerinde normal
çalışıyorsa araştırmanın ağırlığını VM içerisindeki işletim sisteminden ziyade ESXi host ve fiziksel donanım katmanına kaydırmak gerekir.
Troubleshooting Sırası
Benzer bir problemle karşılaşıldığında aşağıdaki sıra kullanılabilir:
VM CPU Kullanımı
↓
esxtop
↓
CPU Ready
↓
vCPU Yapılandırması
↓
NUMA
↓
ESXi Power Policy
↓
BIOS Power Management
↓
Firmware / Driver
↓
Host Karşılaştırması
↓
vMotion Testi
Bu yöntem problemin hangi katmanda olduğunu daha hızlı daraltmaya yardımcı olur.
VMware ortamlarında yüksek CPU problemi araştırılırken yalnızca vCenter üzerinde görünen CPU kullanım yüzdesine odaklanmak yeterli değildir.
Özellikle aynı VM'ler farklı ESXi hostlarında farklı performans gösteriyorsa;
CPU Ready, NUMA, Power Policy, BIOS yapılandırması, firmware/driver seviyeleri ve fiziksel host farklılıkları
birlikte değerlendirilmelidir.
Sistem yöneticiliğinde troubleshooting sürecinin en önemli noktalarından biri de problemi oluşturan bileşeni doğrudan tahmin etmek yerine katmanları tek tek eleyerek ilerlemektir.
Aynı workload'u farklı hostlarda karşılaştırmak, bu tür problemlerde sorunun VM'den mi yoksa altyapıdan mı kaynaklandığını anlamanın en etkili yöntemlerinden biridir.
