PerfSpect is a system performance characterization tool built on top of linux perf. It contains two parts:
perf-collect: Collects hardware events at a 5 second output interval with practically zero overhead since PMU's run in counting mode.
- Collection mode:
sudo ./perf-collect
default system widesudo ./perf-collect --socket
sudo ./perf-collect --cpu
sudo ./perf-collect --pid <process-id>
sudo ./perf-collect --cid
by default, selects the 5 containers using the most CPU at start of perf-collect. To monitor specific containers provide up to 5 comma separated cids i.e. <cid_1>,<cid_2>
- Duration:
sudo ./perf-collect
default run until terminatedsudo ./perf-collect --timeout 10
run for 10 secondssudo ./perf-collect --app "myapp.sh myparameter"
runs for duration of another process
perf-postprocess: Calculates high level metrics from hardware events
./perf-postprocess
wget -qO- https://github.com/intel/PerfSpect/releases/latest/download/perfspect.tgz | tar xvz
cd perfspect
sudo ./perf-collect --timeout 10
./perf-postprocess
perf-collect outputs:
perfstat.csv
: raw event counts with system metadata
perf-postprocess outputs:
metric_out.sys.average.csv
: average metricsmetric_out.sys.csv
: metric values at every 5 second intervalmetric_out.html
: html view of a few select metrics
Modify the template deamonset.yml to deploy in kubernetes
- perf - PerfSpect uses the Linux perf tool to collect PMU counters
Xeon Generation | CentOS 7+ | Ubuntu 16.04+ |
---|---|---|
Broadwell | 3.10 | 4.15 |
Skylake | 3.10 | 4.15 |
Cascade Lake | 3.10 | 4.15 |
Ice Lake | 3.10 | 4.15 |
Sapphire Rapids | 5.12 | 5.12 |
- Ubuntu 16.04 and newer
- CentOS 7 and newer
- Amazon Linux 2
- RHEL 9
- Debian 11
Note: PerfSpect may work on other Linux distributions, but has not been thoroughly tested
Requires recent python. On successful build, binaries will be created in dist
folder
pip3 install -r requirements.txt
make
Note: Most metrics and events come from perfmon and TMA v4.5