two NIC on 2 core system (scheduling problem)

Bartosz Giza gizmen at blurp.pl
Tue Oct 28 10:35:57 UTC 2008


Hi,

i have two core system with freebsd 7.0. I have two NIC; first is em and 
second is bge.
I wonder why system put irq processes almost always to one core.
There is example:

  11 root        1 171 ki31     0K     8K RUN    0 311.2H 96.19% idle: cpu0
   10 root       1 171 ki31     0K     8K CPU1   1 271.4H 71.44% idle: cpu1
   21 root       1 -68    -     0K     8K WAIT   1  48.8H 13.87% irq17: bge0
   20 root       1 -68    -     0K     8K -      1  42.9H 11.72% em0 taskq

Almost all the time irq17: bge0 and em0 taskq are on second cpu (1).
I use SCHED_4BSD scheduler. How can i make system to use two cores not one 
for interrupt handling.
On other router based on the same hardware and software i have something 
like that:

   10 root       1 171 ki31     0K     8K RUN    1 235.4H 78.66% idle: cpu1
   11 root       1 171 ki31     0K     8K RUN    0 185.2H 72.12% idle: cpu0
   20 root       1 -68    -     0K     8K -      0  48.7H 23.00% em0 taskq
   23 root       1 -68    -     0K     8K WAIT   0  19.2H  9.67% irq16: fxp1
   21 root       1 -68    -     0K     8K WAIT   1  28.2H  8.01% irq17: bge0

I don't know why on this router system balance over two cores. One 
difference is that on this router i have another fxp card (3 total)

Another question is why em0 taskq is eating so much cpu ? BGE interface is 
actually one that pushes 2 times more packets than em0 and it uses about 
half cpu comparing to em0. Is that not strange ?
Could someone tell my why is this happening ? BGE is faster ? or maybe i can 
tune some


More information about the freebsd-net mailing list