You are an unregistered user, you can register here
Navigation

Information

Site

Donations
If you wish to make a donation you can by clicking the image below.


 
Go Back   The Unreal Admins Page > Forums > Unreal Admins > Unreal Tournament 2003/2004 > UT2003/4 Server - Windows Specific

Reply
Thread Tools Display Modes
  #1  
Unread 10th November, 2003, 12:10 PM
guyver1 guyver1 is offline
Dominating
 
Join Date: Oct 2002
Location: Uk.gif
Posts: 141
Default

my boxes at wireplay are dual CPU setups.

my Q is

does the UCC process for running servers support dual CPU's or does it simply run off one of the CPU's?

also i run all my servers as services via FireDaemon, within the settings when u create the server theres some tick boxes that allow you to specify which CPU's the process will use.

has any1 got any experience with firedaemon/Dual CPU configs, that could share some knowledge, i would like to load balance my servers correctly.

also the boxes are win2k pro, does win2k use both CPU's equally or does it use only one??

cheers

Leon.
Reply With Quote
  #2  
Unread 10th November, 2003, 12:16 PM
guyver1 guyver1 is offline
Dominating
 
Join Date: Oct 2002
Location: Uk.gif
Posts: 141
Default

i thought a little bit more info wouldnt go amiss

boxes are Dual P3 800's with a gig of RAM ( unsure of type but possibly PC100/133 given the age of the hardware )

im currently running 3 game servers as services via firedaemon, along with vnc access and an irc bot that sits in irc and can report CPU/mem usage via an irc alias.

other than that thats it, the only other stuff running is your bog standard win2k services etc and the OS.
Reply With Quote
  #3  
Unread 10th November, 2003, 04:15 PM
HuntrCker HuntrCker is offline
Dominating
 
Join Date: Nov 2002
Location: USA.gif
Posts: 145
Default

From everything I have read, no UCC does not take advantage of multiple processors. I have a dual cpu windoze box running firedaemon - but I only have 1 gamer server running on it ATM.

From the posts on this forum as well as elsewhere, firedaemon could allocate the specific ucc process to one or both cpus. I've read that the system uses the one or both of the processors so allocating each game server to a specific processor may increase processor efficiency. On the contrary, I've also heard mention that windoze automatically performs the same function so not tweaking via firedaemon is necessary.

I'm going to throw up a second server on the dual processor windoze box so I'll follow-up this thread when I get a chance in the weeks to come.
__________________
Hunt®¢k® [admin]
CATALYST.UT03.CTF [38.118.161.199:7877]
CATALYST.UT04.CTF [38.118.161.199:8077]
CATALYST.UT04.1v1.UTC [38.118.161.197:8077]
CATALYST.UT04.1v1.TTM [38.118.161.197:7877]
CATALYST.UT04.Demo.1v1 [38.118.161.198:7777]
Reply With Quote
  #4  
Unread 10th November, 2003, 05:30 PM
DeadMeat DeadMeat is offline
Godlike
 
Join Date: Feb 2003
Location: USA
Posts: 275
Default

Hmm, how to put what people have written books on into a small post...

Queueing theory 101 a la MS: In MS's OS's, you can run multiple programs and programs can be written to have multiple threads. Computers running multiple threads do things in small time chunks. The OS is responsible for doling out time slices of CPU use to these threads. The assignment is done based on a lot of different factors such as the "state of the thread" (e.g. Does it have a high priority? Is it waiting on the Disk drive, or other input? Has it been in the queue for CPU use for a long time?).

With two CPUs, the OS can assign two threads to run at the same time rather than each thread having to wait in turn. E.g., a bank with multiple teller windows VS one with a single window. You wait in a single queue until a teller is available. Of course, the OS is constantly re-arranging the people standing in the queue.

