refactor(userspace/libsinsp): polish and enable filter caching #1906
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What type of PR is this?
/kind cleanup
/kind feature
Any specific area of the project related to this PR?
/area libsinsp
/area tests
Does this PR require a change in the driver versions?
What this PR does / why we need it:
The usage of caching in sinsp filters (and thus, Falco rules) has been a shy experiment from some time ago that was never finalized. I think this is generally something that could be useful and could help saving few CPU % points on high loads, even though from my synthetic measurements this could account for a max of 1-2% savings.
This PR refactors the code area involved, and enables caching in filters. It does so by introducing an abstract interface that can be used as-is or customized by the different adopters, and the whole installation into filters is taken care of by the filter compiler. This moves on from the previous scratch implementation with raw pointers and no clear injection point. Tests have been added accordingly.
Which issue(s) this PR fixes:
Special notes for your reviewer:
/milestone 0.18.0
Does this PR introduce a user-facing change?: