Weird NET_RX softirq behavior

From: Jisheng Zhang
Date: Thu Aug 07 2014 - 05:13:00 EST


Hi list,

I observed one weird NET_RX softirq behavior:


1. CONFIG_RPS=y in kernel config file.

2. only one netdev in the system: eth0. eth0 only has one interrupt which is
all handled by CPU0. eth0 doesn't support RFS_ACCEL

"cat /proc/interrupts" shows

~ # cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3
...
49: 52 0 0 0 GIC mmc1
52: 53 0 0 0 GIC mmc2
56: 430365 0 0 0 GIC eth0
60: 61 0 0 0 GIC mmc0
...

3. RPS and RFS remains disabled as default.

~ # ls /sys/class/net/eth0/queues/
rx-0 rx-1 rx-2 rx-3 tx-0
~ # cat /sys/class/net/eth0/queues/rx-*/rps_cpus
0
0
0
0
~ # cat /proc/sys/net/core/rps_sock_flow_entries
0
~ # cat /sys/class/net/eth0/queues/rx-*/rps_flow_cnt
0
0
0
0

4. But NET_RX seems abnormal
~ # cat /proc/softirqs
CPU0 CPU1 CPU2 CPU3
HI: 0 0 0 0
TIMER: 92386 767 367 263
NET_TX: 6338 0 0 1
NET_RX: 445587 322 983 0
BLOCK: 0 0 0 0
BLOCK_IOPOLL: 0 0 0 0
TASKLET: 150 0 0 0
SCHED: 31414 490 275 179
HRTIMER: 1 0 0 0
RCU: 49029 570 285 182

I'm expecting NET_RX under CPU1, 2, 3 should be zero. Any suggestions
about this abnormal behavior?

Thanks in advance,
Jisheng
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/