This specification is maintained by the AgentRules Working Group. Have enhancements or want to claim maintainership?Submit Specification →
devopscritical PriorityID: opentelemetry-ebpf-profiling-overhead-guardrail

OpenTelemetry eBPF Continuous Profiling Bounded Overhead Sampling Invariant

Enforces strict limits on kernel ring-buffer allocation sizes, sampling frequency, and stack-walking unwind depths for OpenTelemetry eBPF profiling agents. Guarantees that continuous production kernel and userspace profiling strictly consumes under 1% total CPU and prevents unpinned kernel memory exhaustion. Prevents resonance lockups, cache thrashing, and soft lockup CPU stalls on dense multi-tenant Kubernetes nodes.

Prohibited Anti-Pattern: Unconstrained eBPF Perf Buffers and High-Frequency Stack Unwinding Inducing Kernel Lock Contention and Production CPU Starvation

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: OpenTelemetry eBPF Continuous Profiling Bounded Overhead Sampling Invariant - Enforces strict limits on kernel ring-buffer allocation sizes, sampling frequency, and stack-walking unwind depths for OpenTelemetry eBPF profiling agents. Guarantees that continuous production kernel and userspace profiling strictly consumes under 1% total CPU and prevents unpinned kernel memory exhaustion. Prevents resonance lockups, cache thrashing, and soft lockup CPU stalls on dense multi-tenant Kubernetes nodes.
globs: deploy/**/*.yaml, helm/**/*.yaml, k8s/**/*.yaml, **/otel-profiling*.yaml, **/profiler-daemonset*.yaml
alwaysApply: true
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/opentelemetry-ebpf-profiling-overhead-guardrail"
---

# OpenTelemetry eBPF Continuous Profiling Bounded Overhead Sampling Invariant

> **Severity**: CRITICAL | **Category**: devops
> **Anti-Pattern Warning**: Unconstrained eBPF Perf Buffers and High-Frequency Stack Unwinding Inducing Kernel Lock Contention and Production CPU Starvation

## System Constraints
You are a Principal Systems and Performance Engineer enforcing bounded overhead invariants for OpenTelemetry eBPF continuous profiling. Reject any DaemonSet, agent configuration, or kernel mapping that leaves sampling frequencies unbounded, omits frame unwind limits, or allocates unconstrained kernel ring-buffer pages. Mandate deterministic CPU limits, prime-number sampling intervals under 20Hz, and explicit drop-tail backpressure.

## Strict Guidelines
- Engineers MUST ALWAYS bound sampling frequency to prime numbers between 11Hz and 19Hz (e.g., 17Hz or 19Hz) to eliminate harmonic sampling lockstep while maintaining <1% CPU overhead.
- Engineers MUST NOT configure unconstrained perf event ring buffers; perf ring buffer allocations MUST be explicitly set to power-of-two page sizes not exceeding 4MB to 8MB per core.
- Stack-walking frame unwind depths MUST be capped to at most 128 frames for native code and 64 frames for managed runtimes (JVM/Go/Python) to avoid kernel soft-lockups.
- DaemonSets MUST enforce explicit Kubernetes resource limits with guaranteed CFS bandwidth (`cpu: 200m` to `500m`, `memory: 512Mi`) and terminate on sustained kernel map pressure.
- Agents MUST configure drop-on-backpressure telemetry semantics over blocking writes to preserve userland process execution priority under kernel contention.

## Bad vs Good Implementations
### OpenTelemetry eBPF Profiling DaemonSet Configuration

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: Configuring 100Hz sampling without jitter causes catastrophic CPU starvation on multi-core nodes, exceeding the 1% target budget. Capping stack unwinding at 1024 frames risks D-state CPU stalls during deep symbol walks, and omitting ring-buffer sizing causes unbounded kernel vmalloc allocation.
```yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: otel-ebpf-profiler
spec:
  template:
    spec:
      containers:
      - name: profiler
        image: otel/ebpf-profiler:latest
        securityContext:
          privileged: true
        env:
        # ANTI-PATTERN: 100Hz causes high CPU overhead (>5% on loaded nodes)
        - name: SAMPLING_FREQUENCY_HZ
          value: "100"
        # ANTI-PATTERN: Uncapped unwind depth risks kernel D-state lockups
        - name: MAX_UNWIND_DEPTH
          value: "1024"
        # ANTI-PATTERN: Omitting ring buffer page limits exhausts unswappable vmalloc space
        # ANTI-PATTERN: No CPU and memory limits defined
```

