I've been recently looking into upcall tracing inside OVS and its
current challenges. 

The current implementation is available in
utilities/usdt-scripts/upcall_cost.py. Essentially it collects all the
events and collelates them in userspace after the data collection has
ended.

I have been working on improving this implementation using ebpf to
perform the bulk of the correlation so that the script has less work to
do. As a result, not only the script is much faster but also is more
accurate since we now don't need to send packet bytes to userspace,
reducing the ring buffer congestion.

This is a summary of the improvements of this implementation:

- More accuracy:
    - 6% reduction in event misses
    - 57% increase in collected events
    - 982% increase in number of analyzable event sets
- Less run time: 
    - Total time of analysis drops from 27 minutes to 24 seconds.
- Support for fragments:
    - We count the upcall cost of each fragment independently

* The numeric results correspond to a 20s iperf3 run with OVS
  to upcall 100% of traffic.


Adrian Moreno (1):
  usdt-scripts: use ebpf to track upcall_cost

 utilities/usdt-scripts/upcall_cost.py | 2657 +++++++++++++++----------
 1 file changed, 1568 insertions(+), 1089 deletions(-)

-- 
2.39.2

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to