Multiple cores and 64bit vs 32bit?
#1
Posted 17 January 2013 - 03:04 AM
also is Quake3-UrT-Ded.x86_64 still slower than the 32bit version? Will this be fixed in 4.2?
#2
Posted 17 January 2013 - 04:46 AM
Past teams:
Partners in Terror | The Dark | Team Terror | Noobs Gone Wild | Xor | Blight Gaming | Area 51 Gaming | Team Lzuruha | Besserman6 | Console | No Care Bears | Zing | Pro5 | American Idols | Team Canada | No Defiance | Unlimited Gaming
<3 to the people who built and sustained the North American competitive community over the years. xil, r, vex, icu, bos, .e, '`|v|~, iF, -x-, ill, un, xor, glad & all the rest. thanks for the games
#3
Posted 17 January 2013 - 09:25 AM
don, on 17 January 2013 - 04:46 AM, said:
Thanks don, so I should be allocating cores to each server so I know that they are utilizing all the cores available to me?
don, on 17 January 2013 - 04:46 AM, said:
Can you or an FS team member confirm that the 64bit server application is actually faster than 32bit and I should use the 64bit server?
I am not sure if you are talking about 64bit in general or Quake3-UrT-Ded.x86_64
I would like to use the most efficient architecture for the servers I run.
This post has been edited by x3r: 17 January 2013 - 09:28 AM
#5
Posted 18 January 2013 - 06:48 AM
x3r, on 17 January 2013 - 09:25 AM, said:
Can you or an FS team member confirm that the 64bit server application is actually faster than 32bit and I should use the 64bit server?
I am not sure if you are talking about 64bit in general or Quake3-UrT-Ded.x86_64
I would like to use the most efficient architecture for the servers I run.
Is UrT using an entire core? I've heard figures of 20-30% of 1 core for 14 player servers. UrT is a pretty finicky game, though; I'd advise 1 instance of UrT per CPU for minimal lag/dropped hits. If you're running a pub, 1 instance per core is probably safe. Renting servers, just load 'em up until you're getting complaints. lol.
64 bit code in general runs a tiny bit faster than "equivalent" 32 bit code. I'm sure UrT's 64 bit code isn't optimal lol. I dunno who FS has for coding these days, but if the 4.2 installer is any indication...yeah. 64 bit quake 3 is kind of a hack job at the best of times anyway. Like driller said, people have more than a few issues with 64 bit. I notice most GSPs use 32 bit.
Only garbage CPUs like the original Itanium have a penalty for running 32 bit code. I'd say the rule is as follows:
For modern CPUs, If you have a choice between well-optimized 32 bit and well-optimized 64 bit, go for the 64 bit. If you have the choice between well-optimized 32 bit and questionable 64 bit code, go for 32 bit, unless you need more address space (not the case for UrT).
Past teams:
Partners in Terror | The Dark | Team Terror | Noobs Gone Wild | Xor | Blight Gaming | Area 51 Gaming | Team Lzuruha | Besserman6 | Console | No Care Bears | Zing | Pro5 | American Idols | Team Canada | No Defiance | Unlimited Gaming
<3 to the people who built and sustained the North American competitive community over the years. xil, r, vex, icu, bos, .e, '`|v|~, iF, -x-, ill, un, xor, glad & all the rest. thanks for the games
#6
Posted 20 January 2013 - 03:16 AM
1. You are using a VPS to host game servers, this means you share the processor (and other hardware) with other customers. You cannot physically allocate cores, and allocating "virtual cores" could make things perform worse.
2. You are running the 64bit server binary which is not recommended and the 32bit version is more stable and efficient anyways.
3. You have configured the server with 512 Hunkmegs, which is not needed, optimal setting would be 128, but not higher than 256.
4. The server binaries to my knowledge are single threaded, there for higher clock frequencies will trump multiple cores.
5. I did not see you mention your server network connection. Depending on its speed and number of shared users may also affect your servers performance.
6. If you are new to urt servers, you may want to check out these threads here (some things may be 4.1 specific):
http://www.urbanterr...r-first-server/
http://www.urbanterr...up-guide-tools/
http://www.urbanterr...ic/27825-drdos/
32GB DDR4 3800MHz CL16 · 2x 1TB Samsung NVMe RAID 0 · 16GB Radeon RX 6900XT Liquid Cooled
#7
Posted 20 January 2013 - 07:44 AM
don, on 18 January 2013 - 06:48 AM, said:
I now have 2 servers with a dedicated core on each and 6 jump servers on another core (no lag yet :p).
With 16 players + 4bots it was at 20% CPU, MIGHT be able to host a 64 slot on this, I wouldn't mind trying this, but I don't know if it will handle it or if the Error: Cl_GetServerCommand is fixed, I might just give it a go LOL.
don, on 18 January 2013 - 06:48 AM, said:
Only garbage CPUs like the original Itanium have a penalty for running 32 bit code. I'd say the rule is as follows:
For modern CPUs, If you have a choice between well-optimized 32 bit and well-optimized 64 bit, go for the 64 bit. If you have the choice between well-optimized 32 bit and questionable 64 bit code, go for 32 bit, unless you need more address space (not the case for UrT).
Thanks Driller for pointing that out and don for putting it into perspective, I will continue to use 32bit
Nitro, on 20 January 2013 - 03:16 AM, said:
On the VPS, I have dedicated cores, so it is a lot like a small dedicated server. I have set the affinity and it works.
Nitro, on 20 January 2013 - 03:16 AM, said:
I am running 32bit, I read your server thread a while ago, and you said 32bit was recommend :)
Nitro, on 20 January 2013 - 03:16 AM, said:
This was a long time ago, when I was hosting servers on my home connection, I now run 192mb
Nitro, on 20 January 2013 - 03:16 AM, said:
The servers have a 1000mB/s connection.. way more than enough to run a urt server or 20
Thanks for all the help don, Driller and Nitro :)
I will post the script I used to set affinity in another post (this one is getting long) - it is a modified shell script of Nitro's one.
#8
Posted 20 January 2013 - 07:51 AM
Tested on CentOS 6.3 64bit
Hope this helps someone.
note: This script must be run under a user that has permission to use taskset.
Thanks to Nitro, this script was modified from Nitro's server start / stop scripts.
start.sh
Quote
# change to the script's directory
cd $(dirname $0)
# start the server in the background
./Quake3-UrT-Ded.i386 +set q3urt4 +set fs_basepath /home/<USERNAME>/UrbanTerror42 +set fs_homepath /home/<USERNAME>/UrbanTerror42 +set dedicated 2 +set net_ip <YOUR_SERVER_IP> +set net_port <YOUR_SERVER_PORT> +set com_hunkmegs 192 +exec server.cfg &
# set affinity (-c = number of the core, -p = the process ID)
# note: first core = 0
# note2: all options must be called before any values are given to them
taskset -c -p 0 $!
# write the pid file
echo $! > server.pid
stop.sh
Quote
# change to the script's directory
cd $(dirname $0)
# kill, using the pid file
kill $(cat server.pid)
# tidy up
rm server.pid
This post has been edited by x3r: 20 January 2013 - 09:22 AM
#9
Posted 20 January 2013 - 01:31 PM
Quote
#!/bin/bash
#server settings
ip="83.142.230.13"
port="27960"
name="urt_ctf"
mod="q3ut4"
base="/home/nitro/urt_ctf"
home="/home/nitro/urt_ctf"
#Remove any unwanted config files that were left behind.
rm botlib.log
rm q3ut4/q3config_server.cfg
# change to the script's directory
cd $(dirname $0)
# start the server under screen
screen -AdmS $name ./ioq3ded-UrT.i386 \
+exec ctf_server.cfg \
+set fs_game $mod \
+set fs_basepath $base \
+set fs_homepath $home \
+set dedicated "2" \
+set com_hunkmegs "128" \
+set sv_sanitizeNames "1" \
+set sv_userinfoFloodProtect "1" \
+set sv_floodprotect "1" \
+set sv_loadOnlyNeededPaks "1" \
+set rconpassword "password" \
+set sv_privatePassword "password" \
+set sv_ip2locPassword "password" \
+set net_port $port
#+set net_ip $ip
# net_ip is disabed to allow incoming connections from localhost
# if you enable net_ip option remember to add "\" to the end of
# the previous line.
# write the pid file
echo | screen -list | grep $name | cut -f1 -d'.' | sed 's/\W//g' > urt.pid
# Remove any unwanted files that server creates after starting.
rm q3ut4/q3config_server.cfg
# all done
32GB DDR4 3800MHz CL16 · 2x 1TB Samsung NVMe RAID 0 · 16GB Radeon RX 6900XT Liquid Cooled
#10
Posted 21 January 2013 - 08:08 PM
Quote
I like how you used a screen, that would be handy :)
I am guessing a lot of those server settings are only for Rambetter's binaries?