Skip to content

[NetKAT] Add scale benchmark with realistically large inputs#103

Draft
smolkaj wants to merge 1 commit into
google:mainfrom
smolkaj:scale-benchmark
Draft

[NetKAT] Add scale benchmark with realistically large inputs#103
smolkaj wants to merge 1 commit into
google:mainfrom
smolkaj:scale-benchmark

Conversation

@smolkaj

@smolkaj smolkaj commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

What

A benchmark that compiles realistically large NetKAT models, complementing the existing micro-benchmarks (which compile small fixed policies and thus mostly measure constant overheads). Three families, modeled on real networking workloads and parameterized by size so scaling behavior is directly visible:

  • Forwarding tables — many exact-match rules on one field (wide decision nodes, one branch per value).
  • ACLs — multi-field conjunctive rules, plus a permitted && !denied variant exercising Not/And on large sets.
  • Ring-network reachability — per-switch forwarding tables composed with Iterate to a fixed point: the workload at the heart of symbolic network verification.

Why

Performance work on the backend (#100, #102, #98, #99, and the planned memoization work) needs an instrument that can detect asymptotic effects, not just constant factors. This benchmark immediately earns its keep — at head:

Benchmark size time scaling
BM_CompileForwardingTable 64 / 512 / 4096 513µs / 34.4ms / 2.98s 8× size → 67–87× time
BM_CompileAclAsPacketSet 16 / 64 / 256 45µs / 427µs / 5.6ms ~quadratic
BM_CompileRingReachability 8 / 16 / 32 2.1ms / 27.4ms / 414ms 2× size → ~15× time

The super-quadratic forwarding-table and reachability scaling quantifies the cost of the known missing operation memoization (b/382379263) and gives that work a measurable target.

Testing

bazel build -c opt //netkat:scale_benchmark and a full run on head, #100, and #102 (results posted on those PRs).

🤖 Generated with Claude Code

@google-cla

google-cla Bot commented Jun 10, 2026

Copy link
Copy Markdown

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

The existing benchmarks compile small fixed policies, so they mostly measure
constant overheads and cannot detect asymptotic problems (or improvements) in
the backend. This benchmark compiles inputs modeled on real networking
workloads - wide forwarding tables, multi-field ACLs, and ring-network
reachability via Iterate - parameterized by size, so scaling behavior is
visible directly in the output.

It immediately demonstrates its value: forwarding table compilation scales
super-quadratically at head (8x entries -> 66-100x time; 4096 entries take
3.5 seconds), quantifying the known lack of operation memoization
(b/382379263) and giving future optimizations a measurable target.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant