Linux Performans Analizi ve Performans Takip Araçlarının Kullanımı — I

Tekgoz Sadik
Turk Telekom Bulut Teknolojileri
4 min readNov 24, 2023

Bir Linux çekirdeğine sahip işletim sistemi kurulduktan sonra yapılması gereken en önemli işlem ne olabilir? Bu işletim sistemi üzerinde çalışacak rol ve servislerin kurulumu… Peki bu rol ve servisler için; ne kadar kaynak ayrılmalı? Ya da başka bir açıdan bakmak gerekirse; ayrılan kaynakların ne kadarı kullanılmaktadır? Ayrılan kaynaklar ya çok fazla ise? Ya da ayrılan kaynaklar yetersizse? Veya çok daha kötüsü; ayrılan kaynaklar kılı kılına yetecek kadarsa ve işler işletim sistemi üzerinde yoğunlaştığı anda sistem kaldıramaz, kaynak yetersiz gelmeye başlarsa?

İşte tüm bu soruların cevabını bulacağımız yolculuk tadında makaleler hazırlıyorum. İlk makale daha yüzeysel, ama tüm açılardan, tüm linux dağıtımlarında kullanılabilecek ortak araçların anlatımını içermektedir. Daha sonraki makalelerde, daha derinlemesine vaka analizleri olacak şekilde makaleleri paylaşacağım.

Aslında bu ihtimallerin hepsi, yönettiğimiz sunucu sayısı arttıkça sıklıkla karşımıza çıkıyor. Hepsinin ayrı ayrı tespit edilip, gerekli müdahalelerin gerçekleştirilmesi önemlidir. Boşta duran, kullanılmayan kaynak olması, kaynak yetersizliğinden kaynaklı, hizmet kesintileri ya da hizmet yavaşlığı her zaman başa çıkılması gereken işler olarak karşımıza çıkmakta.

Aslında bu takip etme sürecini profesyonelce gerçekleştiren bir çok uygulama ve hizmet bulunmakta. Ancak son müdahaleyi sistem yönetimi ile görevli sistem yöneticisi olarak bizler gerçekleştirmekteyiz. Biz emin olmadığımız işlemleri gerçekleştirmemeliyiz. Takip işlemini yapan uygulama hatalı ikazda (false positive) bulunduğunda bizim bu hata üzerinde tespitimiz olmadan müdahale ettiğimizde, süreçteki sorumluların başında biz gelmekteyiz. Bu yüzden sorumluluğumuzun farkında olarak davranmamız gerekmekte. Makalelerin çıkış sebebi anlaşılmışsa; hadi başlayalım.

Öncelikle müdahale öncesi durum tespit etmemiz gerekmekte. Yani server üzerinde çalışan süreçlerin ne kadar kaynak tükettiklerini görüntülemeliyiz. Peki hangi kaynakları takip etmeliyiz?

Burada kullanımda olan sunucu üzerindeki servise göre önceliklerimizi belirlemeliyiz. Bu sayede, en büyük şüpheliden, en küçük ihtimal verdiğimiz şüpheliye doğru bir sıralama yapabiliriz. Burada birkaç örnekten bahsedelim:

Uygulama sunucusu ise incelediğimiz server; en büyük şüphelimiz işlemci (cpu) ardından bellek (ram) daha düşük ihtmalli şüphelilerimiz ise ağ (network) ve hafıza (disk) olarak sıralayabiliriz.

File server ise incelediğimiz server; en büyük şüphelimiz hafıza (disk) sonrasında bellek (ram) belki daha düşük ihtimalli şüpheliler ise işlemci (cpu), ağ (network) diye düşünebiliriz.

Web server konusunda gözlem yapmamız gerekirse, en büyük şüphelimiz bellek (ram) akabinde hafıza (disk) akabinde işlemci (cpu) daha sonrasında ağ (network) olarak sıralayabiliriz.

Aslında son örneğimizde tüm ihtimalleri eşitte görebiliriz. Çünkü hepsinden aynı ölçüde başımızı ağrıtabilecek kaynak tüketimine şahit olabiliriz. Ancak diğer vakalarda da kaynakları ayırmaksızın hepsini listeledik. Bu demek oluyor ki; server üzerinde kaynak tüketiminden kaynaklanan bir problemimiz varsa bu her birimden (ram, cpu, disk, network) dolayı olabilir. Bu yüzden aslında diğer kaynakların kontrolünü kenara atmak için değil, acil yapılması gereken kontrollerde öncelik belirlemek için sıralamalar gerçekleştirmek için örnekler verdim.

