plugin_name: perf.plugin modules: - meta: plugin_name: perf.plugin module_name: perf.plugin monitored_instance: name: CPU performance link: "https://kernel.org/" categories: - data-collection.linux-systems icon_filename: "bolt.svg" related_resources: integrations: list: [] info_provided_to_referring_integrations: description: "" keywords: - linux - cpu performance - cpu cache - perf.plugin most_popular: false overview: data_collection: metrics_description: "This collector monitors CPU performance metrics about cycles, instructions, migrations, cache operations and more." method_description: "It uses syscall (2) to open a file descriptor to monitor the perf events." supported_platforms: include: - Linux exclude: [] multi_instance: true additional_permissions: description: "It needs setuid to use the necessary syscall to collect perf events. Netdata sets the permission during installation time." default_behavior: auto_detection: description: "" limits: description: "" performance_impact: description: "" setup: prerequisites: list: - title: Install perf plugin description: | If you are [using our official native DEB/RPM packages](/packaging/installer/UPDATE.md#determine-which-installation-method-you-used), make sure the `netdata-plugin-perf` package is installed. - title: Enable the perf plugin description: | The plugin is disabled by default because the number of PMUs is usually quite limited and it is not desired to allow Netdata to struggle silently for PMUs, interfering with other performance monitoring software. To enable it, use `edit-config` from the Netdata [config directory](/docs/netdata-agent/configuration/README.md), which is typically at `/etc/netdata`, to edit the `netdata.conf` file. ```bash cd /etc/netdata # Replace this path with your Netdata config directory, if different sudo ./edit-config netdata.conf ``` Change the value of the `perf` setting to `yes` in the `[plugins]` section. Save the file and restart the Netdata Agent with `sudo systemctl restart netdata`, or the [appropriate method](/docs/netdata-agent/start-stop-restart.md) for your system. configuration: file: name: "netdata.conf" section_name: "[plugin:perf]" description: "The main netdata configuration file." options: description: | You can get the available options running: ```bash /usr/libexec/netdata/plugins.d/perf.plugin --help ```` folding: title: "Config options" enabled: true list: - name: update every description: Data collection frequency. default_value: 1 required: false - name: command options description: Command options that specify charts shown by the plugin. `cycles`, `instructions`, `branch`, `cache`, `bus`, `stalled`, `migrations`, `alignment`, `emulation`, `L1D`, `L1D-prefetch`, `L1I`, `LL`, `DTLB`, `ITLB`, `PBU`. default_value: 1 required: true examples: folding: enabled: true title: "Config" list: - name: All metrics folding: enabled: false description: Monitor all metrics available. config: | [plugin:perf] command options = all - name: CPU cycles description: Monitor CPU cycles. config: | [plugin:perf] command options = cycles troubleshooting: problems: list: - name: Debug Mode description: | You can run `perf.plugin` with the debug option enabled to troubleshoot issues with it. The output should give you clues as to why the collector isn't working. - Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`. ```bash cd /usr/libexec/netdata/plugins.d/ ``` - Switch to the `netdata` user. ```bash sudo -u netdata -s ``` - Run the `perf.plugin` in debug mode: ```bash ./perf.plugin 1 all debug ``` alerts: [] metrics: folding: title: Metrics enabled: false description: "" availability: [] scopes: - name: global description: "These metrics refer to the entire monitored application." labels: [] metrics: - name: perf.cpu_cycles description: CPU cycles unit: "cycles/s" chart_type: line dimensions: - name: cpu - name: ref_cpu - name: perf.instructions description: Instructions unit: "instructions/s" chart_type: line dimensions: - name: instructions - name: perf.instructions_per_cycle description: Instructions per Cycle(IPC) unit: "instructions/cycle" chart_type: line dimensions: - name: ipc - name: perf.branch_instructions description: Branch instructions unit: "instructions/s" chart_type: line dimensions: - name: instructions - name: misses - name: perf.cache description: Cache operations unit: "operations/s" chart_type: line dimensions: - name: references - name: misses - name: perf.bus_cycles description: Bus cycles unit: "cycles/s" chart_type: line dimensions: - name: bus - name: perf.stalled_cycles description: Stalled frontend and backend cycles unit: "cycles/s" chart_type: line dimensions: - name: frontend - name: backend - name: perf.migrations description: CPU migrations unit: "migrations" chart_type: line dimensions: - name: migrations - name: perf.alignment_faults description: Alignment faults unit: "faults" chart_type: line dimensions: - name: faults - name: perf.emulation_faults description: Emulation faults unit: "faults" chart_type: line dimensions: - name: faults - name: perf.l1d_cache description: L1D cache operations unit: "events/s" chart_type: line dimensions: - name: read_access - name: read_misses - name: write_access - name: write_misses - name: perf.l1d_cache_prefetch description: L1D prefetch cache operations unit: "prefetches/s" chart_type: line dimensions: - name: prefetches - name: perf.l1i_cache description: L1I cache operations unit: "events/s" chart_type: line dimensions: - name: read_access - name: read_misses - name: perf.ll_cache description: LL cache operations unit: "events/s" chart_type: line dimensions: - name: read_access - name: read_misses - name: write_access - name: write_misses - name: perf.dtlb_cache description: DTLB cache operations unit: "events/s" chart_type: line dimensions: - name: read_access - name: read_misses - name: write_access - name: write_misses - name: perf.itlb_cache description: ITLB cache operations unit: "events/s" chart_type: line dimensions: - name: read_access - name: read_misses - name: perf.pbu_cache description: PBU cache operations unit: "events/s" chart_type: line dimensions: - name: read_access