In general, and understanding the answer may vary by manufacturer and model (and driver, and...), in consumer-grade workstations with integrated NICs, does the NIC rely on the CPU for a lot of help (as is typically the case with a USB controller, for instance), or is it fairly intelligent and capable on its own (like, say, the typical Firewire controller)? Or is the question too general to answer? (If it matters, you can assume Linux.)

Background: I'm looking at connecting a device (digital television capture) that will be delivering ~20-50 Mbit/sec of data to a somewhat under-powered workstation. I can get a USB 2 High-speed device, or a network-attached device, and am interested in avoiding impacting the CPU where possible. Obviously, if it's a 100Mbit NIC, that's roughly half its theoretical inbound bandwidth, whereas it's only roughly a tenth of the 480 Mbit/second the USB 2 "High Speed" interface. But if the latter requires a lot of CPU support and the former doesn't...

Edit Andy's question leads me to expand a bit: The machine will be a PVR and living room computer. The devices are Digital Terrestrial TV receivers (DVB-T), and the data is encoded video from the digital stream (possibly as many as two streams at once, each estimated to be ~20Mbit/sec). Since it's pre-encoded, the CPU doesn't have to encode it on receipt, it just has to write it to disk (SATA-300). The CPU may well be busy doing other things unrelated to the incoming data, though, like (say) decoding and displaying other video or audio, or doing a virus scan, or a video call... OS will be Ubuntu 10.04 LTS or Windows 7. But the question is more just a curious one about the nature of NICs vs. USB controllers vs. Firewire controllers.

  • What's the workstation doing with the data after it comes in? – Andy May 28 '10 at 11:59
  • @Andy: Writing it to disk. Your question prompted me to expand/clarify the question a bit. – T.J. Crowder May 28 '10 at 12:13

The exact amount of CPU utilization will vary by the network adapter (for example, Intel markets a desktop gigabit card as having "increased performance while significantly reducing CPU usage").

However, based on anecdotal evidence, I can assure you that the overhead from your gigabit card will be negligible compared to other CPU-consuming tasks--for example, video encoding/decoding. Copying multi-gigabyte files over a gigabit link barely registers on my CPU meter, even when copying at around 400 Mbit/sec. It's also worth noting that any encrypted tunnel your data might be passing through will also consume much more CPU than your network card--I've noticed about a 10x slowdown copying things over SCP versus NFS or Samba, with a noticeably higher CPU utilization.

I'm not sure how fast your "underpowered" workstation is, but my Athlon X2 4000+ with a GeForce 6600 GT sometimes has trouble decoding H.264 video even at a modest 480p resolution. That said, if you're affected by a similar limitation, you might be able to resolve it by installing a graphics card with hardware H.264 decoding.

  • +1 for a decent graphics card. Modern cards are capable of letting the system fully offload h264 decoding to the graphics card so cpu usage is generally only the cost of reading, decoding audio and sending data to the graphics card. My previous system, AMD 4600+ & ATI 3870, could fully offload 720p h264 leaving 1-4% cpu usage (struggled with 1080 tho) where cpu decoding would fully tie up both cpus and judder badly. Newer graphics cards are even better, a current nVidia GTS240 can fully offload 1080p with 1-2% cpu usage. – Mokubai May 28 '10 at 13:33
  • Thanks. I think it really comes down to the two aspects of your answer. Basically: It depends, but in general, it's unlikely to hit your CPU much. – T.J. Crowder May 29 '10 at 7:15

A machine with a 200MHz processor from the 1990's can saturate a 100mbps Ethernet. I don't think you have anything to worry about. In fact I think you're like two orders of magnitude from having anything to worry about.

  • THanks, but I think you've got the question backward. The question is: Does the NIC need a lot of help from the CPU, like USB does? Or not, like Firewire? Naturally you can saturate either interface, that's not the question. – T.J. Crowder May 18 '10 at 5:30

I've never seen the cpu usage of copying full pelt from machine to machine go above 5% cpu usage on any system I've owned, except for maybe on an old P200 I used to have. I can't say that I'd ever noticed copying from USB devices to be particularly slow or use excessive cpu time, the only times I have noticed is when something like McAfee SystemCrippler is installed and causing the system to grind more than a flour mill set to super-overdrive.

As a side note, your choice of virus protection can seriously affect your hard drive performance and by inference the performance of any storage device.

If you really care about making the NIC do all the work then you want a KillerNIC but I really don't think that the minor CPU usage related to networking is worth the cost.

As rob noted, and I expanded on in my message, you can offload a lot of tasks like video decoding to offboard components. You can also purchase software to offload h264 encoding to nVidia cards as well using the Badaboom Media Converter.

  • Before I get any comments about McAfee being a great piece of system protection software... I accept that it may be good, but I cannot accept the crippling effect that it has on even the fastest of modern machines. AVG and others may not be quite as good, but I have to use McAfee at work and that machine was supposed to be better than my home machine, McAfee made absolutely everything painful after it was pushed onto the machine from the network. – Mokubai May 28 '10 at 14:18

As I understand the NIC typically handles only the lowest layers, the physical and data link (in OSI parlance). The rest of the TCP/IP stack is implemented in software. The exception to this is cards with a TCP Offload Engine (TOE), where the whole stack is handled by the card itself. I've heard mixed opinions about whether this is good or not, the big con being having much more limited resources on the card itself compared to the machine in general. But the Q's about m/board NICs, and I think TOE is more common for server level separate NICs. I also understand a poor implementation of the stack in software can be a problem for high speed coms, but my complete guess would be that Linux's stack is nice and efficient!

Interesting quote from Computer Networks, Tanenbaum, 4e:

CPU Speed Is More Important Than Network Speed

Long experience has shown that in nearly all networks, operating system and protocol overhead dominate actual time on the wire.

I'm sure that with a modern processor and only ~50Mb/s and no encoding, you're unlikely to face any CPU problems. Maybe if you do other things simultaneously and this ends up thrashing the HD you may overflow your buffer...

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.