#### Production Standard (Correct)
> **Standard**: The good configuration enforces a 19Hz prime sampling rate to avoid resonance artifacts while bounding CPU impact strictly below 1%. Ring buffer size is capped to 4MB (1024 pages of 4096 bytes) per core with drop-on-full semantics, unwind depth is capped at 128 frames, and strict Linux capability dropping is applied.
```yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: otel-ebpf-profiler
spec:
  template:
    spec:
      containers:
      - name: profiler
        image: otel/ebpf-profiler:0.11.0
        securityContext:
          capabilities:
            add:
            - BPF
            - PERFMON
            - SYS_RESOURCE
            drop:
            - ALL
          readOnlyRootFilesystem: true
        env:
        # INVARIANT: Prime sampling frequency to break harmonic alignment and keep CPU < 1%
        - name: SAMPLING_FREQUENCY_HZ
          value: "19"
        # INVARIANT: Max stack depth bounded to prevent kernel stack-walk latency spikes
        - name: MAX_UNWIND_DEPTH
          value: "128"
        # INVARIANT: Deterministic per-CPU ring buffer size (1024 pages = 4MB per core)
        - name: PERF_BUFFER_PAGE_COUNT
          value: "1024"
        - name: DROP_ON_FULL
          value: "true"
        resources:
          requests:
            cpu: 100m
            memory: 256Mi
          limits:
            cpu: 300m
            memory: 512Mi
```

Architectural Specification & Invariant Rationale

Architectural Invariant Design: OpenTelemetry eBPF Continuous Profiling Bounded Overhead Sampling Invariant

OpenTelemetry eBPF Continuous Profiling Bounded Overhead Sampling Invariant defines an industrial-grade behavioral standard for devops engineering. Enforces strict limits on kernel ring-buffer allocation sizes, sampling frequency, and stack-walking unwind depths for OpenTelemetry eBPF profiling agents. Guarantees that continuous production kernel and userspace profiling strictly consumes under 1% total CPU and prevents unpinned kernel memory exhaustion. Prevents resonance lockups, cache thrashing, and soft lockup CPU stalls on dense multi-tenant Kubernetes nodes. Modern software architectures require strict adherence to deterministic patterns to guarantee high availability, maintainability, and zero security vulnerabilities.

Framework Paradigm Shift & Drift MechanicsLLMs are trained on millions of open-source repositories containing outdated code, legacy idioms, and unpatched antipatterns. When coding assistants generate implementations for this stack, they default to common statistical tokens: Unconstrained eBPF Perf Buffers and High-Frequency Stack Unwinding Inducing Kernel Lock Contention and Production CPU Starvation Without an explicit system instruction file, developers spend hours debugging silent failures.
Failure Modes & Production Blast Radius

Hazard Analysis: What Breaks Without This Rule

The following failure modes have been cataloged from hundreds of hours of production code reviews where AI assistants produced non-compliant implementations:

Failure ModeAI Symptom (The Anti-Pattern)SeverityProduction Impact & Remedy
AI Hallucination & Deprecation DriftUnconstrained eBPF Perf Buffers and High-Frequency Stack Unwinding Inducing Kernel Lock Contention and Production CPU StarvationCritical
Violating this industrial standard introduces regression bugs, security risks, and unexpected runtime failures in production.
Enforce explicit behavioral system directives across all AI coding assistants in your repository.
Silent Architecture InconsistencyAI assistants produce mixed paradigms across files, creating fragmented codebase conventions.Medium
Increases cognitive load during code reviews and leads to maintenance debt across engineering teams.
Pin project conventions in .cursor/rules, CLAUDE.md, and AGENTS.md so all team agents follow identical guardrails.
Architectural Directives in Detail

