<div dir="ltr">Hi guys,<div><br></div><div>I apologize if I have this wrong. </div><div><br></div><div><div>Hi,</div><div><br></div><div>I am using an IXIA packet generator to test the networking interfaces (kernel 4.4.52).</div><div><br></div><div>It does not seem like the kernel ever spend more than ~25% of processing during packet reads using pcap/tcpdump. I have tried multiple tcpdump instances at once, and my PCAP read loop is threaded over 4 threads.</div><div><br></div><div><br></div><div>The basic issue is that only one processor is at 100% system (kernel) utilization, while the other 3 processors are mostly running userspace threads (let’s say at 10% utilization each).</div><div><br></div><div>This lead me to look at the interrupt handling:</div><div><br></div><div>cat /proc/interrupts</div><div><br></div><div>116: 2 0 0 0 ICU 129 Level f2000000.ppv22.eth0.link</div><div>117: 0 0 0 0 ICU 39 Level f2000000.ppv22.eth0.cpu0</div><div>118: 0 0 0 0 ICU 43 Level f2000000.ppv22.eth0.cpu1</div><div>119: 0 0 0 0 ICU 47 Level f2000000.ppv22.eth0.cpu2</div><div>120: 0 0 0 0 ICU 51 Level f2000000.ppv22.eth0.cpu3</div><div>121: 0 0 0 0 ICU 55 Level f2000000.ppv22.eth0.rx_shared</div><div>122: 5 0 0 0 ICU 129 Level f4000000.ppv22.eth1.link</div><div>123: 0 0 0 0 ICU 39 Level f4000000.ppv22.eth1.cpu0</div><div>124: 0 0 0 0 ICU 43 Level f4000000.ppv22.eth1.cpu1</div><div>125: 0 0 93 0 ICU 47 Level f4000000.ppv22.eth1.cpu2</div><div>126: 0 0 0 14 ICU 51 Level f4000000.ppv22.eth1.cpu3</div><div>127: 26 0 0 0 ICU 55 Level f4000000.ppv22.eth1.rx_shared</div><div>128: 2 0 0 0 ICU 128 Level f4000000.ppv22.eth2.link</div><div>129: 256721 0 0 0 ICU 40 Level f4000000.ppv22.eth2.cpu0</div><div>130: 0 88767 0 0 ICU 44 Level f4000000.ppv22.eth2.cpu1</div><div>131: 0 0 12367 0 ICU 48 Level f4000000.ppv22.eth2.cpu2</div><div>132: 0 0 0 20693 ICU 52 Level f4000000.ppv22.eth2.cpu3</div><div>133: 1118351 0 0 0 ICU 56 Level f4000000.ppv22.eth2.rx_shared</div><div>134: 0 0 0 0 ICU 127 Level f4000000.ppv22.eth3.link</div><div>135: 0 0 0 0 ICU 41 Level f4000000.ppv22.eth3.cpu0</div><div>136: 0 0 0 0 ICU 45 Level f4000000.ppv22.eth3.cpu1</div><div>137: 0 0 0 0 ICU 49 Level f4000000.ppv22.eth3.cpu2</div><div>138: 0 0 0 0 ICU 53 Level f4000000.ppv22.eth3.cpu3</div><div>139: 0 0 0 0 ICU 57 Level f4000000.ppv22.eth3.rx_shared</div><div>140: 0 0 0 0 MSI 0 Edge PCIe PME, aerdrv</div><div>141: 0 0 0 0 pMSI 1024 Edge f26a0000.dma_xor</div><div>142: 0 0 0 0 pMSI 1280 Edge f26c0000.dma_xor</div><div>143: 0 0 0 0 pMSI 1536 Edge f46a0000.dma_xor</div><div>144: 0 0 0 0 pMSI 1792 Edge f46c0000.dma_xor</div><div>145: 1 1 0 0 MSI 524288 Edge enp1s0np0-lsc</div><div>146: 0 0 0 0 MSI 524289 Edge enp1s0np0-exn</div><div>147: 86 0 0 0 MSI 524290 Edge enp1s0np0-rxtx-0</div><div>148: 0 11 0 0 MSI 524291 Edge enp1s0np0-rxtx-1</div><div>149: 0 0 14 0 MSI 524292 Edge enp1s0np0-rxtx-2</div><div>150: 0 0 0 0 MSI 524293 Edge enp1s0np0-rxtx-3</div><div>IPI0: 62499 15118972 10318390 12673769 Rescheduling interrupts</div><div><br></div><div>The thing to note here is that eth2 is the management port, and is enabled at startup. The IXIA tests run on eth1 (marvell) and enp1s0np0 (proprietory) NICs. It does not matter which NIC I excercise, the respective NIC generate almost no interrupts, and it appears that interrupt traffic due to networking</div><div>always end up with:</div><div><br></div><div>133: 1118351 0 0 0 ICU 56 Level f4000000.ppv22.eth2.rx_shared</div><div><br></div><div>and also:</div><div><br></div><div>IPI0: 62499 15118972 10318390 12673769 Rescheduling interrupts</div><div><br></div><div>Although RES interrupts are somewhat load balanced (although watching it live it is not really actively balanced, but more like switched periodically), while RX traffic appear to all come in on 133.</div><div><br></div><div>This, I believe is causing a serious networking bottleneck.</div><div><br></div><div>Any ideas or comments on my observation?</div><div><br></div><div>Regards,</div><div>Fred</div></div></div>