Sistem Performansi


Merhaba ,

Kendi bilgisayarimda archive fayillarima bakdigimda guzel bir mekale buldum. Bu mekale kimin tarafindan yazilmish bilmiyorum.  Buna ragmen sizinle paylashmak istiyorum.

Bu makalede Linux sistemlerin performansıyla ilgili sınırsız zaman aralığı için rapor alınmasını sağlayan sysstat paketiyle gelen araçlardan sar, iostat ve 1994’ten beri UNIX türevi sistemlerde ön tanımlı olarak bulunan vmstat aracının kullanılması ve çıktılarının analiz edilmesi anlatılacaktır. Sistem performansını  denetleme/raporlama araçlarından oluşan sysstat paketinde sar, sadf, mpstat,

iostat ve sa araçları sunulmaktadır.

Öncelikle standart bir systat paketi kurulumu anlatılacaktır.

$ wget http://perso.orange.fr/sebastien.godard/sysstat-7.1.3.tar.gz (1)
$ tar -zxvf sysstat-7.1.3.tar.gz (2)
$ cd sysstat-7.1.3 (3)
$ ./configure (4)
$ make (5)
$ su (6)
# make install (7)

Bazı satırların açıklamaları:

1- http://perso.orange.fr/sebastien.godard/sysstat-7.1.3.tar.gz adresinden systat paketi indirilir.

4- systat paketi sistemle uyumluluk için yapılandırılır. systat paketinin kurulum dizini gibi ayarlamalar burada verilecek parametrelerle değiştirilebilir. Ayrıntılı yapılandırma bilgisi için ./configure –help komutunu çalıştırabilirsiniz.

7- Buraya kadarki tüm komutlar root olmayan bir kullanıcıyla, make install komutu ise root olarak verilmelidir.

Systat araçlarını kullanabilmek için root kullanıcısı için crontab dosyasına aşağıdaki satırların eklenmesi gerekemektedir:

*/10 * * * * root /usr/lib/sa/sa1 -d 1 1
59 23 * * * root /usr/lib/sa/sa2 –A

Burada dosyaların ön tanımlı yerlerinde olduğu varsayılmıştır. Kurulum esnasında bu yerler değiştirilmişse crontab ‘a eklenecek satırların ona göre düzenlenmesi gerekir. Ayrıca systat paketine belirtilen dizinlere yazma hakkı verilmelidir. crontab ‘da yapılan değişikliklerle her 10 dakikada bir sistem bilgisi güncellenecek ve her gün 23:59 ‘da /var/log/sa dizinine sistemin o günkü performans bilgilerinin özetinin olduğu bir dosya yazılacaktır.

vmstat, iostat ve sar komutları sistemin son açılışından şimdiye kadarki durumuyla ilgili raporlar sunar. Bu komutlarla yapılan sistem denetleme işleri çeşitli betiklerle (shell script) de yapılabilir, ancak bahsedilen sistem araçları hem daha pratik hem de daha detaylı çıktılar vermektedir. Örneğin; aşağıdaki komutla o anki kullanıcıya ait en fazla CPU harcayan 15 aktif proses görülebilir.

# ps -ef | egrep -v "STIME|$LOGNAME" | sort -r | head -n 15

1

Vmstat

 

Bu komut, kuyrukta bekleyen ve çalışan çekirdek iplikleri (kernel threads), bellek, sayfalama, diskler, kesmeler, sistem çağrıları ve CPU aktivitesi ile ilgili istatistiksel rapor sunar. CPU performansını denetleme konusunda vmstat, iostat komutundan daha kullanışlıdır. Çünkü vmstat komutu sistemdeki disklerle ilgili detaylı çıktılar vermez ve CPU ile ilgili bilgileri istenen zaman aralığı için ekranda kayan çıktılar üretir. vmstat komutuna verilecek 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. Örneğin; aşağıdaki komutla sistem bilgisi birer saniye aralıklarla 10 defa ekrana yazılacaktır. (vmstat 2 komutuyla sistem bilgisi 2 saniye aralıklarla sürekli olarak raporlanacaktır. Birçok işlemde olduğu gibi bu işlem de Ctrl+C ile sonlandırılabilir.)

# vmstat 1 10

1

vmstat çıktısındaki bazı sütunların açıklaması:

procs

 

r (running)

Hazır kuyruğunda bekleyen çekirdek ipliklerinin saniye başına ortalama sayısını verir. Bu sayı tek işlemcili sistemlerde 5 ‘ten küçük olmalıdır. SMP (Symmetric MultiProcessing) sistemlerde ise r < 5 x (Ntotal – Nbind) olmalıdır. (Ntotal: toplam işlemci sayısı Nbind: mevcut proseslerin kullandığı işlemci sayısı)

r ‘deki hızlı artış iyiye işaret değildir ve çalışır durumdaki uygulamalar gözden geçirilmelidir. Genelleme yapacak olursak bu sayının 10-15 ‘ten yüksek olmaması sistemin sağlıklı bir durumda olduğunu gösterir.

b (blocked)

Askıya alınmış çekirdek ipliklerinin saniye başına ortalama sayısını verir. Bu iplikler

kaynak, Giriş/Çıkış veya sayfalama yapılmasını beklemektedirler. Kararlı çalışan bir

sistemde b sayısının sıfıra yakın olması beklenir. Hazır kuyruğundaki iplik sayısı (r) aniden çok hızlı artarsa b sayısı da hızla artar. Eğer bellek yükünü kontrol etmek amacıyla prosesler askıya alınmışsa b sayısı askıda bekleyen iplik sayısından ziyade hazır kuyruğundaki iplik sayısını belirtir.

memory

