Pages

5 Nisan 2011 Salı

Bir DBA’in penceresinden UNIX/LINUX sistem performansını izleme araçları



IBM AIX için;

  • IBM AIX sistemlerde en son kullanılan ve yoğun CPU çalıştıran kullanıcı proseslerini bulma 
#  ps -ef | egrep -v "STIME|$LOGNAME" | sort +3 -r | head -n 15

  • Thread ve proseslerin sınırlandığı thread ve CPU ları listeleme. TID kolonu threadID’yi belirtir.Thread kavramını kısaca açıklamak gerekirse; thread, bir program aracılığıyla kontrol sıralı akış demektir. Thread’ler pek çok açıdan faydalıdır. Birden fazla CPU üzerinde paralel olarak çalışabilmekte ve böylece tek bir programın çalışmasını, birden fazla CPU arasında bölümlendirebilmektedir. Bunun yanında veritabanı performansında önemli olan, örtüşen eşzamanlı olmayan I/O işlemleri (ASYNC I/O) ve grafiksel kullanıcı arayüzleri gibi bazı sunucu programlarında da, pekçok thread işbirliği yaparak bu tarz programların daha efektif çalışmasını tetikler.
#  ps -efmo THREAD

  • Oldukça yüksek CPU kullanan prosesleri listeleme
#  ps -eo pid,pcpu,args | sort +1n

  • CPU kullanmakta olan bilinen bir prosesin thread ID sini(TID) bulma
#  ps -mp <PROSES_PID_NO> -o THREAD

  • Yüksek fiziksel bellek tüketen prosesleri listeleme
#  ps -eo pid,vsz,args | sort +1n

  • Top prosesler, CPU kullanımı, fiziksel bellek tüketimi, sanal bellek kullanımı, paging alanı ve I/O yüklemesi gibi sunucu kaynak kullanımı gözlemleme
#  topas

  • IBM AIX sistemlerde paging alanını en fazla kullanan 10 kullanıcıyı listeleme
#  svmon -Pgt 10

  • IBM AIX sistemlerde en fazla fiziksel bellek kullanan 10 kullanıcıyı listeleme
#  svmon -Put 10

  • IBM AIX sistemlerde fiziksel bellek kullanımını izleme
#  svmon -u | more
#  svmon -P | more

  • IBM AIX sistemlerde en fazla bellek tüketen prosesleri bulma
#  svmon -P -t 1
#  svmon -Pau 1


LINUX için;

  • Kernel seviyesi, kullanıcı CPU kullanımı, sistem CPU kullanımı, nice time(çeşitli proseslerin CPU’nun sağlayabildiğinden daha fazla kaynak talep ettiği durumlarda, yüksek öncelikli prosesler düşük öncelikli proseslerden daha büyük CPU zaman yığını alır. -20 en yüksek öncelik, 15-20 arası ise en düşük önceliktir ve bu öncelikler prosesin nice değerinin kalitesini tanımlar), boşta bekleme zamanı, sırada bekleme zamanı ve saniye başı kesinti miktarlarını işlemci başına gözlemleme
#  mpstat

  • Tüm işlemciler için 2 saniyelik aralıklarla 5 adet istatistik raporu hazırlama
#  mpstat -P ALL 2 5

  • %CPU kullanımına göre prosesleri listeleme
#  ps -e -o pcpu,cpu,nice,state,cputime,args

  • Linux sistemde en fazla CPU kullanan 10 kullanıcıyı listeleme
#  ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10

  • En fazla CPU tüketen 10 prosesi listeleme
#   ps -auxf | sort -nr -k 3 | head -10

  • Belirli bir proses için tüm thread’leri listeleme
#  ps -C <process> -m -o pid,tid,pcpu,state

  • Bellek kullanımı yönünden prosesleri listeleme
#  ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS

  • Sistemde o an kullanılmayan(kalan) RAM miktarını MB değerinden listeleme