Bu makale, bir serinin başlangıcı olduğu için, öncelikle temelimizi sağlam oluşturalım, sonra her bir kaynak takibi için neler yapabiliriz tek tek değerlendirdiğimiz ayrı ayrı makaleler hazırlayacağım.

Şimdi kaynak tüketimlerindeki anomaliler ile başlayabiliriz.

Linux üzerinde kaynak tüketimi gerçekleştiren tüm bileşenler bir (process) süreçtir. Önce bu süreçleri takip edebilelim ki, kaynak tüketimlerini bu sayede anlamlı bir zemin üzerinde analiz edebiliriz.

Tespit süreçlerinde kullanılan en temel komutlar ile başlayıp daha detaylı araçlar kullanarak kontrollere geçebiliriz.

Bir sunucu üzerinde yük olup olmadığını gösteren en temel değer “load avarage” yani yük ortalamasıdır. Ortalama yükü görüntülemek için “uptime” komutu kullanılır.

Uptime komutu ile sunucunun ne kadar süre önce başlatıldığı, 3 değer elde edilir. İlk değer komutu çalıştırdığımız andaki sistem saatini verir. İkinci değer sunucu ne kadar süredir kesintisiz çalışmakta olduğu değeri verir. Üçüncü değer sunucu üzerinde aktif kaç oturum olduğu değerini verir. Dördüncü ve son değer ise sunucu üzerindeki ortalama yük değerlerini verir. Yük değerleri ise sırasıyla son 1 dakika, son 5 dakika ve son 15 dakikadır sunucu üzerindeki ortalama yükü ifade etmektedir.

Elimizdeki sunucu dört çekirdekli bir işlemciye sahip olduğunu düşünerek kontrollerimizi sağlayalım. Eğer değerlerden biri “4.00” olarak görecek olursak, bu işlemcinin tam kapasite çalıştığını ve sunucu üzerinde tam kapasite yük olduğunu gösterir. Bu değer ve benzeri yüksek değerler görülmesi durumunda sebeplerini araştırmaya başlamak gerekecektir.

Bir sonraki kontrol aracımız ise bellek kontrolü gerçekleştirmek için kullanmakta olduğumuz “free” komutudur. Bu komut ile sunucu üzerinde bulanan bellek (ram) ve takas (swap) alan bilgilerini görüntüleriz.

Bu komutla kontrollerimizi sağladığımızda da artık sunucu üzerindeki bellek kullanımına hakim olmuş oluruz. İlk değerde toplam bellek ve takas alanı bilgisini, ikinci değerde kullanılan bellek ve takas alanı bilgisini, üçüncü bilgide ise kullanılmayan bellek ve takas alanı bilgilerini görüntüleyerek bilgi sahibi olabiliyoruz.

Hem işlemci hem de bellek kullanımını daha detaylı kullanımları görüntüleyeceğimiz aracımız ise “top” komutudur.

Daha sonraki makalelerde daha detaylı inceleyeceğimiz araç üzerinde özellikle işlemci ve bellek kullanımı yapan işlemleri ve bu işlemleri çalıştıran kullanıcı bilgilerini, işlemci kullanım oranlarına göre görüntüleyebiliyoruz.

Top ile görüntülediğimiz işlemleri tek tek kontrol etmek istediğimizde, bir başka araç kullanmamız gerekmekte. Kullanmayı bilmemiz gereken son aracımız “ps” komutudur.

Ps işletim sistemi üzerindeki tüm süreçleri raporlayabileceğimiz, anlık takip edebileceğimiz aracımızdır.

En başından özetlemek gerekirse, sunucumuz üzerinde yük (uptime — load avarage) olduğunu tespit ettiğimizde, bellek (free) ya da işlemci (top) kaynaklı mı olduğunu anlayıp, bu yakaldığımız sürecin detaylı bilgilerini ps aracını kullanarak görüntüleyebileceğiz.

Yakaladığımız olağan şüpheli sürecin son bir işlemi kalmış oluyor. Bu son işlem, istenmeyen bir süreç ise, bu süreci sonlandırmak (kill) yükten kurtulmanın ferahlığını hissettirecektir.

Daha çok vaka analizi tadında; özünde kaynak tüketimlerini kontrol altında tutmak için, bir sonraki Linux çekirdekli işletim sistemlerinde performans takibi makalemizde görüşmek üzere…

--

--