Skip to content

Perf/phase1 optimizations#1043

Merged
beneiltis merged 12 commits into
developfrom
perf/phase1-optimizations
Jul 3, 2026
Merged

Perf/phase1 optimizations#1043
beneiltis merged 12 commits into
developfrom
perf/phase1-optimizations

Conversation

@beneiltis

Copy link
Copy Markdown
Contributor

No description provided.

beneiltis and others added 12 commits July 3, 2026 09:43
…lt configs

- skip update reconciles when resourceVersion/generation are unchanged
  (resyncs and status-only patches no longer trigger full reconciles)
- patch PlatformConfig status only when Ready/Message actually changed
- cache platform default-config HTTP responses for 5 minutes

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
automaxprocs prevents CFS throttling on large nodes, automemlimit lets
the GC kick in before the pod gets OOM-killed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
slog evaluates args eagerly: DisplayReceiveSummary marshalled+redacted
every incoming datagram and the websocket read paths copied every
payload via string(p), even with debug logging disabled.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- StoreSortedListEntry (per log line): pipeline XADD+trims+EXPIRE via
  DoMulti and reuse the marshaled payload for PUBLISH (was 5 roundtrips
  and a double marshal)
- audit-log prune: UNLINK the slot that fell out of the window instead
  of a full-keyspace SCAN on every write; sweep only every 100th write
- node live-stats (1s per node): marshal once, pipeline PUBLISH+SET

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Install/upgrade refreshed every registered repository, downloading all
index files (bitnami alone >100MB) per operation. Now only the repo the
chart comes from is refreshed; explicit repo-update endpoints and
startup init still update everything.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…rift

The handle key included the container's first PID, which can change
while PodInfo.Equals still reports the pod as unchanged. Remove() then
missed the handle and the nsenter/snoopy child, its goroutines and eBPF
programs leaked for the node's lifetime. Key is now ns/name/containerId;
Register kills a stale handle instead of silently overwriting it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
JSON encoding for all WriteJSON senders ran serially on the single
write thread; the queue-full fallback channel could also reorder
frames. WriteJSON now marshals up front and enqueues via WriteRaw.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- SlogMultiHandler dispatches synchronously instead of spawning a
  goroutine + WaitGroup per log line
- debounced printer: buffered channel (no blocking on stderr I/O per
  line), map-based dedup instead of quadratic slice scans
- source location via string concat instead of fmt.Sprintf

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
InterfaceMetrics (highest volume, every metrics tick per interface) and
InterfaceChanged were sent through the serial status channel only to be
dropped by the handler.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The snoopy pipeline publishes versioned binaries as GitHub release
assets; the ghcr image only has date/sha tags and was decoupled from
the release flow. The snoopy-source stage now downloads the pinned
release asset per target arch. Bump via SNOOPY_VERSION in one place.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Since Go 1.25 the runtime derives GOMAXPROCS from the cgroup CPU quota
itself and keeps it updated on limit changes; the library set it once
at startup and disabled that. automemlimit stays: Go does not set
GOMEMLIMIT automatically and the lib applies a 10% non-heap headroom.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… pin

RUST_BUILDER_IMAGE was only referenced by a commented-out stage and
RUNTIME_IMAGE was never consumed (release stage is FROM scratch).
Renovate now bumps SNOOPY_VERSION from mogenius/snoopy releases.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@beneiltis beneiltis merged commit 5d52883 into develop Jul 3, 2026
7 checks passed
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