Oyun sunucusu yönetiminde yüksek oyuncu sayılarına ulaşıldığında karşılaşılan en büyük engel donanım kaynaklarının verimsiz kullanılmasıdır. Sunucu işlemcisi (CPU) üzerindeki anlık yük artışları, ağ paketlerinin işlenmesindeki gecikmeler (lag) ve yetersiz bellek yönetimi, oyuncu deneyimini doğrudan olumsuz etkiler. Yüksek performanslı bir FiveM, Rust veya Minecraft sunucusu işletmek yalnızca güçlü bir sunucu kiralamakla bitmez; işletim sistemi çekirdeğinin (kernel) ve ekran kartı (GPU) kaynaklarının doğru yapılandırılması gerekir.
Genel kullanım için tasarlanmış standart bir Linux dağıtımı, varsayılan ayarlarda güç tasarrufu ve genel işlem dengesini gözetir. Ancak gerçek zamanlı veri akışı gerektiren oyun sunucularında öncelik düşük gecikme (low latency) ve kesintisiz işlem gücüdür. Bu rehberde, sunucu kernel ayarlarını ve GPU kullanımını optimize ederek sistem verimini nasıl artırabileceğinizi adım adım ele alıyoruz.
Oyun Sunucularında Kernel ve Donanım İlişkisi
Linux çekirdeği (kernel), donanım kaynakları ile sunucu yazılımları arasındaki iletişimi yöneten katmandır. Sunucuya gelen her ağ paketi, diske yazılan her veri ve işlemciye gönderilen her komut kernel tarafından sıraya konur ve işlenir.
Varsayılan kernel yapılandırmaları genellikle web sunucuları veya veri tabanları gibi arka plan işlemlerine göre ayarlanmıştır. Oyun sunucularında ise durum farklıdır. Binlerce ağ paketinin milisaniyeler içinde işlenmesi ve sunucu döngüsünün (tick rate) kararlı kalması gerekir. Çekirdek düzeyinde yapılan hatalı bir zamanlama veya yanlış bir bellek yönetimi kuralı, güçlü bir işlemcide dahi anlık donmalara (stuttering) yol açabilir.
Eşzamanlı bağlantıların ve veri aktarımının doğru yönetilmesi bu noktada hayati önem taşır. Sunucu ile istemciler arasındaki anlık iletişim mimarisi hakkında ayrıntılı bilgi edinmek için WebSockets Nedir? Web ve Oyun Sunucularında Canlı Veri Akışı başlıklı rehberimizi inceleyebilirsiniz.
Linux Kernel Ayarları ile Gecikmeyi Düşürme
Oyun sunucularında işletim sistemi seviyesinde performans artışı sağlamak için belirli sysctl ve sistem parametrelerinin düzenlenmesi önerilir. Bu ayarlar, işlemci frekans yönetiminden ağ havuzu genişliğine kadar birçok kritik noktayı kontrol eder.
1. İşlemci Güç Modu (CPU Governor)
Birçok sunucu dağıtımı, işlemciyi varsayılan olarak powersave veya ondemand modunda çalıştırır. Bu modlar, işlemci yükü azaldığında frekansı düşürür ve yeni bir yük geldiğinde frekansı tekrar artırır. Oyun sunucularında frekansın anlık olarak düşüp yükselmesi gecikme dalgalanmalarına sebep olur.
İşlemcinin sürekli en yüksek saat hızında çalışması için CPU governor modu performance olarak ayarlanmalıdır. Bu işlem Linux üzerinde şu komutlarla kontrol edilebilir ve değiştirilebilir:
- Mevcut modu kontrol etme:
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor - Modu performansa alma:
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
2. Bellek ve Swap Yönetimi (vm.swappiness)
Linux çekirdeği, RAM dolmaya başladığında veya boş bellek alanını önbellek olarak kullanmak istediğinde fiziksel bellekteki verileri takas alanına (swap) taşır. Disk erişimi RAM'e göre çok daha yavaş olduğu için oyun sunucusu süreçlerinin swap kullanması şiddetli takılmalara yol açar.
Bellek swap eğilimini düşürmek için /etc/sysctl.conf dosyasına şu parametre eklenebilir:
vm.swappiness = 10
Bu ayar, çekirdeğe RAM tamamen dolma noktasına gelene kadar swap kullanımından kaçınmasını söyler.
3. Ağ Yığını ve Paket Kuyruğu Optimizasyonu
Oyun sunucuları yüksek miktarda küçük UDP ve TCP paketleri işler. Ağ yığınının varsayılan tampon (buffer) boyutları yetersiz kaldığında paket kayıpları ve bağlantı kopmaları yaşanabilir. Aşağıdaki sysctl ayarları ağ performansını güçlendirmeye yardımcı olur:
net.core.somaxconn = 4096: Dinlenen soketler için maksimum bağlantı kuyruğu derinliğini artırır.net.core.netdev_max_backlog = 10000: Ağ kartı tarafından alınan ancak henüz çekirdek tarafından işlenmeyen paketlerin kuyruk sınırını yükseltir.net.ipv4.udp_rmem_minvenet.ipv4.udp_wmem_min: UDP okuma ve yazma tampon bellek sınırlarını optimize eder.
Değişikliklerin geçerli olması için sysctl -p komutu çalıştırılmalıdır.
GPU Optimizasyonu ve Sunucu Tarafı Yük Yönetimi
Oyun sunucularında ekran kartları (GPU) genellikle istemci tarafında grafik işleme amacıyla bilinir. Ancak modern oyun sunucusu altyapılarında, harici grafik işlemcileri sunucu tarafında da kritik görevler üstlenebilir.
GPU Kaynaklarının Sunucu Tarafında Kullanımı
- GPGPU ve Fizik Hesaplamaları: Bazı özel oyun motorları ve simülasyonlar, yoğun matris hesaplamalarını CPU yerine GPU çekirdeklerine devredebilir.
- Medya ve Akış İşleme: Oyun içi canlı yayınlar, kamera kayıtları veya medya akışları sunucu üzerinde işleniyorsa NVENC veya benzeri donanımsal kodlayıcılar CPU yükünü ciddi oranda hafifletir.
- Hibrit Sunucu Mimarisi: Çatallanmış (forked) render süreçleri veya yapay zeka tabanlı NPC davranış simülasyonları GPU hızlandırmasından faydalanabilir.
NVIDIA Kalıcılık Modu (Persistence Mode)
Sunucu ortamında çalışan NVIDIA GPU'larda varsayılan olarak sürücü, GPU'yu kullanan bir süreç olmadığında kartı düşük güç durumuna geçirir. Bir oyun süreci GPU'ya erişmek istediğinde sürücünün tekrar yüklenmesi milisaniyelik gecikmelere (initialization latency) neden olur.
Bu gecikmeyi önlemek için GPU kalıcılık modu aktif edilmelidir:
nvidia-smi -pm 1
Bu komut, sürücünün arka planda sürekli hazır durumda kalmasını sağlar ve anlık donanımsal yanıt süresini iyileştirir.
FiveM ve Diğer Oyun Sunucularında Pratik İnce Ayarlar
Özellikle FiveM gibi yüksek oyuncu kapasitesine sahip altyapılarda, işlemci çekirdeklerinin doğru iş parçacıklarına (thread) atanması ve ağ önbelleklerinin genişletilmesi gerekir.
- CPU Affinity (Çekirdek Sabitleme): Sunucu sürecini (örneğin FXServer) belirli mantıksal CPU çekirdeklerine sabitlemek, işlemcinin çekirdekler arası bağlam değiştirme (context switching) maliyetini düşürür. Linux üzerinde
tasksetkomutu ile bir işlem belirli çekirdeklere atanabilir. - IRQ Balancing: Ağ kartından gelen kesme isteklerinin (interrupts) oyun sunucusunun çalıştığı ana CPU çekirdeğine yük bindirmemesi için ağ kesmeleri farklı çekirdeklere dağıtılmalıdır.
- Disk G/Ç Yönetimi: Oyun sunucuları sürekli olarak harita, oyuncu verisi ve log dosyası okur. SSD/NVMe disk yapılandırmalarında
noatimemount seçeneğinin kullanılması, her dosya okumasında erişim zaman damgasının diske tekrar yazılmasını engelleyerek disk yükünü azaltır.
Özelleştirilmiş bir sunucu mimarisi kurmak ve donanım limitlerini en verimli şekilde kullanmak istiyorsanız Oyun Sunucusu Altyapısı hizmetlerimizi inceleyebilirsiniz.
Sık Yapılan Hatalar ve Performans Kontrol Listesi
Optimizasyon adımlarını uygularken yapılan bazı yaygın hatalar, beklenen artışın aksine sistem kararsızlığına yol açabilir:
- Gerekenden Fazla Sysctl Ayarı Değiştirmek: İnternetten kopyalanan rastgele kernel parametrelerini mantığını anlamadan uygulamak bellek sızıntılarına veya kilitlenmelere neden olabilir. Değişiklikler tek tek uygulanmalı ve test edilmelidir.
- Swap Alanını Tamamen Kapatmak:
swappinessdeğerini 0 yapmak veya swap alanını tamamen silmek, anlık bellek patlamalarında kernel'ın Out-Of-Memory (OOM) killer mekanizmasını tetikleyerek sunucu sürecini aniden kapatmasına (crash) yol açabilir. - Sıcaklık ve Termal Kısıtlamaları (Throttling) İhmal Etmek: CPU ve GPU ayarlarını maksimum performansa getirirken sunucu kasanın soğutma kapasitesi göz önünde bulundurulmalıdır. Aşırı ısınan donanım kendini korumak için frekans düşürür.
- Arka Plan Servislerini Temizlememek: Sunucu üzerinde çalışan gereksiz cron görevleri, izleme araçları veya kullanılmayan servisler işlemci çekirdeklerini işgal edebilir.
Performans kontrol listenizde şu adımların tamamlandığından emin olun:
- [ ] CPU Governor
performancemoduna alındı mı? - [ ] Swap kullanımı
sysctlüzerinden optimize edildi mi? - [ ] Ağ kartı kuyruk boyutları ve UDP tamponları yükseltildi mi?
- [ ] Sunucu sürecine uygun CPU çekirdekleri atandı mı?
- [ ] Varsa GPU kalıcılık modu (persistence mode) aktif edildi mi?
Profesyonel sunucu optimizasyonları, donanım mimarisine özel testler ve ayrıntılı analizler gerektirir. Sunucu altyapınızı güçlendirmek ve sistem mimarinizi optimize etmek için Sunucu Yönetimi ve DevOps sayfamız üzerinden detaylı bilgi alabilirsiniz.
Türkiye merkezli yazılım stüdyomuz F-Development, 2019'dan bu yana 800'den fazla oyun sunucusunda ve farklı ölçeklerde altyapı projesinde performans, güvenlik ve yazılım çözümleri sunmuştur. Sunucunuzun ağ ve donanım altyapısını en yüksek verimle yapılandırmak için bizimle iletişime geçebilirsiniz.