Hi, 

Why does FromDevice->_task_cycles not include the cycles spend in ToHost
in this config: 
FromDevice -> ToHost 

When checking cpu-cyclecounts with --enable-stats=2 
(x68_64,,somewhat recent click-git on 2.6.24.7 kernel with patches,
opteron 1210 with tsc locked to cpu-clock),

I'm getting these average cycle-counts per packet: 

FromDevice: 
task 2380

ToHost
self 4800
child 0 

No, when looking at the code, this is what I believe should happen:

Task::fire(FromDevice) 

task.hh:574 initialize the start_cycles reference 
  click_cycles_t start_cycles = click_get_cycles();

task.hh:582 Element->run_task is called

FromDevice::run_task
fromdevice.cc:389      output(0).push called

  Element::Port::push relevant part verbatim:

    click_cycles_t c0 = click_get_cycles();
    _e->push(_port, p);
    click_cycles_t x = click_get_cycles() - c0;
    ++_e->_calls;
    _e->_self_cycles += x;
  
    ok, now we have recorded the ~4800 ToHost cycles...

then return to task.hh
task.hh:593 
   _owner->_task_cycles += click_get_cycles() - start_cycles;

this records only the 2380 task cycles.... why? 

IMHO: the _task_cycles variable should count all cycles, also the ones
spend in the callee... But it apparently does not. 
And the source says 
element.hh:
  click_cycles_t _task_cycles;    // Cycles spent in self from tasks.
That seems to be the case... why only self???

Can somebody please explain the underlying magic to me?

Thanks
        Harald


_______________________________________________
click mailing list
[email protected]
https://amsterdam.lcs.mit.edu/mailman/listinfo/click

Reply via email to