---
name: "bpftune"
section: "8"
platform: "linux"
package: "bpftune"
version: "0.0~git20250314.8fd59cc-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/bpftune"
---

# bpftune(8)

tool for auto-tuning of Linux kernel parameters via BPF

## NAME

BPFTUNE - tool for auto-tuning of Linux kernel parameters via BPF

## SYNOPSIS

**bpftune** \[*OPTIONS*\]

*OPTIONS* := { { **-V** \| **--version** } \| { **-h** \| **--help** } \| { \[**-s** \| **--stderr** } \| { \[**-c** \| **--cgroup**\] cgroup} \| { \[**-l** \| **--libdir** \] libdir} \| \[{ **-d** \| **--debug** }\] } { \[**-r** \| **--learning\_rate** \] learning\_rate} { \[**-R** \| **--rollback** \]} { \[**-S** \| **--support** \]} { \[**-p** \| **--port** \] port} { \[**-q** \| **--query**\] query}

## DESCRIPTION

*bpftune* supports a set of "tuners" for sysctl parameters, congestion control algorithms etc to optimize performance and avoid imposing unnecessary limits on tunables.

**bpftune** requires *CAP\_BPF* and *CAP\_TRACING* capabilities, or *CAP\_SYS\_ADMIN* on older systemes.  It is run via a systemd service, but can also be run standalone if required.  To probe if your system supports the BPF features required for bpftune, run "bpftune -S".  Basic bptune support requires BPF ring buffer, BPF hashmap and BPF sock ops and k\[ret\]probe support.  On more modern systems, BPF tracing programs and BPF iterators are used. Individual tuners support legacy mode operation where possible. In order to support per-network-namespace tuning, netns cookie support is required; without that, only global tuning is supported.

## OPTIONS

- **-h, --help**

  Show help information

- **-V, --version**

  Show version.

- **-d, --debug**

  Show debug output.

- **-c, --cgroup**

  Filter events for cgroup.

- **-s, --stderr**

  Log to standard error instead of syslog.

- **-S, --support**

  Scan system to see what level of bpftune support is present.

- **-l, --libdir**

  bptune extra plugin directory; defaults to /usr/local/lib64/bpftune . Both /usr/lib64/bpftune and /usr/local/lib64/bpftune can be used to install plugin tuners; if an alternative to /usr/local/lib64/bpftune is wanted, it must be specified via library path.

- **-r, --learning\_rate**

  Specify learning rate; supported values range from

  0: tunables are changed by/within 1.0625 % of limit

  1: tunables are changed by/within 3.125% of limit

  2: tunables are changed by/within 6.25% of limit

  3: tunables are changed by/within 12.5% of limit

  4: tunables are changed by/within 25% of limit

  So for example at rate 4, if we are within 25% of a limit, the limit is increased by 25%.  Default learning rate is 4. Lower values are more conservative as they change only when closer to limits, but may require more frequent changes as a result.

- **-R, --rollback**

  Roll back sysctl settings on exit; this allows us to explore tunable updates bpftune makes without making long-term changes to the system.  On exit, bpftune summarizes the changes made and rolls back to the sysctl values that were set prior to bpftune running.

  - **-p, --port**

    TCP port to listen on for queries.  If not specified, use an ephemeral localhost port.

  - **-q, --query**

    Query bpftune.  Supported queries include

    help        - show supported queries summary     - show summary of changes made by tuners tuners      - show loaded tuners and their state tunables    - show supported tunables for loaded tuners

## SEE ALSO

[**bpf**(2)](/bpf/2.md), [**bpftune**(8)](/bpftune/8.md),
