Ubuntu Server ortamlarında sistem kaynaklarının etkin yönetimi, sunucunun performansını doğrudan etkileyen kritik bir unsurdur.
Ubuntu Server ortamlarında sistem kaynaklarının etkin yönetimi, sunucunun performansını doğrudan etkileyen kritik bir unsurdur. Process priority ayarlama, CPU zaman dilimlerini ve kaynak erişimini kontrol ederek, kritik uygulamaların öncelikli çalışmasını sağlar. Bu makalede, Ubuntu Server’da süreç önceliklerini ayarlamanın temel prensiplerini, pratik komutlarını ve en iyi uygulamaları adım adım ele alacağız. Özellikle yüksek yük altında çalışan sunucularda, bu ayarlar gecikmeleri minimize eder ve servis sürekliliğini artırır. nice, renice ve chrt gibi araçlarla, standart CFS scheduler’ından gerçek zamanlı politikalarına geçiş yaparak optimizasyon yapabilirsiniz.
Process priority, Linux kernel’inin CPU scheduler’ı tarafından yönetilen bir mekanizmadır. Ubuntu Server varsayılan olarak Completely Fair Scheduler (CFS) kullanır; burada nice değeri -20 (en yüksek öncelik) ile 19 (en düşük) arasında değişir. Düşük nice değeri, sürece daha fazla CPU zamanı tahsis eder. Bu ayar, sistemdeki diğer süreçlerle rekabeti dengeler ve kritik iş yüklerini korur. Örneğin, bir veritabanı sunucusu için düşük nice değeri belirlemek, sorgu yanıt sürelerini kısaltır.
Scheduler politikaları ise daha gelişmiş kontrol sağlar. CFS, adil paylaşımı hedeflerken, SCHED_FIFO ve SCHED_RR gerçek zamanlı (real-time) öncelikler sunar. Bu politikalar, endüstriyel otomasyon veya multimedya işleme gibi gecikmeye duyarlı uygulamalarda vazgeçilmezdir. Ubuntu’da kernel parametreleri ile scheduler’ı yapılandırabilirsiniz, ancak kullanıcı modu araçları öncelikle tercih edilir. Priority ayarlarını anlamak, kaynak tıkanıklıklarını önler ve sunucu verimliliğini maksimize eder. Uygulamada, top veya htop ile mevcut nice değerlerini izleyerek ayarlamalara başlayın.
Nice komutu, yeni bir süreci belirli bir öncelik seviyesiyle başlatmak için idealdir. Sözdizimi: nice -n <değer> <komut>. Örneğin, bir yedekleme script’ini düşük öncelikte çalıştırmak için sudo nice -n 10 rsync -av /data/ /backup/ komutunu kullanın. Bu, -n 10 ile nice değerini 10’a ayarlar ve CPU’yu diğer süreçlere bırakır. Nice değerleri root kullanıcısı için -20 ile 19 arasındadır; normal kullanıcılar 0 ile 19 sınırlıdır. Bu yöntem, cron job’larında cron dosyasına nice komutunu ekleyerek kalıcı hale getirilebilir. Pratikte, yoğun saatlerde arka plan görevlerini böyle yönetmek, ön plan servislerini korur ve sistem dengesini sağlar. Deneme için nice -n 5 stress –cpu 2 komutu ile test edin; htop’ta NI sütununda değişikliği gözlemleyin.
Çalışan bir sürecin önceliğini değiştirmek için renice kullanılır: sudo renice -n <yeni_değer> -p <PID>. PID’yi ps aux | grep <process> ile bulun. Örneğin, Apache httpd süreçlerini önceliklendirmek için PID 1234 ise sudo renice -n -5 -p 1234. Bu, nice değerini -5’e çeker ve CPU erişimini artırır. Toplu işlem için sudo renice -n 15 `pgrep mysql` ile tüm MySQL süreçlerini düşürün. Root yetkisi gereklidir; kullanıcı bazlı sınırlamalar /etc/security/limits.conf ile yönetilir. İzleme için watch -n 1 “ps -eo pid,ni,cmd | grep apache” komutunu kullanın. Bu ayarlar geçicidir; yeniden başlatmada kaybolur, bu yüzden init script’lerine entegre edin.
Yukarıdaki komutlar, Ubuntu Server 20.04 ve 22.04’te sorunsuz çalışır. Nice/renice ile günlük yönetimde %20-30 CPU optimizasyonu gözlemlenebilir, ancak aşırı düşük değerler sistem dengesizliğine yol açabilir.
Chrt, sched_setscheduler() sistem çağrısını saran bir araçtır ve politika değiştirmeye yarar: SCHED_OTHER (varsayılan), SCHED_FIFO (First-In-First-Out), SCHED_RR (Round-Robin), SCHED_DEADLINE. Kullanım: sudo chrt -f -p 50 <PID> ile FIFO politika, öncelik 50 (1-99). Yeni süreç için sudo chrt -r 40 ./myapp. Gerçek zamanlı politikalar root gerektirir ve PREEMPT_RT yaması önerilir. Ubuntu’da low-latency kernel yükleyin: sudo apt install linux-lowlatency. Test için cyclictest ile gecikme ölçün. Bu ayarlar, ses/video işleme veya VoIP sunucularında milisaniye düzeyinde yanıt sağlar.
Kalıcı ayarlar için systemd unit dosyalarını düzenleyin. /etc/systemd/system/myapp.service dosyasında ExecStart=/usr/bin/chrt -r 40 /path/to/app ekleyin, sonra sudo systemctl daemon-reload && sudo systemctl restart myapp. İzleme araçları: rt-app ile simülasyon, perf ile scheduler istatistikleri. /proc/[pid]/sched dosyasında policy/priority’yi kontrol edin. Güvenlik için AppArmor profilleriyle kısıtlayın. Bu yöntemle, sunucu yeniden başlatmalarında priority korunur ve otomasyon sağlanır. Pratik takeaway: Kritik süreçleri RT politikasına taşırken, deadlock riskini önlemek için watchdog timer entegre edin.
Sonuç olarak, Ubuntu Server’da process priority ayarları, sistem mimarisini güçlendirir ve iş kritik uygulamaların güvenilirliğini artırır. Nice/renice ile hızlı müdahaleler, chrt ile gelişmiş kontrol sağlayarak, kaynak kullanımını optimize eder. Düzenli izleme ve testlerle bu teknikleri uygulayın; sunucunuzun performansını ölçülebilir şekilde iyileştirin. Bu yaklaşımlar, kurumsal ortamlarda ölçeklenebilirlik ve stabilite için temel oluşturur.