SRCDS (source dedicated server) bildiğimiz gibi cs:s, cs:go, garry’s mod gibi source tabanlı oyun motorlarında (source gold motoru için HLDS kullanılır) sunucu açmak için kullandığımız programdır.

Öncelikle SRCDS maalesef ki tek cpu’da çalışmaktadır. (Yeni bir srcds motorunda ilerde multi-thread özelliği olursa yada böyle bir motor varsa anlatılan işler ve bilgiler bu motorla uyumlu olmayacaktır) Yani multi-threading yaparak yada multi-core olarak SRCDS’yi kullanamazsınız. Bundan dolayı (eğer büyük bir sunucu açacaksanız) sanallaştırılmış sunucular (donanımsal olanlar dahi) üstünde alacağınız cpu miktarı 20 olsa bile iyi bir performans ve verim elde EDEMEZSİNİZ. Oyüzden sunucuyu açacağınız/alacağınız yerdeki makinenin paylaşımsız/bağımsız kaynaklara sahip olan (vds ve vps olmayan), aynı şekilde sunucunun çalışacağı cpu’da başka uygulama/sunucu çalışmayan, açacağınız sunucudaki oyunda sunucu sağlayan kaliteli bir firmadan oyun sunucusu yada yalnızca normal sunucu sağlayan bir firmadan dedicated makine sağlamanız en iyisi olacaktır. (Türkiye lokasyon olması server list’te üst sırada olmanız için çok önemlidir).

Maalesef ki şuandaki oyun sunucusu sağlayan firmalar paylaşımsız bir sunucu sağlamıyorlar, sağlayanlarda opsiyon olarak sunuyor ve büyük miktarlarda para talep ediyorlar. Bundan dolayı dedicated bir sunucu alacağınızı varsayıp makinedeki aranması gereken özelliklere değinelim. (Arayacağımız özellikler cs:go için yüksek tickrate yada çok modlu sunucu ve garry’s mod’da çok modlu ve yüksek slotlu sunucu için olacaktır) Öncelikle makinemizin tekil cpu performansı ve frekansı ne kadar yüksek ise okadar performans elde edeceğiz. Bilindiği gibi intel tekil işlemci performansında amd’den çok daha üst sırada oyüzden intelden yüksek frekansta olan amd işlemci bulsanız dahi intel kullanmanızı öneriyorum. Ayrıca piyasada xeon ve i7 sunucular var, stabilite için xeon, performans için i7 tercih edebilirsiniz. Sunucunun SSD olması tabiki çok fark edecektir. Oyun sunucunuzda cache/precache ve sunucu açılış hızları büyük ölçüde hızlı olacaktır, lag olmayacaktır. Ram içinde kısmen aynı şeyler geçerli, ram frekansı hızlı sunucu almanız aynı konularda iyi ve etkili bir faktör olacaktır. Windows’mu Linux’mu derseniz ikisi arasında performans farkı yok denecek kadar azdır. Az kaynak kullanımı için linux’u, stabilite için windows’u tercih edebilirsiniz. Hangisi kolayınıza geliyorsa..

Şimdi windows bir dedicated makine aldık, makinede 3-4 tane oyun sunucusu kurduk diyelim. Açık olan bu SRCDS sunucularınız tek bir cpu’da ve önceliği normal olarak açılmış olacak. Sizin bu SRCDS’leri cpu’lara dağıtmanız ve önceliklerini atamanız gerekmektedir. Bunu yapan ücretli/ücretsiz programlar mevcut fakat sırf bu iş için srcds’ye özel yazılmış bilinmeyen ufak bir program var. Bu programı alttan indirebilirsiniz. Programı windows’a atıp çalıştırmanız yeterli olacaktır. Otomatik şekilde srcds’leri cpu’lara atıp önceliklerini yüksek yapacaktır.

.Net Framework gereklidir. Kaç olduğunu bilmiyorum programı açtığınızda muhtemelen uyarı gelecektir.

 

 

Linux için ise şu hem önceliği sağlayan hemde cpu ataması yapan(sadece belirlenen cpu’ya) script var:

Features:
-gives a high priority (nice) to srcds
-gives a RT priority (FIFO) to srcds, with high priority
-uses CFQ IO-scheduler to ensure TF2 has first hand in disk access
-sets task affinity of SRCDS on CPU2, mysql on CPU1 and nginx on CPU3. tweak depending on what you use. I advise leaving CPU0 for other tasks like crons and the like, and for IRQ servicing. Also, don't use irqbalance, or set its CPU mask to keep off your srcds processor.
-sets the clock source to HPET


