Repository navigation
Conversation
46bc658 to
5a9023c
Compare
Static quality checks✅ Please find below the results from static quality gates Successful checksInfo
19 successful checks with minimal change (< 2 KiB)
|
0d4e9fa to
0c3f00f
Compare
Regression DetectorRegression Detector ResultsMetrics dashboard Baseline: 655380e Optimization Goals: ✅ No significant changes detected
|
| perf | experiment | goal | Δ mean % | Δ mean % CI | trials | links |
|---|---|---|---|---|---|---|
| ➖ | dsd_uds_client_drop_detector_cpu | % cpu utilization | +2.05 | [+1.51, +2.59] | 1 | Logs |
| ➖ | quality_gate_logs | % cpu utilization | +0.97 | [+0.06, +1.88] | 1 | Logs bounds checks dashboard |
| ➖ | quality_gate_security_mean_fs_load | memory utilization | +0.82 | [+0.77, +0.86] | 1 | Logs bounds checks dashboard |
| ➖ | dsd_uds_10mb_3k_timestamped_contexts_cpu | % cpu utilization | +0.57 | [+0.30, +0.84] | 1 | Logs |
| ➖ | quality_gate_idle_all_features | memory utilization | +0.50 | [+0.42, +0.57] | 1 | Logs bounds checks dashboard |
| ➖ | dsd_uds_10mb_3k_timestamped_contexts_memory | memory utilization | +0.31 | [+0.10, +0.52] | 1 | Logs |
| ➖ | python_openmetrics | % cpu utilization | +0.31 | [-0.34, +0.95] | 1 | Logs bounds checks dashboard |
| ➖ | quality_gate_private_action_runner | memory utilization | +0.16 | [+0.04, +0.28] | 1 | Logs bounds checks dashboard |
| ➖ | quality_gate_idle | memory utilization | +0.11 | [+0.07, +0.16] | 1 | Logs bounds checks dashboard |
| ➖ | quality_gate_security_idle | memory utilization | +0.02 | [-0.02, +0.06] | 1 | Logs bounds checks dashboard |
| ➖ | quality_gate_metrics_logs | memory utilization | -0.28 | [-0.50, -0.05] | 1 | Logs bounds checks dashboard |
| ➖ | quality_gate_security_no_fs_load | memory utilization | -0.30 | [-0.36, -0.23] | 1 | Logs bounds checks dashboard |
Bounds Checks: ✅ Passed
| perf | experiment | bounds_check_name | replicates_passed | observed_value | links |
|---|---|---|---|---|---|
| ✅ | python_openmetrics | checks_execution_time | 10/10 | 83.56 ≤ 100 | bounds checks dashboard |
| ✅ | python_openmetrics | cpu_usage | 10/10 | 1351.03 ≤ 1500 | bounds checks dashboard |
| ✅ | python_openmetrics | memory_usage | 10/10 | 4.29GiB ≤ 4.75GiB | bounds checks dashboard |
| ✅ | quality_gate_idle | intake_connections | 10/10 | 4 ≤ 5 | bounds checks dashboard |
| ✅ | quality_gate_idle | memory_usage | 10/10 | 180.10MiB ≤ 181MiB | bounds checks dashboard |
| ✅ | quality_gate_idle | total_bytes_received | 10/10 | 773.36KiB ≤ 819.20KiB | bounds checks dashboard |
| ✅ | quality_gate_idle_all_features | intake_connections | 10/10 | 2 ≤ 5 | bounds checks dashboard |
| ✅ | quality_gate_idle_all_features | memory_usage | 10/10 | 481.63MiB ≤ 542MiB | bounds checks dashboard |
| ✅ | quality_gate_idle_all_features | total_bytes_received | 10/10 | 1.17MiB ≤ 1.25MiB | bounds checks dashboard |
| ✅ | quality_gate_logs | intake_connections | 10/10 | 16 ≤ 40 | bounds checks dashboard |
| ✅ | quality_gate_logs | memory_usage | 10/10 | 217.25MiB ≤ 228MiB | bounds checks dashboard |
| ✅ | quality_gate_logs | missed_bytes | 10/10 | 0B = 0B | bounds checks dashboard |
| ✅ | quality_gate_logs | total_bytes_received | 10/10 | 263.93MiB ≤ 292MiB | bounds checks dashboard |
| ✅ | quality_gate_metrics_logs | cpu_usage | 10/10 | 372.99 ≤ 2000 | bounds checks dashboard |
| ✅ | quality_gate_metrics_logs | intake_connections | 10/10 | 19 ≤ 40 | bounds checks dashboard |
| ✅ | quality_gate_metrics_logs | memory_usage | 10/10 | 407.47MiB ≤ 455MiB | bounds checks dashboard |
| ✅ | quality_gate_metrics_logs | missed_bytes | 10/10 | 0B = 0B | bounds checks dashboard |
| ✅ | quality_gate_metrics_logs | total_bytes_received | 10/10 | 0.95GiB ≤ 1.04GiB | bounds checks dashboard |
| ✅ | quality_gate_private_action_runner | memory_usage | 10/10 | 75.20MiB ≤ 77MiB | bounds checks dashboard |
| ✅ | quality_gate_security_idle | cpu_usage | 10/10 | 29.50 ≤ 100 | bounds checks dashboard |
| ✅ | quality_gate_security_idle | memory_usage | 10/10 | 331.96MiB ≤ 357MiB | bounds checks dashboard |
| ✅ | quality_gate_security_mean_fs_load | cpu_usage | 10/10 | 40.38 ≤ 200 | bounds checks dashboard |
| ✅ | quality_gate_security_mean_fs_load | memory_usage | 10/10 | 319.06MiB ≤ 337MiB | bounds checks dashboard |
| ✅ | quality_gate_security_no_fs_load | cpu_usage | 10/10 | 22.78 ≤ 100 | bounds checks dashboard |
| ✅ | quality_gate_security_no_fs_load | memory_usage | 10/10 | 319.57MiB ≤ 348MiB | bounds checks dashboard |
Explanation
Confidence level: 90.00%
Effect size tolerance: |Δ mean %| ≥ 5.00%
Performance changes are noted in the perf column of each table:
- ✅ = significantly better comparison variant performance
- ❌ = significantly worse comparison variant performance
- ➖ = no significant change in performance
A regression test is an A/B test of target performance in a repeatable rig, where "performance" is measured as "comparison variant minus baseline variant" for an optimization goal (e.g., ingress throughput). Due to intrinsic variability in measuring that goal, we can only estimate its mean value for each experiment; we report uncertainty in that value as a 90.00% confidence interval denoted "Δ mean % CI".
For each experiment, we decide whether a change in performance is a "regression" -- a change worth investigating further -- if all of the following criteria are true:
-
Its estimated |Δ mean %| ≥ 5.00%, indicating the change is big enough to merit a closer look.
-
Its 90.00% confidence interval "Δ mean % CI" does not contain zero, indicating that if our statistical model is accurate, there is at least a 90.00% chance there is a difference in performance between baseline and comparison variants.
-
Its configuration does not mark it "erratic".
CI Pass/Fail Decision
✅ Passed. All Quality Gates passed.
- quality_gate_security_no_fs_load, bounds check cpu_usage: 10/10 replicas passed. Gate passed.
- quality_gate_security_no_fs_load, bounds check memory_usage: 10/10 replicas passed. Gate passed.
- quality_gate_security_idle, bounds check cpu_usage: 10/10 replicas passed. Gate passed.
- quality_gate_security_idle, bounds check memory_usage: 10/10 replicas passed. Gate passed.
- quality_gate_idle_all_features, bounds check memory_usage: 10/10 replicas passed. Gate passed.
- quality_gate_idle_all_features, bounds check total_bytes_received: 10/10 replicas passed. Gate passed.
- quality_gate_idle_all_features, bounds check intake_connections: 10/10 replicas passed. Gate passed.
- quality_gate_logs, bounds check total_bytes_received: 10/10 replicas passed. Gate passed.
- quality_gate_logs, bounds check missed_bytes: 10/10 replicas passed. Gate passed.
- quality_gate_logs, bounds check memory_usage: 10/10 replicas passed. Gate passed.
- quality_gate_logs, bounds check intake_connections: 10/10 replicas passed. Gate passed.
- quality_gate_metrics_logs, bounds check memory_usage: 10/10 replicas passed. Gate passed.
- quality_gate_metrics_logs, bounds check total_bytes_received: 10/10 replicas passed. Gate passed.
- quality_gate_metrics_logs, bounds check missed_bytes: 10/10 replicas passed. Gate passed.
- quality_gate_metrics_logs, bounds check intake_connections: 10/10 replicas passed. Gate passed.
- quality_gate_metrics_logs, bounds check cpu_usage: 10/10 replicas passed. Gate passed.
- quality_gate_security_mean_fs_load, bounds check cpu_usage: 10/10 replicas passed. Gate passed.
- quality_gate_security_mean_fs_load, bounds check memory_usage: 10/10 replicas passed. Gate passed.
- quality_gate_idle, bounds check total_bytes_received: 10/10 replicas passed. Gate passed.
- quality_gate_idle, bounds check memory_usage: 10/10 replicas passed. Gate passed.
- quality_gate_idle, bounds check intake_connections: 10/10 replicas passed. Gate passed.
- quality_gate_private_action_runner, bounds check memory_usage: 10/10 replicas passed. Gate passed.
eBPF complexity changesSummary result: ❔ - needs attention
Groups without changes:
runtime_security detailsruntime_security [programs with changes]
runtime_security_fentry detailsruntime_security_fentry [programs with changes]
This report was generated based on the complexity data for the current branch mkovags/cws-mount-base-per-version (pipeline 148477641, commit bd836c4) and the base branch main (commit 4abaf53). Objects without changes are summarized by group only. Contact #ebpf-platform if you have any questions/feedback. Table complexity legend: 🔵 - new; ⚪ - unchanged; 🟢 - reduced; 🔴 - increased |
667dd75 to
0f1db63
Compare
0f1db63 to
8294788
Compare
6ba4623 to
84a2c6a
Compare
There was a problem hiding this comment.
AI review by Codex (OpenAI) - workflow run
patch is incorrect. Foreign namespace seeding can permanently omit pre-existing mounts when the resolver cache is partial or the initial snapshot fails.
8064f3b to
6c9299a
Compare
Include inBaseNamespace in mountNodeKey so a mount observed in the base mount namespace, outside of it, or in both is stored as separate MountNode entries with per-image-tag NodeBase tracking. Propagate process mount namespace changes from PIDContext.MntNS to the cached ProcessCacheEntry and mount resolver in setProcessContext so runtime setns/unshare updates are reflected on existing processes. Track base mount namespaces per cgroup and seeded non-base mount namespaces per image tag, syncing uncached namespaces from procfs/listmount in MountResolver.IterateNamespace so any non-base mount namespace a workload process enters is seeded with base_namespace=false.
6c9299a to
bd836c4
Compare
|
/merge |
1 similar comment
|
/merge |
|
View all feedbacks in Devflow UI.
It will be processed automatically as soon as GitHub reports it as mergeable. View in MergeQueue UI.
Use
The expected merge time in Use ⏳ Processing |
|
View all feedbacks in Devflow UI.
PR already in the queue with status waiting |
What does this PR do?
inBaseNamespaceinmountNodeKeysoActivityTreededuplicates mounts by(mountPoint, filesystem, mountFlags, inBaseNamespace), keeping base and non-base observations as separateMountNodeentries with per-image_tagNodeBasetracking.baseMountNSByCgroup) and seeded non-base mount namespaces perimageTagID(seededMountNamespaceIDs) onActivityTree.PIDContext.MntNStoProcessCacheEntryandMountResolver, and seeds pre-existing mounts from any non-base mount namespace a workload process visits viaMountResolverwithbase_namespace=false(syncing uncached namespaces fromprocfs/listmountinIterateNamespace).Motivation
A workload mount can be observed in the base mount namespace, outside of it, or in both, and processes in a container can enter other mount namespaces via
setnswhose pre-existing mounts need to be recorded in the profile withbase_namespace=false.Describe how you validated your changes
pkg/security/security_profile/activity_tree,pkg/security/security_profile/profile, andpkg/security/security_profilecovering base-only, non-base-only, and both-namespace observations, per-image-tag attribution and eviction, foreign namespace seeding viaMountResolver, and protobuf round-trip.TestSecurityProfileV2Mountsexercisingnsenterinto a foreign mount namespace.