User-mode network gateway (SLIRP / vpnkit) in pure OCaml
0

Configure Feed

Select the types of activity you want to include in your feed.

slirp: correct the guest TSQ default to the measured 4 MiB

The first live /stats read-back showed the pinned 6.18.39 guest defaults
tcp_limit_output_bytes to 4 MiB (eight BIG TCP frames), not the 1 MiB the
E26 analysis assumed. State the measured value where the knob is
documented.

+5 -4
+2 -1
bench/vz_bench.sh
··· 51 51 # TCP_WRITE_BATCH_BYTES host-socket logical batch target (default 1048576) 52 52 # TCP_LIMIT_OUTPUT_BYTES guest tcp_limit_output_bytes (TSQ allowance), 53 53 # applied through the guest agent once it is up; unset keeps the 54 - # kernel default (~1 MiB = two BIG TCP frames, PROFILING.md E26) 54 + # kernel default (4 MiB = eight BIG TCP frames on the pinned 55 + # 6.18.39 guest, read back in /stats; PROFILING.md E26) 55 56 # GC_SPACE_OVERHEAD / VIRTIO_SHARD_INGEST / VM_CPUS / VM_MEMORY_MB / 56 57 # VIRTIO_MERGEABLE 57 58 # forwarded to the matching vz flags; OCAMLRUNPARAM (e.g. s=4M)
+3 -3
guest/vz_net_agent.ml
··· 27 27 | () -> Ok () 28 28 | exception Sys_error message -> Error message 29 29 30 - (* The kernel's per-flow TSQ allowance. Its 1 MiB default is two 524280-byte 31 - BIG TCP frames in flight, so a host that holds transmit completions across 32 - one write cycle stalls the sender (PROFILING.md E26). *) 30 + (* The kernel's per-flow TSQ allowance: the in-flight budget that prices 31 + PROFILING.md E26's release cliff. The pinned 6.18.39 guest defaults to 32 + 4 MiB, eight 524280-byte BIG TCP frames; /stats reports the live value. *) 33 33 let tcp_limit_output_path = "/proc/sys/net/ipv4/tcp_limit_output_bytes" 34 34 35 35 let set_tcp_limit_output bytes =