Başlangıç > VMware > 120: Esxtop ile CPU analizi

120: Esxtop ile CPU analizi

Esxtop, performans analizi söz konusu olduğunda, bence en favori araç konumundadır. Dolayısı ile, fırsat buldukça esxtop ile performans analizinin detaylarından bahsetmeye çalışacağım. Tabi ki, CPU ile başlamak yerinde olur diye düşünüyorum.

Öncelikle belirtmekte fayda var, service console üzerinde çalıştırdığımız esxtop için bahsettiğimiz hemen hemen herşey vCLI üzerinde çalıştırdığımız resxtop için de geçerli olacaktır. Hatta vSphere5 ile birlikte service console olmayacağı gerçeğine rağmen, ben eski alışkanlık esxtop terimini kullanmayı tercih ediyor olacağım.

Esxtop ile CPU analizine geçmeden önce bazı kavramlardan bahsediyor olmakta fayda var. Örnek olarak, burada göreceğimiz birçok parametre yüzde cinsinden olacaktır. Bu yüzde, belirli bir zaman aralığı (refresh time) içerisinde alınan iki anlık görüntü (snapshot) arasındaki fark baz alınarak hesaplanır. Matematiksel olarak ifade etmek gerekirse,

Esxtop için default refresh time 5 saniyedir. Bu değeri ‘s’ ye tıklayarak değiştirebiliriz. Hatta istediğimiz zaman space tuşuna basarak da değerlerin güncellenmelerini sağlayabiliriz. vSphere Client üzerinde ise 20 saniyelik zaman aralıkları kullanılır.

Bir diğer konu, ilk olarak CPU parametrelerini açtığınızda, bence, okuması çok da rahat olmayan bir ekran karşımıza çıkar. Eğer konsantrasyon merkezim sanal makinalar olacaksa, ilk olarak yaptığım Shift+v ile sadece VM’lerin görüntülenmesini sağlamak. Ardından Shift+n ile GID numarasına göre sıralamakta fayda olacak. Böylelikle karşımızda daha sade ve sabit bir ekran olacaktır. Eğer istersek, ‘2’ ve ‘8’ tuşlarını kullanarak istediğimiz VM’i highlight etme şansımız da var.

Şimdi, genel parametrelere bakalım. Bunları ekranın üst kısmında görebiliriz. Bir not, aşağıdaki görüntü hyper-threading açık bir sunucudan alınmıştır.

1: Sistemin o anki saatini ve ne kadar zamandır (gün, saat ve dakika olarak) ayakta olduğunu gösterir.

2: Kaç tane world’ün aktif olduğunu gösterir. Burada world tanımını açmakta fayda var. World, CPU üzerinde schedule edilebilir birim anlamına gelir. Aslında Windows’dan aşina olduğumuz handle ve proses kavramlarına denk gelir. Group ise world’lerin birleşimidir. Listede gördüğümüz tüm VM’ler aslında group olarak geçer ve vCPU sayısına bağlı olacak şekilde belirli sayıda world’den oluşurlar. Bir vCPU’luk bir VM dört world’den oluşurken, dört CPU’luk bir VM yedi world’den oluşur. Eğer bir VM’in hangi world’lerden oluştuğunu görmek isterseniz, ‘e’ tuşu sonrasında ilgili VM’in GID’sini yazıp görebilirsiniz.

3: Sistemin genel olarak 1,5 ve 15 dakikalık zaman dilimlerindeki ortamalama CPU kullanımını verir.

4: PCPU başına efektif CPU kullanımını gösterir.

5: PCPU başına aktif CPU cycle’ların yüzdesini gösterir. Hyper-threading açık bir sistemde bu değerin, PCPU USED ‘dan büyük olması beklenir. Çünkü aynı core üzerinde çalışan iki logical CPU’nun aynı kaynakları paylaşmasından dolayı, CPU kullanımında efektif olmayan bir kullanım oluşacaktır. UTIL ile USED arasındaki farkta işte bunu görmekteyiz.

6: Bu parametre sadece hyper-threading açık sistemlerde göreceğiz ve benzer mantıkta core başına gerçek CPU kullanımını verecektir.

7: Service Console’un kullandığı CPU değerlerini verir. Sırası ile user time, system time, idle time ve wait time.

8: Sistemin saniyede yaptığı context switch sayısını verir. Context switch en kaba tabiriyle, CPU’nun bir prosesi çalıştırırken, onun durumunu sonradan kaldığı yerden devam ettirebilmek adına saklayıp, başka bir prosesi devreye alması olarak değerlendirilebilir. Context switch’i en çok tetikleyen olgular multitasking ve interrupt’lardır. Sonuçta, bir sistemde saniyede gerçekleşen context switch sayısının belirli bir değeri (bence bol binli değerler) aşmaması tavsiye edilir.

