We are using net.ether82557 driver. It is frequently taking 100% CPU for several seconds. Can someone explain in what scenarios will it take so much of CPU usage and how to overcome this problem?
Well the first question to ask is, is the driver functioning properly while it’s taking 100% cpu or is it malfunctioning? I don’t know how you would know for sure that it is functioning properly, but you probably can figure out if it is not.
Under what circumstances might it be functioning properly?
Well, if you have a relatively slow processor and this is a gigabit connection, which has Cat 6 cables and gigabit hubs and is receiving close to the limit, sure I can see where it might be using up all available cpu to transfer the data. If the data is being sent with a protocol, lowering the priority of the driver might help. If the data is being streamed, then lowering the priority might cause data loss.
If it is malfunctioning, I would first think about whether the interrupts are working properly. Is any other device sharing the interrupt? If so, can it be removed.
Your comments helped me to understand the situation. The driver seems to be working fine and the bandwidth requirements are also taken care of. The problem is that the CPU usage by the driver suddenly shoots up to 100% and stays there for about 10-15 sec. This is making other tasks to slow down or quit their execution completely in worst cases.
If you run the ‘nicinfo’ command what do you see reported? Is your card running in Full Duplex? Any errors being reported?
It would also help to know what you are using the network connection for. Things like ftp’ing a large file can account for heavy CPU use by the Ethernet driver for example.