Skip to main content

Performance Requirements

The Oodle Auto Instrumenter uses Grafana's Beyla agent for eBPF-based instrumentation. This page outlines the performance requirements and resource considerations for running the agent in your environment.

System Requirements

Before deploying the auto instrumenter, ensure your system meets these requirements:

  • Linux kernel 5.8 or higher with BPF Type Format (BTF) enabled
    • BTF is enabled by default on most Linux distributions with kernel 5.14 or higher
    • Check if BTF is enabled by verifying if /sys/kernel/btf/vmlinux exists
  • For RedHat-based distributions (RHEL8, CentOS 8, Rocky8, AlmaLinux8), kernel 4.18 with backported eBPF patches is supported
  • eBPF must be enabled in the host
  • For Go applications: Go 1.17 or higher (Beyla supports Go applications built with a major version no earlier than 3 versions behind the current stable release)

Resource Requirements

  • CPU: 200m (0.2 CPU cores)
  • Memory: 2Gi
  • Disk: 200Mi

Performance Impact

The Beyla agent has been designed to minimize performance impact on your applications:

  • CPU Overhead: Typically less than 1% of host CPU usage
  • Memory Usage: Approximately 20-30MB base memory + 5-10MB per monitored process
  • Network Impact: Minimal impact on network performance due to efficient eBPF-based collection

Scaling Considerations

When deploying the auto instrumenter in production environments:

  1. Node Density: The agent can monitor multiple processes on a single node. Recommended maximum is 50 processes per node.
  2. Network Traffic: The agent can handle high network traffic volumes, but consider increasing resources if monitoring more than 10,000 requests per second.
  3. Metrics Volume: The agent efficiently batches and compresses metrics before sending them to Oodle.

Resource Configuration

You can adjust resource limits in your values.yaml when setting up beyla:

cat > values.yaml << EOF
beyla:
resources:
limits:
memory: 4Gi
requests:
cpu: 100m
memory: 1Gi
env:
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: "<OODLE_ENDPOINT>"
OTEL_EXPORTER_OTLP_HEADERS: "X-API-KEY=<OODLE_API_KEY>"
BEYLA_KUBE_CLUSTER_NAME: "cluster"

BEYLA_NAME_RESOLVER_SOURCES: "k8s,dns"
OTEL_METRIC_EXPORT_TIMEOUT: 120000
BEYLA_PROMETHEUS_PORT: 0
EOF

Limitations

Be aware of the following limitations:

  1. Instrumentation Scope: Beyla provides generic metrics and transaction-level trace spans. For detailed code-level instrumentation, consider using language-specific agents.
  2. Permissions: Beyla requires specific Linux capabilities:
    • Basic operation: CAP_DAC_READ_SEARCH, CAP_SYS_PTRACE, CAP_PERFMON, CAP_BPF, CAP_CHECKPOINT_RESTORE, CAP_NET_RAW
    • Network observability: Additional CAP_NET_ADMIN required

Monitoring and Optimization

To ensure optimal performance:

  1. Monitor the agent's resource usage using Kubernetes metrics
  2. Adjust resource limits based on your specific workload
  3. Consider using node selectors to deploy the agent on nodes with sufficient resources
  4. Monitor internal metrics for performance insights

Troubleshooting Performance Issues

If you experience performance issues:

  1. Check the agent's resource usage and limits
  2. Verify that the node has sufficient resources
  3. Review the agent's logs for any warnings or errors
  4. Consider reducing the number of monitored processes per node through beyla's selector configuration
  5. Verify kernel version and BTF support
  6. Check for any permission-related issues

Additional Resources

For more detailed information about Beyla's performance characteristics and configuration options, refer to the official Grafana Beyla documentation.