Now, how does this apply to UT? Well, in order for a program to be multi-threaded (and therefore use two CPU's at the same time), it has to be written that way. If the app needs to have threads that spawn off and then come back with info to the main thread, this can be very complicated code (unlike things like web server which spawn off child threads that do their thing and then die). I am pretty sure that UT does not use multi-threading for most of it's code.

So, running a single UT server on a dual CPU box does not DIRECTLY improve performance. However, remember that Windows has many programs that are running at all times. So you do get indirect improvement in that when UT needs a slice of CPU, it's more likely to get it without waiting in the queue. (like a bank with two windows open...) So, the effect of two CPU's is to cutback on the time spent waiting in the queue.

OK, I think I've reached the TMI point... hopefully this will help people understand better.

GL HF
|LCN|DeadMeat
--
I may be a coder in real-life, but I don't play one in UT!
Reply With Quote
  #5  
Unread 10th November, 2003, 08:29 PM
guyver1 guyver1 is offline
Dominating
 
Join Date: Oct 2002
Location: Uk.gif
Posts: 141
Default

ok so disregarding my 3 2k3 servers at mo, how does the win2k OS use 2 CPU's when all you have on the HDD is a clean install of the OS, are all the defualt services and processes handled equally by both CPU's or is the entire OS handled by the primary CPU or a bit of both??

the reason i ask is that the answer to that Q would affect how i assign my 3 servers to each CPU.

eg, if the OS is handled by both CPU's then i can load balance the 3 2k3 servers over both CPU, BUT if the OS is handled by CPU 1, then i could load balance by only putting 1 server on CPU1 and the other 2 on CPU2

or i could dimply use the firedaemon tick boxes and specify that all 3 servers use both CPU's

thanks for the info so far
Reply With Quote
  #6  
Unread 11th November, 2003, 04:27 AM
50BMG's Avatar
50BMG 50BMG is offline
Godlike
 
Join Date: Aug 2002
Location: USA
Posts: 451
Default

Hi.

I have quite a bit of experience with an IWill DVD-266R motherboard system running 2 1ghz PIII processors and 512MB ram. About 2 years worth.

MultiThreading:

[list:dd38064eb8]For certain, UT G.O.T.Y., all revisions, were not written to use multithreading architecture directly. I cannot speak about UT2k3 from direct knowledge, but it behaves like it is written the same way.

However, this does not mean that multi-cpu boxes don't offer any advantages as servers, particularly UT. They do.

I have experimented with Win2k through several different service packs and have come to the conclusion that a trim Windows install with the minimum stable service pack is the best performer. ( This was SP2 for me)

After Months of tweaking, I ultimately decided to let windows control the machines cpu allocation completely. I ran a single UT 436 app and a game Voice server on the box, the latter not being too popular.

I did discover that telling windows to "Optimize for Applications" resulted in the most stable pings for clients. I found that after a day or so, windows allocated one CPU to the UT process completely. It used the other CPU for the running of the server's various components, namely the comm services, the disk caches and console activity.

For a while I ran my redirect server (Apache') in the same box, but moved it to an off site locale to take advantage of a faster internet connection.[/list:u:dd38064eb8]


NIC Configuration:

[list:dd38064eb8]Oh yeah... almost forgot... I ran multiple network cards, and dedicated one to only a stripped down TCP stack. No netbios or anything else. In fact, only the TCP protocol was bound to this adapter, no services. This NIC was then set as the game's interface using "-multihome" on the command line.

I was convinced that this worked smoother, but my main reason for leaving it this way was it made traffic monitoring simple.[/list:u:dd38064eb8]

CPUs, Memory and Disk:
[list:dd38064eb8]
Much experimentation was devoted to the quantity and type of memory, disk storage, CPU type, and overclocking.

While there were differences in local server performance, I ultimately gravitated to the configuration which gave the best reliability.

Hard Disk:
[list:dd38064eb8]
I started with a Striped RAID Array. This was only an advantage while loading and performing system maintenance. Since I used enough memory to run the entire application suite without swapping anything to disk, an ordinary 20GB drive would have been quite enough. The RAID array was of no benefit to the game at all.[/list:u:dd38064eb8]

MEMORY:

[list:dd38064eb8]The fastest memory seems to be best. This was two, 256mb 2700DDR REGISTERED sticks for me. Other memories seemed to have tradeoffs in motherboard performance in other areas. I did not experiment with parity memory. One thing I did learn, was not to use TOO MUCH MEMORY. More than 512mb seemed to significantly increase memory swap times. This caused an impact on the system overall and the game. I don't recommend more memory than you will actually use, it just increases the swap file size and times.

I told UT to use 128MB and figured windows at about 90-150mb. This put me in the 300mb range and the sticks I liked were 256mb each so 512 was the smallest increment I could use. In general, use as few sticks as possible providing that the memory controller stays in interleave mode.[/list:u:dd38064eb8]

CPUs:
[list:dd38064eb8]
My system was purchased at a time when the industry had just started talking about a PIII cpu which eventually was released as "TUALITIN". The P4 was just on the market, with that reduced pin count package that intel eventually dropped.

As a result of this timing, I did not get a Universal Socket 370 motherboard capable of the 512K cache TUALITIN CPUs, but rather could only run up to the 256k cache COPPERMINE processors.

One of these CPUs ( both having the same intel CPU SPEC) ran with considerably less power consumption than the other. It also ran fastest when overclocked. When I experimented with single CPU configurations, it was with this CPU.

[list:dd38064eb8]P.S. - In order for Windows to install with the Dual CPU architecture enabled, be certain to install with both CPUs present. Then, once the software is up and running, one can be removed to test various hardware configurations.[/list:u:dd38064eb8][/list:u:dd38064eb8][/list:u:dd38064eb8]
O.S. Considerations:
[list:dd38064eb8]
I tried both Linux (with the then new SMP kernel) and Windows 2000. There were some issues arising out of my RAID hardware, since I was determined to use a RAID array, as I said.

This meant that Windows 2000 would have to wait until SP2 to work correctly and boot from the RAID partition.

Linux installed easily enough, but getting the SMP kernel to work correctly was quite difficult. I was never satisfied with what I was able to achieve. I eventually stopped trying with Linux. It was Red Hat's Professional Networking 7.2 package, also new at that time. I am sure that today the result would be different.

The OS (Win2k now) seemed to provide best performance, as I said earlier, when it made all the choices involving CPU allocation. I kept the memory over commit down to a factor of 2, which also kept the swap file to a minimum. Windows performance was set to "Optimize for Applications". This was a bit counter intuitive for me, since all other versions of Windows ran better with "Server" weighting, but alas that's the way it worked best.

I even ventured into Windows 2000 Server for a while. It was not reliable enough on the hardware to be satisfactory, and I eventually dropped back to just Windows 2000 Pro. I did try many service packs but stayed with SP2 ultimately.

One thing I did decide about software, was not to run a software firewall on the server box. Whenever I did, there was impact on the game that was not there if it was run on a box external to the server, or on a dedicated hardware firewall device.[/list:u:dd38064eb8]

I 'm not sure what else might be pertinent to you, so I'll stop being so chatty about this topic now. Let me know if there's anything else I can contribute.

(Sorry about my first post being cut off, the unrealadmin server burpped just when I submitted it. Probably a DOS attack or maintenance or something.)
Reply With Quote
  #7  
Unread 11th November, 2003, 12:21 PM
guyver1 guyver1 is offline
Dominating
 
Join Date: Oct 2002
Location: Uk.gif
Posts: 141
Default

ahhh your post got cut off!!
Reply With Quote
  #8  
Unread 11th November, 2003, 07:52 PM
guyver1 guyver1 is offline
Dominating
 
Join Date: Oct 2002
Location: Uk.gif
Posts: 141
Default

the problem i have is that my only access to the boxes is via VNC, the servers are about 200 miles from me, and are run by the company i work for.

so i limited to what i can actually do.

eg. i cant go playing around with the hardware etc.

the best i can do is tweak the OS as best i can for optimal application performance.

but on saying that, is a firedaemon service considered an application or a background process??
Reply With Quote
  #9  
Unread 13th November, 2003, 12:29 AM
Azazel's Avatar
Azazel Azazel is offline
Administrator
 
Join Date: Jul 2002
Location: UK
Posts: 2,408
Default

Firedaemon is an app that does nothing more than take the crap task of registering and creating services and makes it a nice gui instead.
If you just want UT as a service and want to lose whatever processes Firedaemon takes up (which I would suspect would be minimal), check this page out which details how to setup SETI as a service.
http://www.geocities.com/lwddemon/setiservice/
Principal is there for any application to be run as a service.

With regards the dual-CPUs and 3 servers, if windows is left to its own devices it will just work out which is the best cpu at the time to run the server on.
I would reckon in most cases server 1 would run on CPU1, 2 on CPU2 and 3 would come back to CPU 1 ... unless the overall usage of CPU1 was more than CPU2 after firing up server 2 ... if that makes sense ...

The other option is to force which CPU to use which can be a bonus as the wireplay servers are gametype specific.
iirc cpu intsenve wise the games are (from least to most)
DM - DOM - BR - CTF
Maps play a large part but thats roughly right (I think)
So .. if you was running say 2 10 player DM servers and 1 10 player CTF server .. I would personally (as an example) force the 2 x DM to run on CPU2 and the CTF to run on CPU 1.
Reply With Quote
  #10  
Unread 13th November, 2003, 01:25 AM
50BMG's Avatar
50BMG 50BMG is offline
Godlike
 
Join Date: Aug 2002
Location: USA
Posts: 451
Default

Just a comment about dedicating an app to a CPU...

If the CPUs are the same, then assigning a process of any kind to a particular CPU can have unintended latency consequenses.

For instance, when you assign a process to a CPU, say CPU0, you make it so that that process cannot execute on another CPU, say CPU1 even if CPU0 is busy executing another task (like a system service). This is because when you elect to run your process on a particular CPU, that won't prevent windows from assigning other threads to that CPU too if the need arises.

For this reason, unless there is a difference between CPUs (I.E. instruction set, cache type or the like, which is a risky configuration to run anyway), the best policy is often to let windows decide dynamically. The situation may arise that an open CPU is available if windows is allowed to assign it to your task.

There is another option you might try, and that is to assign a server app a slightly higher priority than normal application priority.

This is something I have done for applications like a Game Voice Server because it's timebase needs to be as jitter-free as possible.

So, for example, if a particular game session has a typically wide swing in ping, this might be something to help lessen the extremes.

This is getting to be an interesting thread.
[list:e0a96c3c10][list:e0a96c3c10]P.S. - Be sure to install VNC as a system service, it will allow you to get most all of the pop-ups that may occur.

Also, Azazel is correct that the map makes a difference. In my experience, maps with large areas where many players can congregate within line of sight of one another at once, take the most CPU time to process. Particularly in the newest server revisions like 451[/list:u:e0a96c3c10][/list:u:e0a96c3c10]
Reply With Quote
  #11  
Unread 13th November, 2003, 10:38 AM
Naked_Ape's Avatar
Naked_Ape Naked_Ape is offline
Holy Shit!!
 
Join Date: Jun 2003
Location: .gif
Posts: 584
Default

Second that, 50BMG.

You're better off leaving CPU scheduling to the OS. It should be understood that the biggest saving from CPU/process binding is that it saves some cache line reloads. It's not that the process get more run time or something like that. The CPU it's running on is still going to be interrupted every quantum to go look for higher priority processes etc.
But if you keep the same set of processes on the same CPU chances are that their data will remain in the cache and that is a win. To achieve this, both Linux and Windows use something known as CPU affinity which means processes are automatically scheduled to the last CPU they scheduled on if it is possible.

Indeed the better way to improve performance and reduce scheduling latency is to raise the priority.
Reply With Quote
  #12  
Unread 13th November, 2003, 03:48 PM
HuntrCker HuntrCker is offline
Dominating
 
Join Date: Nov 2002
Location: USA.gif
Posts: 145
Default

Interesting thread indeed.

Quote:
Originally posted by 50BMG
I did discover that telling windows to "Optimize for Applications" resulted in the most stable pings for clients.
Hmm, I'm assuming that you did not run UT2003 as a service (via Firedaemon or another program). I've asked the creator of Firedaemon what his thoughts were (when I first downloaded Firedaemon awhile ago) as to optimizing a windoze server under application or background services, and his reply was to keep it background. His reasoning was that since Firedaemon launches UT2003 as a service, opitimizing the server for background services would be ideal unless you had other apps requiring higher priority.

But, yes under standard conditions when running UT2003 as a regular app, application setting would be ideal.

Also, I did ask the creator of Firedaemon about increasing the priority of UT2003 via Firedaemon. He stated that the maximize prioritization to apply to UT2003 should be High Setting since having it any higher could result in disruption to the timing of system related processes.

Quote:
Originally posted by 50BMG
One thing I did learn, was not to use TOO MUCH MEMORY. More than 512mb seemed to significantly increase memory swap times. This caused an impact on the system overall and the game. I don't recommend more memory than you will actually use, it just increases the swap file size and times.
Huh? You lost me on this one. I have 2 gigs of memory on the dual 933 windoze server and tweaked the server to load system files into memory thus reducing routine file access. For overkill, I also specified bPreloadAllSkins=True under [UnrealGame.UnrealMPGameInfo] just in case this anti-lag setting also applied for servers (usually a client side setting to reduce the lag hitches when other players join in loading their specific skin type). And yes huge maps do uses more system resources especially memory. Are you referring to the systems automatic allocation of swap file size? You could override the system settings and manually set the swap file to any size you see fit.
__________________
Hunt®¢k® [admin]
CATALYST.UT03.CTF [38.118.161.199:7877]
CATALYST.UT04.CTF [38.118.161.199:8077]
CATALYST.UT04.1v1.UTC [38.118.161.197:8077]
CATALYST.UT04.1v1.TTM [38.118.161.197:7877]
CATALYST.UT04.Demo.1v1 [38.118.161.198:7777]
Reply With Quote
  #13  
Unread 13th November, 2003, 04:31 PM
Naked_Ape's Avatar
Naked_Ape Naked_Ape is offline
Holy Shit!!
 
Join Date: Jun 2003
Location: .gif
Posts: 584
Default

Quote:
Originally Posted by HuntrCker
Interesting thread indeed.

Quote:
Originally posted by 50BMG
I did discover that telling windows to "Optimize for Applications" resulted in the most stable pings for clients.
Hmm, I'm assuming that you did not run UT2003 as a service (via Firedaemon or another program). I've asked the creator of Firedaemon what his thoughts were (when I first downloaded Firedaemon awhile ago) as to optimizing a windoze server under application or background services, and his reply was to keep it background. His reasoning was that since Firedaemon launches UT2003 as a service, opitimizing the server for background services would be ideal unless you had other apps requiring higher priority.

But, yes under standard conditions when running UT2003 as a regular app, application setting would be ideal.

Also, I did ask the creator of Firedaemon about increasing the priority of UT2003 via Firedaemon. He stated that the maximize prioritization to apply to UT2003 should be High Setting since having it any higher could result in disruption to the timing of system related processes.

Quote:
Originally posted by 50BMG
...was not to use TOO MUCH MEMORY....
Huh? You lost me on this one.
Could this have to do with the way Windows treats memory? Unlike Linux (and most other Unix-clones) which aggressively fills memory with buffers and won't swap stuff to disk until it is deemed necesarry, Windowsen seem to prioritize keeping memory "free" (e.g. I have 1GB in this computer, 760MB of that is availiable). I'm very curious about the motivation for this behaviour, does anybody know?

I don't know exactly what Windows does when you select a particular optimization but I guess it will give a slight scheduling advantage to processes who have input focus (ie an active windows). This shouldn't have much effect on a server where no such apps are (should be) running.

And about raising priorities: IIRC the NT process model can have 32 different priority levels with a certain amount of dynamic adjustment. Is there a tool that allow you to set a specific priority rather than the crude TaskManager interface?
And you should never need to set it to anything higher than "Above Normal" really. And don't listen to people who tell you to set it to "Realtime"... :sigh:
Reply With Quote
  #14  
Unread 13th November, 2003, 04:37 PM
50BMG's Avatar
50BMG 50BMG is offline
Godlike
 
Join Date: Aug 2002
Location: USA
Posts: 451
Default

You are quite correct HuntrCker to point out that Optimize for apps might not be best when running UT under Firedaemon

My thinking cap was on my own experience (not with Firedaemon) so that's why the advice read that way.

On the memory issue, there actually is a more rational explanation.

There is a difference between running less memory and running too small a swap file for the memory you have.

Windows memory managment is typically poor compared to other systems. It seems windows can box itself into a corner (thru allocation and deallocation) where it's only way to continue, is to swap tasks to disk to recreate usable contiguous space. I suppose this is more likely to happen with memory leaks and at map rollover (processing stats and the new map etc.) but the effect is that the world comes to a halt while it's going on.

On some systems I've seen this is a 1/2 to 2 second pause, depending on the type of disk, amount of memory and economy settings.

I must say I haven't bothered to try reducing the swapfile size much below the default windows 2x memory. I used to run with no swapfile (back in the 95 days) but that probably won't even be allowed any more. Running without a swapfile resulted in mysterious situations where no tasks were running and there was not enough free memory according to windows. A restart was the only way out. I have to believe that running a swapfile smaller than the installed memory would result in the same situation, even if it were allowed.

So, the most sense was to run enough memory to retain everything without having to swap tasks to disk continuously but not enough so that a complete memory swap is an inordinate amount of time.

Of course as you point out, it's always a good idea to customice the INI and other settings to the memory you have and the type of operation you want. (You might want to explain how you pre-loaded those system files)

Oh, and I also agree that raising priority too high has dire consequenses.

Thanks for the comments.

Sorry Naked_Ape, your post came in while I was composing.

Ok, I've read your post now Naked'. I think you and I are pretty much in agreement, thanks.
Reply With Quote
  #15  
Unread 14th November, 2003, 02:05 AM
guyver1 guyver1 is offline
Dominating
 
Join Date: Oct 2002
Location: Uk.gif
Posts: 141
Default

ok currently im running all 3 boxes identically:

3 ut2k3 servers run as services via firedaemon

interact with desktop is ticked so i get a dos window.
and each server is set to "Above Normal" for thread priority.

one thing i do have at hte mo is i have the performance setting set to 'Aplication'

would it be worth setting that to Background as stated above?

good thread
Reply With Quote
  #16  
Unread 14th November, 2003, 04:29 AM
50BMG's Avatar
50BMG 50BMG is offline
Godlike
 
Join Date: Aug 2002
Location: USA
Posts: 451
Default

Spurious post
Reply With Quote
  #17  
Unread 14th November, 2003, 04:29 AM
50BMG's Avatar
50BMG 50BMG is offline
Godlike
 
Join Date: Aug 2002
Location: USA
Posts: 451
Default

I think it's definitely worth a try to change to Services preference.

However, would you consider taking some data when you do? Try to do it somewhat scientifically, record some ping variations for clients with known delay to the server.

Particularly, try to plot how the pings are effected by the number of players. Don't forget to include the map being played in each data set.

Collect some data, then change the preference, and do it all again.

I would expect to see a reduction in the spread of one dataset or the other. Often these changes are not perceptable during play, but become more obvious with a sufficently large database.

You can evaluate priority settings in this manner too.

I am sure others watching this thread must have their own sets of weights and measures they apply to server tuning.

In any case, it should be amusing to see what you find out. :gulp:
Reply With Quote
  #18  
Unread 14th November, 2003, 12:44 PM
Azazel's Avatar
Azazel Azazel is offline
Administrator
 
Join Date: Jul 2002
Location: UK
Posts: 2,408
Default

With regards to the not specifying a CPU.
imo Guyver is running a game server and 99% of times it should be doing nothing else, there should be no rogue system services just deciding to do something.
Also .. if he had a single CPU system the server would have to share its resources anyway.
Also ... windows services will choose the best CPU to use to run its other services, so if CPU2 has less load than CPU1 windows should run the service there.

Just my 2cents
Reply With Quote
  #19  
Unread 14th November, 2003, 01:30 PM
50BMG's Avatar
50BMG 50BMG is offline
Godlike
 
Join Date: Aug 2002
Location: USA
Posts: 451
Default

Spurious post #2
Reply With Quote
  #20  
Unread 15th November, 2003, 03:31 AM
50BMG's Avatar
50BMG 50BMG is offline
Godlike
 
Join Date: Aug 2002
Location: USA
Posts: 451
Default

Spurious post #3 :withstupid:
Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT +1. The time now is 06:49 AM.


 

All pages are copyright The Unreal Admins Page.
You may not copy any pages without our express permission.