# System statistics
Plugin: proc.plugin
Module: /proc/stat
## Overview
CPU utilization, states and frequencies and key Linux system performance metrics.
The `/proc/stat` file provides various types of system statistics:
- The overall system CPU usage statistics
- Per CPU core statistics
- The total context switching of the system
- The total number of processes running
- The total CPU interrupts
- The total CPU softirqs
The collector also reads:
- `/proc/schedstat` for statistics about the process scheduler in the Linux kernel.
- `/sys/devices/system/cpu/[X]/thermal_throttle/core_throttle_count` to get the count of thermal throttling events for a specific CPU core on Linux systems.
- `/sys/devices/system/cpu/[X]/thermal_throttle/package_throttle_count` to get the count of thermal throttling events for a specific CPU package on a Linux system.
- `/sys/devices/system/cpu/[X]/cpufreq/scaling_cur_freq` to get the current operating frequency of a specific CPU core.
- `/sys/devices/system/cpu/[X]/cpufreq/stats/time_in_state` to get the amount of time the CPU has spent in each of its available frequency states.
- `/sys/devices/system/cpu/[X]/cpuidle/state[X]/name` to get the names of the idle states for each CPU core in a Linux system.
- `/sys/devices/system/cpu/[X]/cpuidle/state[X]/time` to get the total time each specific CPU core has spent in each idle state since the system was started.
This collector is only supported on the following platforms:
- linux
This collector only supports collecting metrics from a single instance of this integration.
### Default Behavior
#### Auto-Detection
The collector auto-detects all metrics. No configuration is needed.
#### Limits
The default configuration for this integration does not impose any limits on data collection.
#### Performance Impact
The collector disables cpu frequency and idle state monitoring when there are more than 128 CPU cores available.
## Metrics
Metrics grouped by *scope*.
The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.
### Per System statistics instance
This scope has no labels.
Metrics:
| Metric | Dimensions | Unit |
|:------|:----------|:----|
| system.cpu | guest_nice, guest, steal, softirq, irq, user, system, nice, iowait, idle | percentage |
| system.intr | interrupts | interrupts/s |
| system.ctxt | switches | context switches/s |
| system.forks | started | processes/s |
| system.processes | running, blocked | processes |
| cpu.core_throttling | a dimension per cpu core | events/s |
| cpu.package_throttling | a dimension per package | events/s |
| cpu.cpufreq | a dimension per cpu core | MHz |
### Per cpu core
Labels:
| Label | Description |
|:-----------|:----------------|
| cpu | TBD |
Metrics:
| Metric | Dimensions | Unit |
|:------|:----------|:----|
| cpu.cpu | guest_nice, guest, steal, softirq, irq, user, system, nice, iowait, idle | percentage |
| cpuidle.cpu_cstate_residency_time | a dimension per c-state | percentage |
## Alerts
The following alerts are available:
| Alert name | On metric | Description |
|:------------|:----------|:------------|
| [ 10min_cpu_usage ](https://github.com/netdata/netdata/blob/master/health/health.d/cpu.conf) | system.cpu | average CPU utilization over the last 10 minutes (excluding iowait, nice and steal) |
| [ 10min_cpu_iowait ](https://github.com/netdata/netdata/blob/master/health/health.d/cpu.conf) | system.cpu | average CPU iowait time over the last 10 minutes |
| [ 20min_steal_cpu ](https://github.com/netdata/netdata/blob/master/health/health.d/cpu.conf) | system.cpu | average CPU steal time over the last 20 minutes |
## Setup
### Prerequisites
No action required.
### Configuration
#### File
The configuration file name for this integration is `netdata.conf`.
Configuration for this specific integration is located in the `plugin:proc:/proc/stat` section within that file.
The file format is a modified INI syntax. The general structure is:
```ini
[section1]
option1 = some value
option2 = some other value
[section2]
option3 = some third value
```
You can edit the configuration file using the `edit-config` script from the
Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/configure/nodes.md#the-netdata-config-directory).
```bash
cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata
sudo ./edit-config netdata.conf
```
#### Options
There are no configuration options.
#### Examples
There are no configuration examples.