Performans konusunda çoğu zaman önemli olan sistemi kullanan kişilerin algısıdır. Yaptıkları işi beklemeden yapabiliyorlarsa sorun yoktur ama bir kaç saniye bile olsa beklerlerse sistemin yavaş olduğunu düşünürler. Bu bir kaç saniye bazı durumlarda çok kritik olabilir. Mesela bir web sayfası hemen gelmediğinde kullanıcılar beklemeyi bırakıp başka seçeneklere yönelebilir.
Sistem performansını etkileyen temel konular donanım, işletim sistemi, servis programı, uygulama programı gibi konulardır.
Çoğu zaman fiyat performans dengesi tutturmak gerekir. Bu yüzden en gelişmiş donanımı kullanmak mümkün olmaz. Fakat donamımdan kaynaklanan bir darboğazı başka şekilde kapatmak zordur. İşlemci (CPU), Bellek (RAM), Sabit disk (Hard Disk) ve Ağ (Network) dört ana başlıktır. Bunların içinden biri performansı en çok etkileyen bir darboğaza sahip olur. Önemli olan o darboğazın kullanıcılara nasıl yansıdığıdır. Hissedilir gecikmelere neden olmuyorsa problem olarak görülmez.
Kullanılan işletim sistemi de performansı etkiler. Programların işlemci üzerinde ne kadar süre ile, hangi sırada çalışacaklarını ayarlayan işletim sistemidir. Bellek kullanımını işletim sistemi düzenler. Belleğin çalışan programlar tarafından veya dosya sistemi önbelleği (cache) olarak kullandırılması örnek verilebilir. Sabit disk erişiminde de yine işletim sistemi devreye girer. Burada da farklı algoritmalar vardır. Ayrıca dosya sistemi kullanılıyorsa her birinin avantajları ve dezavantajları vardır. Mesela bazıları küçük dosyalarda daha iyi performans verirken bazıları büyük dosyalarda daha iyidir. Ağ erişiminde de işletim sistemini ağın türüne ve hızına göre ayarlamak gerekebilir. Linux sistemlerinde işletim sisteminin temel kısmı kernel ile ifade edilir. Kernel parametre değerleri değiştirilerek ayar yapılabilir. Konuyu anlamadan parametre değerleri değiştirilmemelidir. Bu konuda büyük bir beklentiye girmek ve mucizeler beklemek doğru değildir.
Servis programı ile örneğin web, e-posta, veritabanı sunucu programı gibi programları kastediyorum. Genellikle farklı alternatifler arasından seçim yapmak gerekir. Seçerken performans da göz önünde bulundurulabilir. Bazı noktalar kritiktir. Mesela aramalarda kullanılacak veritabanı indekslerinin oluşturulması gibi.
Performans konusunda uygulama programları ön planda yer alırlar. Diğerlerinde bir darboğaz olmasa bile uygulamadaki bir hata yavaşlık getirebilir. Örneğin uygulama bütün verileri çekip sonra o veriler üzerinde işlem yapmaya kalkarsa yavaşlığa yol açar. Önce düzgün bir arama kriteri ile sınırlı sayıda veriyi çekmeli ve hızlı bir şekilde gelen o verileri kullanmalıdır.
Performans konusu şikayetler gelmeye başladığı zaman ön plana çıkar. O nokta bazı işlemler için geç olabilir. Linux üzerinden örnek vermek gerekirse, sistemin durumuna bakılmak istendiğinde acaba ilk anda sistem hakkında fikir veren uptime, free, top, sar ve çeşitli, stat ile biten mpstat, iostat, vmstat, pidstat gibi komutlar çalıştırılabilecek mi? Zaten yavaş olan sisteme o anda kurmak mümkün olmayabilir. Sistemin normal anında hiç gözlem yapılmadıysa çıktılardaki değerlerin hangilerinin performansı olumsuz etkilediğini anlamak da kolay olmayacaktır. Bununla beraber bazı çıktılar hemen durum hakkında fikir verebilir. Örneğin işlemciler sürekli meşgul mu, boş kalıyorlar mı? Bellek doluluk oranı nedir? Bellek programlar tarafından mı yoksa ön bellek olarak mı kullanılıyor? Disk erişiminde kuyruklar oluşuyor mu? Ağ kapasitesinin ne kadarı kullanılıyor? Transfer süreleri ne kadar?
Güvenlik konusunda olduğu gibi performans konusunda da o sistemi iyi tanımak gerekir. Basit bir örnek vereyim. Solaris üzerinde sistem yükünü gösteren değerler işlemci üzerinde çalışan ve çalışmaya hazır olduğu halde boş işlemci bulamadığı için bekleyen processler üzerinden hesaplanır. Oysa Linux disk üzerinden okuma yazma yapmak isterken bloklanmış (Uninterruptible Sleep State) processleri de hesaba katıyor.
Yedek alma gibi düzenli yapılan bazı işlemler performansı etkilediği için sistemin en az kullanıldığı anlarda yapılmalıdır. Merkezi bir izleme programı ile sistemleri düzenli olarak izleme ve grafikler üzerinden analiz etme sistemin durumunu görmeyi ve en az kullanılan zamanları bulmayı kolaylaştırır. Zabbix, toplanan veriler üzerinden grafikler çizen, izleme amaçlı kullandığım bir program. Bu tür grafikler aynı zamanda en yoğun kullanım zamanlarını da gösteriyor. Sistemin bu yoğun zamanlarda gelen yükü kaldırması gerekiyor. Üniversite e-posta sunucularında mesai bittikten sonra akşam yükün azalacağını düşünürdüm. Sistemleri izleyince farkettim ki akşam saatleri özellikle öğrencilerin daha yoğun kullandıkları saatler oluyor. En az kullanım sabaha yakın saat 5 civarları oluyor. Grafikler aynı zamanda artış eğilimlerini de gösterdiği için önceden tedbir alma imkanı veriyor. Yoksa günün birinde kullanıcı şikayetleri ile yüzleşmek kaçınılmaz oluyor.
Tek bir sistemin yükü kaldırmadığı durumlarda daha güçlü bir sisteme geçmek veya yükü birden fazla sisteme dağıtarak bir sistem üzerindeki yükü azaltmak çözüm olarak düşünülebilir. Yük dağıtma güzel bir yöntemdir. Başka bir yazıda bahsetmeyi düşünüyorum.