Install:
-This script requires root access and the schedtool program.
-This script requires manual tweaks. Read it, and make sure you understand what it does. Look up google. Stuff to look for :
    IOQPATH variable might need to be changed for your system (hda, vda, sdb, dm0, ...). If your game accesses multiple disks, you need to duplicate the block as often as needed.
    Nginx/Mysql are just a demo of what you could have running aside of your srcds. Use htop/top on your box to see what is hitting on your resources, and patch script accordingly.
-Copy/paste this in a file such as /root/boost_srcds.sh
-chmod u+x boost_srcds.sh

Now either your server has autorestart or it hasn't. If it has, you want to schedule this script every 10 minutes using cron, so that in the event of a restart, the new server will get boosted soon enough. Here's a cron line for the lazy :

Code:
*/10 * * * * /root/boost_srcds.sh >/dev/null



Script:
#!/bin/sh

# this script uses schedtool where taskset could be used
# at the cost of a three additional loops.

# ensure system clocksource is HPET if available
CLOCKPATH=/sys/devices/system/clocksource/clocksource0/
grep hpet $CLOCKPATH/available_clocksource 2>&1 >/dev/null
if [ $? == 0 ]; then
    if [ `cat $CLOCKPATH/current_clocksource` != "hpet" ]; then
    echo "hpet" > $CLOCKPATH/current_clocksource
    fi
fi

# ensure sda IO scheduler is CFQ if available
IOQPATH=/sys/block/sda/queue/scheduler
grep cfq $IOQPATH 2>&1 >/dev/null
if [ $? == 0 ]; then
    grep '\[cfq\]' $IOQPATH 2>&1 >/dev/null
    [ $? != 0 ] && echo "cfq" > $IOQPATH
    export CFQ="1"
else
    export CFQ=""
fi

# put SRCDS server on CPU2
# - FIFO scheduling, high prio
# - not nice
# - IO scheduling to realtime, high prio (if CFQ available)
pids=`ps -u sorciers | grep srcds | cut -f 1 -d ' '`
chrt -p -a -f 30 $pids
schedtool -a 2 $pids
renice -n -10 -p $pids >/dev/null
[ $CFQ == "1" ] && ionice -c 1 -n 2 -t -p $pids

# put MYSQL on CPU1
pids=`ps ax | grep mysqld | grep -v grep | cut -f 1 -d ' '`
schedtool -a 1 $pids

# put NGINX on CPU3
pids=`ps ax | grep nginx | grep -v grep | cut -f 1 -d ' '`
schedtool -a 3 $pids

# other CPU intensive daemons should be
# using CPU0,1,3

# CPU0 should be busy serving interrupts and most
#      other kernel madness. Keep your srcds out of it.


sadece öncelik ataması yapan script’e ise şu linkten ulaşabilirsiniz: https://ubuntuforums.org/showthread.php?t=1868939&page=2&p=11397595#post11397595

Yani linux kullanıyorsanız srcds için yapmanız gereken işlem öncelik atama ve cpu belirleme olacaktır. (Elbette oluşacak crashlar için auto-restart script yada uygulaması kullanmak zorundasınız, windows’da dahil!)

Hi-Res olayının anlatımı bu yazıda olmayacaktır. İlerki yazılarda SRCDS sunucu kurma, Hi-Res Timer, FPS, Rate ayarlarına değinmeyi düşünüyorum.

Kaynaklar;

https://developer.valvesoftware.com/wiki/Source_Dedicated_Server

https://support.steampowered.com/kb_article.php?ref=5386-HMJI-5162

https://forums.alliedmods.net/showthread.php?t=169154

https://forum.facepunch.com/f/gmodgd/imuj/SRCDS-multi-core-thread-support/1/

ve birçok dış kaynaklar..


2 yorum

Mr.saw · 9 Ekim 2019 13:46 tarihinde

Peki Vds değilde Gameserver [Client] Üzerinden bu artırımı yapmak mümkünmü?

    Admin · 10 Ekim 2019 19:20 tarihinde

    Anladığım kadarıyla oyun sunucusu sağlayan firmaların sağladığı paneller üstünden birşeyler yapabilir miyim diye soruyorsun. Tickrate değerini elverişli değere düşürüp ardından diğer rate değerleriyle uygun oranda düşürüp oynarsanız, ekstradan sunucunuzdaki eklentilerin miktarınıda azaltırsanız ideal bir performans yakalayabilirsiniz.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir