Skip to content

perf(approvers): Reduce approver's pipeline allocations#700

Merged
rabbitstack merged 4 commits into
masterfrom
reduce-approvers-allocations
Jul 17, 2026
Merged

perf(approvers): Reduce approver's pipeline allocations#700
rabbitstack merged 4 commits into
masterfrom
reduce-approvers-allocations

Conversation

@rabbitstack

Copy link
Copy Markdown
Owner

What is the purpose of this PR / why it is needed?

The approver path is allocation-heavy because we have to clone the CreateFile event so it can outlive the ETW callback. To alleviate the pressure on the heap allocator, we aggressively pool the event records, their data buffers, and the callstack return
addresses.

List of optimizations:

  • event record, data buffer, and callstack pooling
  • registry and file path interning to avoid repetitive UTF16 string decoding
  • wildcard matching with a case-insensitive variant to eliminate strings.ToLower from the hot path

What type of change does this PR introduce?


Uncomment one or more /kind <> lines:

/kind feature (non-breaking change which adds functionality)

/kind bug-fix (non-breaking change which fixes an issue)

/kind refactor (non-breaking change that restructures the code, while not changing the original functionality)

/kind breaking (fix or feature that would cause existing functionality to not work as expected

/kind cleanup

/kind improvement

/kind design

/kind documentation

/kind other (change that doesn't pertain to any of the above categories)

Any specific area of the project related to this PR?


Uncomment one or more /area <> lines:

/area instrumentation

/area telemetry

/area rule-engine

/area filters

/area yara

/area event

/area captures

/area alertsenders

/area outputs

/area rules

/area filaments

/area config

/area cli

/area tests

/area ci

/area build

/area docs

/area deps

/area evasion

/area other

Special notes for the reviewer


Does this PR introduce a user-facing change?


The approver path is allocation heavy, because we have to
clone the CreateFile event so it can outlive the ETW callback.
To alleviate the pressure on the heap allocator, we agressively
pool the event records, their data buffers, and callstack return
addresses.
@rabbitstack
rabbitstack force-pushed the reduce-approvers-allocations branch from 37e0fc1 to 1b4c413 Compare July 17, 2026 17:21
@rabbitstack
rabbitstack merged commit 6c66af9 into master Jul 17, 2026
11 checks passed
@rabbitstack
rabbitstack deleted the reduce-approvers-allocations branch July 17, 2026 17:37
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