Re: 0% cpu usasge after fresh boot or net restart but 10% CPU if kernel flush route cache

Eric Dumazet
2010-01-28T17:06:28Z

Le jeudi 28 janvier 2010 à 18:26 +0200, cold cold a écrit :
> On Thu, Jan 28, 2010 at 6:09 PM, Eric Dumazet <eric.dumazet@gmail.com> wrote:
> > Le jeudi 28 janvier 2010 à 11:14 +0200, cold cold a écrit :
> >
> >>
> >> RX Kpps : 57 TX Kpps : 53 RX Kbits : 331184 TX Kbits : 306213
> >> RX Kpps : 59 TX Kpps : 54 RX Kbits : 345517 TX Kbits : 304323
> >> RX Kpps : 56 TX Kpps : 52 RX Kbits : 331418 TX Kbits : 296032
> >> RX Kpps : 60 TX Kpps : 54 RX Kbits : 362007 TX Kbits : 297371
> >> RX Kpps : 59 TX Kpps : 52 RX Kbits : 360455 TX Kbits : 280603
> >>
> >>
> >> ON one cpu, gc_interval to 1, gc_elasticity 2
> >>
> >> Cpu0 : 0.0%us, 0.0%sy, 0.0%ni, 72.0%id, 0.0%wa, 8.3%hi, 19.7%si, 0.0%st
> >> Cpu1 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
> >> Cpu2 : 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
> >> Cpu3 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
> >>
> >> ------------------------------------------------------------------------------
> >> PerfTop: 17064 irqs/sec kernel:98.0% [100000 cycles], (all, 4 CPUs)
> >> ------------------------------------------------------------------------------
> >>
> >> samples pcnt kernel function
> >> _______ _____ _______________
> >>
> >> 40388.00 - 27.8% : acpi_idle_do_entry
> >> 24651.00 - 17.0% : read_hpet
> >> 4271.00 - 2.9% : _spin_lock
> >> 3388.00 - 2.3% : pskb_expand_head
> >> 3288.00 - 2.3% : igb_poll [igb]
> >> 3246.00 - 2.2% : irq_entries_start
> >> 2868.00 - 2.0% : dev_gro_receive
> >> 2665.00 - 1.8% : igb_xmit_frame_adv [igb]
> >> 2513.00 - 1.7% : ip_route_input
> >> 2144.00 - 1.5% : igb_clean_tx_irq [igb]
> >> 1842.00 - 1.3% : __slab_free
> >> 1544.00 - 1.1% : dev_queue_xmit
> >> 1423.00 - 1.0% : igb_msix_rx [igb]
> >> 1353.00 - 0.9% : __alloc_skb
> >> 1285.00 - 0.9% : eth_type_trans
> >> --
> >
> > All this seems pretty normal profile (regarding networking functions),
> > your machine should scale without problem.
> >
> > Of course, the two first functions (acpi_idle_do_entry() & read_hpet())
> > look suspicious but I have no idea why.
> >
>
> i make with flushing without gc on 2 cpu 2 time more traffic and CPU
> usage about 5 times less
>
> top - 11:22:04 up 6:45, 5 users, load average: 0.00, 0.10, 0.25
> Tasks: 84 total, 1 running, 83 sleeping, 0 stopped, 0 zombie
> Cpu0 : 0.0%us, 0.3%sy, 0.0%ni, 94.0%id, 0.0%wa, 1.7%hi, 4.0%si, 0.0%st
> Cpu1 : 0.3%us, 0.0%sy, 0.0%ni, 97.7%id, 0.0%wa, 0.7%hi, 1.3%si, 0.0%st
> Cpu2 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
> Cpu3 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
>

pure luck I guess, since you use two cpus here instead of one, but
nothing guarantee this.

>
> RX Kpps : 90 TX Kpps : 75 RX Kbits : 582791 TX Kbits : 413873
> RX Kpps : 87 TX Kpps : 74 RX Kbits : 546327 TX Kbits : 415852
> RX Kpps : 87 TX Kpps : 74 RX Kbits : 544820 TX Kbits : 418339
> RX Kpps : 88 TX Kpps : 73 RX Kbits : 569143 TX Kbits : 406438
> --

Not sure I understand your goals. Previous numbers were with less
trafic ?

What do you want ? your cpus being idle, or your router being able to
forward packets without drops ?

Good, but if you drop packets when real garbage collection is done, you
loose. Make your choice :)