High CPU utilization on only one CPU out of 4 CPUs
Hi all,
I am doing some high load testing on my Linux OS - 4 CPU box. I observe that all CPUs are at ~20% utilization except CPU-1 which is 50% CPU utilization. From sar command I came to know there are total 3000 interrupts/s happening in system. And all there interrupts are under "i050/s" column and are bound to to CPU-1. Below is the sar output: 04:57:40 CPU i000/s i003/s i008/s i009/s i014/s i050/s 04:57:50 0 12.09 0.00 0.00 0.00 0.00 0.00 04:57:50 1 0.00 0.00 0.00 0.00 0.00 2562.94 04:57:50 2 87.91 0.00 0.00 0.00 0.00 0.00 04:57:50 3 0.00 0.00 0.00 0.00 0.00 0.00 Now the "cat /proc/interrupt" output shows that most of these interrupts are coming from "eth4" Now below are my questions: 1. What is this i050/s means? 2. Why are they so many interrupts coming from eth4? 3. Why are they always uses CPU-1? Is there any way I can distribute load to other CPUs? |
If I am not mistaken alot of network interfaces can only use 1 CPU. This is because by design (in the old days when multicore systems didnt exist yet)
Please anyone, if I tell something wrong, correct me |
Probable Solution
One thing is simple if you have so many interrupts comming from eth4 then your system is receiving that much of packets.Now the point is that did you try to distribute load of eth4 by doing something like this
#echo f > /proc/irq/<eth4 interrupt no.>/smp_affinity Next check your driver whether it has enabled NAPI or not. If you have NAPI enabled then the outcome that you are finding is expected because of certain reason and if your card is not supporting multique,RSI,etc. feature. If your driver has disabled NAPI then you can distribute eth4 load by writing in /proc file. Let me know If this works or not |
All times are GMT -5. The time now is 03:14 AM. |