Sanal ve cep bellekler, takas ve tampon alanları, aktif-pasif (inact-active sutünları 2.5.41 ve üstü çekirdeklerde -a parametresiyle görülebilir) bellek miktarlarıyla ilgili bilgi verir.

free

Bu sütunda boş durumdaki ortalama bellek sayfa sayısı gösterilir. Her sayfa 4 KB

boyutundaki gerçek bellek alanlarından oluşmaktadır. Herhangi bir uygulama sona erdiğinde bu uygulamanın kullandığı bellek alanları, persistent pages-kullandığı dosyalar- hariç, hemen free sütununa dahil edilir. Persistent pages nedeniyle free sütunundan okunan değer yeni bir işlem için kullanılabilecek en fazla bellek miktarını yansıtmaz. Çünkü persistent pages alanları, sanal makine belleği başka bir proses için bu alanı çalmadığı veya o dosya silinmediği müddetçe sisteme iade edilmez.

free bellek miktarı gerçek bellek miktarınızdan daha fazla görünüyorsa sisteminiz

muhtemelen thrashing durumunda değildir. Thrashing, sistemin sürekli olarak içeri-dışarı sayfalama yapması olarak açıklanabilir. Sisteminiz daha önceden bir trashing hadisesi geçirdiyse free değerinin her zaman gerçek bellek miktarından daha küçük olacağından emin olabilirsiniz.

cache, cep bellek olarak kullanılan bellek miktarını; buff, tampon olarak kullanılan bellek miktarını ve swpd ise sanal bellek miktarını gösterir.

system

in

Zamanlayıcı kesmeleri de dahil olmak üzere saniye başına ortalama kesme sayısını gösterir.

cpu

us

Çekirdek hariç, kullanıcı işlemlerinin harcadığı CPU miktarının yüzde olarak ifadesidir (usertime ve nice time dahil).

sy

Çekirdek işlemlerinin harcadığı CPU miktarının yüzde olarak ifadesidir (sadece system

time). Sistem çağrılarının harcadığı CPU miktarı burdan öğrenilebilir. Bu yüzdenin yüksek olması sisteme çok yüklenildiğini ve işlerin sistem açısından yolunda gitmediğini gösterir. Çok fazla CPU harcayan prosesler ps komutuyla görüntülenip kill -9 pid ile öldürülebilir.

id

Bu sütun CPU ‘nun boşluk yüzdesini gösterir. Bu sayının yüksek olması sistemin rahat

çalıştığının, yapılan istekleri hızlı yanıtladığının ifadesidir. Hazır iplik kuyruğu boşsa, yani çalıştıracak iplik yoksa sistem her işlemci için wait prosesini çalıştırır.

wa

Yerel disk G/Ç işlemlerine harcanan CPU miktarının yüzde olarak ifadesidir. Bu sayının % 25 ten büyük olması disklere çok fazla yük bindiğini veya disklerin dengeli kullanılmadığını gösterir. Bu nedenle G/Ç işlemlerinin hızlı yapılması CPU ‘nun performansını artıracaktır.

NOT: vmstat -s komutuyla çeşitli olay sayıcılara ve belleğe ilişkin istatistiklere erişilebilir. Bu komutu belli aralıklarla çalıştırıp aradaki farklılıkların incelenmesiyle sistemin gidişatına dair önemli fikirler edinilebilir.

# vmstat –s

1

Iostat

 

Bu komutla network file systems ve disklere dair G/Ç ve CPU istatistiklerine erişilebilir. iostat, disklerin G/Ç 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. Parametre olarak diskin ismi de verilip özelleştirilmiş bir rapor aınabilir. -c parametresiyle edinilen bilgiler vmstat komutuyla edinilen CPU bilgileriyle tamamen aynıdır. Yalnız iostat -c gereksiz detaylar verir. Örneğin; vmstat çıktısından okuduğunuz 21 gibi bir sayı, iostat çıktısında 20.94 şeklinde görünecektir.

iostat da vmstat ile aynı şekilde zaman parametreleri alır (Örnek: iostat 1 3 komutu birer Saniye arayla ekrana 3 defa çıktı verir). 2. parametre belirtilmezse iostat da verilen zaman aralığı için ekrana sürekli çıktı verecektir.

# iostat –c

1

# iostat

 1

# iostat 1 3

1

Sar

 

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: 07, 29 gibi bir sayıdır ve günü ifade eder).

# ls /var/log/sa/

1

Sistemde performans sorunu varken bu komutu çok sık çalıştırmak sistem yükünü daha da artıracaktır.

sar komutunun çalışması için sistemde /proc dosya sisteminin var olması gerekir.

sar komutu da vmstat ve iostat komutları gibi parametre verilmeden çalıştırılırsa sistemin son açılışından şimdiye kadar ki genel istatistiksel verileri ekrana yazar.

Bu komutun çok önemli bir özelliği ise hem her işlemci için ayrı ayrı hem de tüm işlemciler için genel istatistiksel bilgiler verebilmesidir. Bu açıdan SMP sistemlerin analizini oldukça kolaylaştırmaktadır.

sar komutunun birçok parametresi mevcuttur. Önemli bir parametresi -d ‘dir ki bu parametreyle kullanıldığında gerçek zamanlı disk G/Ç istatistiklerine erişilebilir.

# sar

1

Tps

 

• Bir saniyede fiziksel diske yapılan ortalama transfer sayısıdır. Transfer edilen verinin

boyutunda bir kısıtlama yoktur.

rd_sec/s

• Diskten okunan sektör sayısıdır. Her sektör 512 byte boyutundadır.

wr_sec/s

• Diske yazılan sektör sayısıdır. Her sektör 512 byte boyutundadır

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: