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