#  free -m

  • 120 numaralı PID için CPU kullanımını en çok %30 ile sınırlandırmak
#  cpulimit -p 120  -l 30

  • Çalışan bir prosesin CPU zaman yığını kullanım önceliğini değiştirme (413 PID numaralı prosesinin önceliğini 14 ile değiştirme) 
#  renice 14 413

  • oracle kullanıcısının tüm proseslerinin ve ayrıca 120 PID nolu prosesin CPU zaman yığın kullanım önceliğini 5 olarak değiştirme. Her kullanıcı kendi önceliğini değiştirme hakkında sahiptir.Bu sebeple aşağıdaki işlem oracle kullanıcısı ile oturum açıp yapılmalıdır. Bununla beraber kullanıcı 20 değerinden düşük öncelikli nice değerlerine sahip prosesleri başlatamaz. Bunun yanında önceliği artırılan değerler o değerin altına tekrardan düşürülemez.
$  renice +1 120  -u oracle -p 5


Solaris için;

  • CPU’nun çoğunu en çok kullandığı muhtemel olan thread’leri listeleme
#  prstat -Lmc -p <pid>
#  prstat -L -p <pid> 1 1

  • PID, kullanıcı, durumu ve thread ID yi listeleme
#  ps -Le -o pid,user,s,lwp,pcpu,args | awk '$3 != "S" { print }'

  • Çalıştırılabilir uygulamalar, anonim veri ve dosya sistemi aktivitesi için detaylı paging kullanımını listeleme
#  vmstat -p

  • Bir proses tarafından bellek kullanım detayını listeleme
#  pmap -x <pid>

  • Solaris sistemde kullanıcılar tarafından KB değerinde ne kadar disk alanı kullanılmakta
#  quot -af

  • Proje ID bazlı sistem kaynak kullanımını listeleme
#  prstat -J

  • 2961 numaralı zombi prosesin biçilmesi
$  preap 2961


Tüm UNIX/LINUX sistemler için;

  • iostat komutu pek çok kolon içermektedir, bu kolonlar içinden %user ve %sys kolonları altındaki bilgiler çok önemlidir. Eğer belirli bir süre boyunca  (%user+%sys) > 80 olduğunda, bu olay CPU da darboğaz yaşandığını belirtmektedir. Bununla beraber ortalama CPU’nun %90 üstünde ve  gecikmelerle birlikte %70 den fazla olduğunda, CPU kaynaklarını dikkatlice izleyip buna önlem almaya başlamanızı tavsiye ederim.
#  iostat

Bununla beraber disklerin I/O işlemlerinde bir performans sorunu yaşayıp yaşamadığını anlamanın en hızlı yoludur. Bu komut c parametresiyle çalıştırılırsa sadece CPU 'ya, d parametresiyle çalıştırılırsa sadece disklere ilişkin istatistiksel bilgiler edinilir.

  • kuyrukta bekleyen ve çalışan çekirdek iplikleri (kernel threads), bellek, sayfalama,diskler, kesmeler, sistem çağrıları ve CPU aktivitesi ile ilgili istatistiksel rapor alma. ilk parametre kaç saniyede bir rapor üretileceğini, 2. parametre ise ekrana kaç defa çıktı verileceğini belirtir. Eğer 2. parametre verilmezse istenen zaman aralığı için ekrana sürekli olarak sistem bilgisi basılacaktır.
#  vmstat 1 10

  • sar komutuyla sisteme ilişkin CPU, bellek, diskler, kesmeler, ağ arayüzleri, TTY, kernel tabloları, vs. bilgilerini toplar, raporlar ve /var/log/sa/sardd olarak kaydeder (dd: 10, 25 gibi bir sayıdır ve günü ifade eder). Önemli bir parametresi d 'dir ki bu parametreyle kullanıldığında gerçek zamanlı disk I/O istatistiklerine erişilebilir.
#  sar

0 yorum:

Yorum Gönder