[quagga-dev 3336] Re: zebra rib work queue

Paul Jakma paul at clubi.ie
Tue Apr 26 16:10:59 BST 2005


On Tue, 26 Apr 2005, Andrew J. Schorr wrote:

> OK, here's a first cut at a patch.  Running heavy-thread, here's what
> it shows:
>
> ti58> show thread cpu
>                      CPU (user+system):  Real (wall-clock):
> Runtime(ms)   Invoked Avg uSec  Max uSecs Avg uSec  Max uSecs  Type  Thread
>      0.000         1        0          0      364        364 R      vty_accept
>      1.000        56       17       1000       31        115  W     vty_flush
>      0.000         9        0          0       52        103   T    test_timer
>      2.000        55       36       1000       35        188 R      vty_read
>     79.987         8     9998      10999    11467      14339      B clear_something
>     82.987       129      643      10999      746      14339 RWTEXB TOTAL


nice..

How about stacking the headers a bit more? We're unlikely to need 8 
width field for the average fields, eg:

                      CPU (user+system):  Real (wall-clock):
                           Avg     Max    Avg     Max
Runtime(ms)   Invoked    uSec   uSecs   uSec   uSecs  Type  Thread

?

> ti58> show thread cpu
>                      CPU (user+system):  Real (wall-clock):
> Runtime(ms)   Invoked Avg uSec  Max uSecs Avg uSec  Max uSecs  Type  Thread
>      0.000         1        0          0      164        164 R      vty_accept
>      0.000        53        0          0       18         44  W     vty_flush
>      0.000         4        0          0       48         91   T    test_timer
>      3.000        52       57       1000       26        180 R      vty_read
>      0.000         1        0          0 12005073   12005073      B clear_something
>      3.000       111       27       1000   108178   12005073 RWTEXB TOTAL
>
> Notice that it blocked in clear_something (single invocation 
> instead of multiple callbacks).  This is because 
> thread_should_yield is currently based on CPU time, not wall clock 
> time.  Should thread_should_yield be changed to use wall clock 
> time?  This is not obvious to me (seems a bit subtle, depending on 
> workload on machine, etc.)...

Hmm, good question. user+system can never exceed wall-clock, and it's 
wall-clock we're interested in, no? So that seems a good idea.

> Let me know if I should commit this patch.

Definitely :)

What about the little buffer tweak from yesterday? It seems to make a 
difference to responsiveness.

Also, the zebra_rib work queue, is it worth keeping. It's really just 
overhead, though it does make zebra slightly more response (slightly) 
- but zebra doesnt really need it. The stats are mildly useful 
though.

At the moment I'm trying to split up the bits which are causing Simon 
grief in bgpd (there are several candidates for queues...)

regards,
-- 
Paul Jakma	paul at clubi.ie	paul at jakma.org	Key ID: 64A2FF6A
Fortune:
To be trusted is a greater compliment than to be loved.



More information about the Quagga-dev mailing list