Şimdi asıl sanal sunucular tarafında gördüğümüz değerlere göz atalım.

ID: Eğer world’ler listelenmiş ise, world ID’si, aksi taktirde group ID’sini verir (yukarıda göründüğü gibi).

GID: İlgili world’ün group ID’sini verir.

NWLD: İlgili grubun sahip olduğu world sayısını verir.

%USED: İlgili grubun gerçek CPU kullanımını verir. Burada aslında grubun içerdiği tüm world’lerin toplamını görürüz. Yani NWLD değeri 7 ise, %USED değerini 700’e kadar görmemiz normaldir. Ancak gerçekte bir grup içerisinde CPU kullanma potansiyeline sahip world’ler, vcpu ile başlayan ve VM’deki sanal CPU’ları adresleyen prosesler olduklarından, pratikte (4 vCPU’lu bir VM için) bu değeri 700 değil, maksimum 400 olarak görürüz.

%SYS: Grubun VMkernel içerisinde gerçekleşen sistemsel aktivitelerde ya da interruptlar sonucunda geçirdiği zaman. Örnek olarak bu değeri yüksek görüyorsak, VM yoğun IO gerçekleştiriyor olabilir. Genelde 0 ile 1 arasında görürüz.

%OVRLP: VMkernel içerisinde, bir grup proses edilirken, interrupt gibi sebepler sonucunda başka grupların proses edilmesi için harcanan süre. Bu değerin yüksek olması, fiziksel hostun yoğun IO altında olmasından kaynaklanıyor olabilir.

%RUN: Bir world’ün yada grubun schedule edilebilmesi için gereken süre. %USED’dan farklı olarak burada %SYS ve %OVRLP parametreleri de hesaba katılır.

%WAIT: Grubun, her hangi bir sebepten dolayı beklediği süre (bu değere idle olduğu süre de dahildir). Bu değer, NWLD * %100 üzerinden değerlendirilmelidir.

%RDY: Bence en önemli parametrelerden biri. Bir grubun schedule edilmeye hazır olduğu ancak kuyrukta beklediği süre (%10’un üzerinde olmaması tavsiye edilir). VM üzerinde eğer CPU limit tanımlanmışsa, bu değerin yüksek olduğunu göreceksiniz. Aslında bu zamanı %MLMTD parametresi de vermektedir. %RDY değeri %MLMTD değerini kapsar. Diğer bir sebebi, hostun CPU kaynağı açısından yoğunluk yaşıyor olması olacaktır. Böyle bir durumda birçok VM az miktarda kalmış CPU kaynağı için mücadele edecek, birbirlerini bekleyecek ve %RDY değerleri artacaktır.

%IDLE: Grubun atıl beklediği süre.

%CSTP: Birden fazla vCPU (SMP) kullanan VM’lerde, proseslerin farklı CPU’lar üzerinde aynı anda schedule edilebilmeleri için beklenen süre. Bu yüzdendir ki, “Sanal sunucularınıza sadece ihtiyaç duydukları kadar vCPU atayın” şeklinde bir best-practice vardır. Özellikle host tarafında da CPU sıkışması varsa, VM üzerinde ciddi bir yavaşlık farkedeceksiniz demektir.

%SWPWT: Belleğin swap yapılması durumunda beklenen süre. Bu süre de %WAIT parametresine dahildir.

Tüm bu bilgiler ışığında, aşağıdaki formülü de yazıyor olmamız herhalde yanlış olmayacaktır:

%RUN + %RDY + %WAIT + %CSTP = %100       (neredeyse :))

Kategoriler:VMware Etiketler:
  1. Alper
    19.09.2012, 15:39

    Merhabalar,

    Gerçekten çok açıklayıcı olmuş. Teşekkürler.
    %CSTP değeri ile alakalı bir sorum olacak. “Sanal sunucularınıza sadece ihtiyaç duydukları kadar vCPU atayın” ibaresini biraz açıklayabilir misiniz? Burada tam olarak ne oluyor da 2 cpu ile rahat çalışabilen bir VM’e, ihtiyacından fazla olarak 4 cpu verdiğimizde VM yavaşlıyor?

    Kolay gelsin,

  1. 24.05.2012, 11:40

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

w

Connecting to %s

%d blogcu bunu beğendi: