Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I was just wondering about the CPU usage while downloading data (say, for example, a movie) from the internet. Can anyone tell me, how much is a processor really in use while downloading and, in the first place, is a processor even really required during download?

share|improve this question

migrated from May 16 '10 at 10:55

This question came from our site for professional and enthusiast programmers.

A processor is definitely required to perform the download, you need processing power to convert the bit patterns received at your network adapter to the data representation you want (ie. you need to run the TCP/IP stack). That being said, the network and storage device are likely to be orders of magnitude slower than a low-end CPU, so it is nothing you should worry about in general.

For instance, one of the small and fast TCP/IP stacks, will run on an ATMega88. This is an 8-bit processor designed to run at 20 MHz. In theory, that processor is more than enough to control a TCP/IP stack, and therefore enough to download data.

Of course when it gets down to that kind of CPU's, the amount of data that can be downloaded might be limited by the clock frequency. The limiting factors will be the clock cycles needed to run the TCP/IP stack, and the clock cycles needed to store the data onto some kind of storage.

If we take your example, and do some very unscientific, off-the-cuff calculations: A 3mbps connection amounts to 384kByte of raw data received per second. If your CPU runs at 20 MHz, it will have something around (20 * 10^6)/(384 * 1024), which roughly equals 50 instructions per raw byte of data received. I am no expert at the TCP/IP stack, but I am guessing, that it would be very difficult to squeeze an implementation to be that efficient. You might want to go for a better processor to get solid throughput at 3mpbs.

Anyways, if you plan to use this to design anything, you should test first with actual hardware and the actual TCP/IP stack you plan to use.

share|improve this answer

None ;) Ok: my phone could do it. Seriously - a low powered computer has not a lot to do with it.

It is still doing SOMETHING, though ;)

share|improve this answer
Not sure what warrants the downvote. I would say the same. If a mobile phone with a 200MHz ARM CPU can manage 7.2Mbps without breaking a sweat, then I don't see an issue with any relatively new x86/x64 CPU and only 3Mbps. – ThatGraemeGuy May 16 '10 at 16:47

this depends on your internet connection type; a while back I was able to help someone get significantly lower CPU usage by switching them from a USB-connected modem to a ethernet-connected one, as the USB is a relatively cpu-intensive method (this was an 800MHz pentium 3)

with modern PCs, chances are your CPU speed is not a factor, though

share|improve this answer

You must log in to answer this question.