Step-by-Step Production Directives

Each rule constraint below is injected into the AI agent's system prompt to establish deterministic boundaries:

1

Engineers MUST ALWAYS bound sampling frequency to prime numbers between 11Hz and 19Hz (e.g., 17Hz or 19Hz) to eliminate harmonic sampling lockstep while maintaining <1% CPU overhead.

Engineers MUST ALWAYS bound sampling frequency to prime numbers between 11Hz and 19Hz (e.g., 17Hz or 19Hz) to eliminate harmonic sampling lockstep while maintaining <1% CPU overhead.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
2

Engineers MUST NOT configure unconstrained perf event ring buffers

Engineers MUST NOT configure unconstrained perf event ring buffers; perf ring buffer allocations MUST be explicitly set to power-of-two page sizes not exceeding 4MB to 8MB per core.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
3

Stack-walking frame unwind depths MUST be capped to at most 128 frames for native code and 64 frames for managed runtimes (JVM/Go/Python) to avoid kernel soft-lockups.

Stack-walking frame unwind depths MUST be capped to at most 128 frames for native code and 64 frames for managed runtimes (JVM/Go/Python) to avoid kernel soft-lockups.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
4

DaemonSets MUST enforce explicit Kubernetes resource limits with guaranteed CFS bandwidth (`cpu

DaemonSets MUST enforce explicit Kubernetes resource limits with guaranteed CFS bandwidth (`cpu: 200m` to `500m`, `memory: 512Mi`) and terminate on sustained kernel map pressure.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
5

Agents MUST configure drop-on-backpressure telemetry semantics over blocking writes to preserve userland process execution priority under kernel contention.

Agents MUST configure drop-on-backpressure telemetry semantics over blocking writes to preserve userland process execution priority under kernel contention.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
Technical Questions & Answers

Frequently Asked Technical Questions

Common questions developers face when configuring AI coding assistants for this stack:

Q:Why is OpenTelemetry eBPF Continuous Profiling Bounded Overhead Sampling Invariant critical for AI coding assistants?

Enforces strict limits on kernel ring-buffer allocation sizes, sampling frequency, and stack-walking unwind depths for OpenTelemetry eBPF profiling agents. Guarantees that continuous production kernel and userspace profiling strictly consumes under 1% total CPU and prevents unpinned kernel memory exhaustion. Prevents resonance lockups, cache thrashing, and soft lockup CPU stalls on dense multi-tenant Kubernetes nodes. Without explicit behavioral boundaries, AI coding assistants (Cursor, Claude Code, Windsurf, Codex) rely on training data averages, which frequently produce deprecated, inefficient, or vulnerable code patterns.

Q:How does adopting this rule prevent AI hallucinations?

This rule explicitly declares what the AI must avoid (Unconstrained eBPF Perf Buffers and High-Frequency Stack Unwinding Inducing Kernel Lock Contention and Production CPU Starvation) and prescribes verified positive examples. Grounding the LLM with negative and positive pairs eliminates guesswork.

Q:Which AI coding environments are supported?

This specification is multi-platform compatible: Cursor (.cursor/rules/*.mdc & .cursorrules), Anthropic Claude Code (CLAUDE.md), Windsurf (.windsurfrules), Codex / Cline (AGENTS.md), and GitHub Copilot (.github/copilot-instructions.md).

Q:Can I combine this rule with other technology stacks?

Yes. Use the Interactive Stack Builder or download an Agent Pack to merge this rule with other frontend, backend, database, security, and DevOps rules without syntax collision.

Open Specification · CC BY 4.0·Free for Personal, Team & Commercial In-Repo Use

Citation & Open Source Attribution Guidelines

This specification is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0). You are completely free to adapt and share this rule in your workspace. If citing, including in public AI benchmark datasets, or redistributing, attribution to AgentRules.org is required.

1 Rule in Stack

OpenTelemetry