Jump to content
  • Advertisement
  • entries
  • comments
  • views

Networking stress test

Sign in to follow this  


I started a network stress test, and it doesn't look too good.

At around 200 connections, my CPU usage reaches 100%. What's weird is that the server process itself "only" takes 20%. The remaining 80% are in the "SYSTEM" process. I have no idea why. At first i thought i was transfering too much data, but no. Don't tell me that 2000 packets of 50 bytes each can bring Windows XP to its knees.

I profiled the code, it seems 60% of the CPU time is spent in a kernel module called "amdk8.sys" in an unknown function. Then around 8% in "hal.dll", in a function called "HalMakeBeep". Now that's really weird. I don't hear any beep, and i'm not playing any sound.. Around 10% in various functions of "fwdrv.sys". The rest in my code. Huh ?

If anybody has suggestions, or knows what these modules do ("amdk8.sys, hal.dll and fwdrv.sys")...
Sign in to follow this  


Recommended Comments

Don't know how much this'll help, but here goes:

amdk8.sys is the Windows driver for the CPU

hal.dll is Window's library for interfacing hardware (the Hardware Abstraction Layer)

fwdrv.sys seems to be a driver for some firewall programs...are you running a third party firewall?

Share this comment

Link to comment
My guess is that either the XPee firewall is screwing up (likely, it sucks ass) or that you have installed a third-party chunk of firewall soft that sucks more (ZoneAlarm).

Share this comment

Link to comment
Guest Anonymous Poster


Hi. I've been doing a fair bit of network coding lately myself, and what I've been finding is that yes, many cards have a real hard time keeping up with the network. I've discussed this around the office here (I work in a software development shop) and the general concensus seems to be that most of your cheap $20 commodity network cards don't have the high-end features that the more expensive cards have around managing resource scalability. One example of the type of features high-end cards have (it's been some time since this came out so it might be in low-end ones now too) is the ability to collapse interrupts - when a large number of incoming packets come in some cards don't fire more than a small number of interrupts per second which allows the OS to deal with packets in a batch without continuous context switching.

What you might want to do before you spend too much time rewriting your code is see if you can get your hands on a better network card. I don't know how much of what I've said here is accurate (I'm not a device driver writer) but if it is you may be hitting a limitation of your hardware and not of the coding style.


Share this comment

Link to comment
Thank you for your post CXL - i basically found out the same thing than you (although i haven't updated my journal with it). This was the conclusion of some tests many people did in a thread i posted in the Multiplayer and Network Programming forum. Some machines had no problem keeping up with the network load, some others are quickly topping their CPU usage. In any case it doesn't seem to come from my code, because i could reproduce the problem with some minimal code sample.

Share this comment

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!