UDK Server-side Script Profiling

Hi everyone, I’m working on a 40-64 player multiplayer game that is currently in late alpha/early beta phase. I’ve tried many things to try and profile the server side, but have gotten no luck.

Does anyone know if there’s a way to get a PROFILEGAME or similar output from serverside? Or any alternative methods for finding big performance costs on server besides the obvious? (Traces, tick logic, too much replication)

Another thing I’ve been curious about is if there’s specific config settings or launch flags that are optimal for servers. We are currently pushing into very high single-core performance servers just to maintain stable 30-45 sfps for 40player match. Even with all that, it does dip regularly.

1 Like

Assuming this is for a dedicated server?

Also assuming you’ve tried triggering a

ConsoleCommand("PROFILEGAME 10"); on the server during gameplay?

Pretty sure I also tried this in the past and no capture was performed.

I’d also be interested to know if you get this to work.

The biggest performance hit by far in my experience are the network relevancy checks. Depending on your NetUpdateFrequency for each replicated actor, the server is performing line checks for every connected player. So 64 players with 500 replicated actors, you could be making 32,000 line checks per frame (obviously a crude example and very dependent on game type).

An easy win is dynamically scaling this frequency depending on the state of the actor. You can also combine this by forcing a relevancy check with bForceNetUpdate when an actor needs to change (for actors that don’t have much going on).

You also need to be aware of your network bandwidth limit (2048 channels). Each replicated actor uses a single channel. In my case, my game can have 10’s of thousands of actors in the world that need replicating. For this i use pools (single actors that replicate base info on many actors that don’t replicate directly).

Sorry if i’m stating anything obvious. Just throwing in my 2 cent.

1 Like

Hello, thanks for your response.

Yes I have tried many ways of running the profile command but none successful so far. I can check some net relevancy tests again but in the past we’ve had issues where all the checking ended up being more expensive than the thing itself.

For the actors channels, we don’t have issue on that side and don’t have too many replicated actors, and use some pooling tricks as well for managing health of destroyable world objects.

1 Like