Hi Rosemarie,

On 10/23/26 7:15 AM, Rosemarie O'Riorden wrote:
> This commit adds a test that developers can run to check if the changes
> they've made cause a regression in the performance of ovn-controller or
> ovn-northd.
> 
> Run from inside the sandbox and compare two commits' runtime and peak
> memory usage for each process.
> 

Thanks for the new revision!  I think this benchmark will be very useful
indeed.

> This test creates a topology consisting of logical switches and routers,
> ACLs, port groups, NAT, DHCP, DNS, QoS, routing policies, and load
> balancers. The user can also provide their own database file for the
> benchmark.
> 
> * To run the test with defaults (200 nodes, track northd and controller):
>     ./ovn-benchmark.sh
> * To run with 50 nodes: ./ovn-benchmark.sh 50
> * To run with 30 nodes and only track ovn-northd:
>     ./ovn-benchmark.sh 30 northd
> * To run with Valgrind Massif tracking allocations:
>     ./ovn-benchmark.sh --valgrind

I'm still reviewing this patch but one thing I saw while testing it out
is that running ovn-benchmark.sh with valgrind when OVN has been built
with ubsan/asan doesn't work.  We should probably document/check for that.

> * To run with a custom db file: ./ovn-benchmark.sh -f file.db
> * To run with debug info printed: ./ovn-benchmark.sh --debug
> * To see detailed usage instructions: ./ovn-benchmark.sh --help
> 
> Each "node" is a router-switch pair with associated features:
>  - 1 gateway router (with NAT, static routes, routing policies)
>  - 1 logical switch (with 9 ports by default, DHCP, DNS, QoS)
>  - 5 load balancers (each with 5 backends)
>  - ACLs, port groups, and address sets (shared across all nodes)
> 
> For example, 200 nodes creates:
>  - 200 routers + 200 switches
>  - 1,800 logical switch ports (9 per switch)
>  - 1,000 load balancers (5 per node)
>  - 1,200 NAT rules, 1,200 static routes, 800 routing policies
>  - Plus ACLs, DHCP/DNS records, QoS rules, etc.
> 
> ovn-benchmark.py creates the topology and ovn-benchmark.sh is the
> wrapper that tracks peak memory and execution time. ovn-benchmark.py was
> built off of ovn-lb-benchmark.py as a starting point.
> 
> VmPeak is tracked by default, but Valgrind can be used instead for more
> precise results.
> 
> Reported-at: https://redhat.atlassian.net/browse/FDP-978
> Assisted-by: Claude Sonnet 4.5, Claude Code
> Signed-off-by: Rosemarie O'Riorden <[email protected]>

I'll continue reviewing the rest of the patch today.

Regards,
Dumitru

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to