Contents
Introduction
The purpose of idlestat is to measure how long we have been in the different idle and operating states.
Idlestat uses kernel's FTRACE function to monitor and capture C-state and P-state transitions of CPUs over a time interval. It extracts the following information from trace file:
- Times when CPUs entered and exited a certain C-state
- Times when CPUs entered and exited a certain P-state
- Raised IRQs
Following a successful run, idlestat calculates and reports the following information:
- Total, average, minimum and maximum time spent in each C-state, per-CPU.
- Total, average, minimum and maximum time spent in each P-state, per-CPU.
- Total, average, minimum and maximum time during which all CPUs in a cluster were in the same C-state, per-cluster.
- Number of times a certain IRQ caused a CPU to exit idle state, per-CPU and per-IRQ
Source Code
Git tree : http://git.linaro.org/power/idlestat.git
Bugs
File bugs in the Idlestat bugzilla
Usage
Trace mode:
sudo ./idlestat --trace -f /tmp/mytrace -t 10
Reporting mode (/tmp/mytrace already contains traces):
sudo ./idlestat --import -f /tmp/mytrace
Trace mode with workload (e.g. sleep, cyclictest, rt-app):
sudo ./idlestat --trace -f /tmp/mytrace -t 10 -- /bin/sleep 10
sudo ./idlestat --trace -f /tmp/mytrace -t 10 -- cyclictest -t 4 -i 2000 -q -D 5
sudo ./idlestat --trace -f /tmp/mytrace -t 10 -p -c -w -- rt-app mp3.json
Selective trace output:
sudo ./idlestate --import -f /tmp/mytrace -w
sudo ./idlestate --import -f /tmp/mytrace -c -p
sudo ./idlestate --import -f /tmp/mytrace -p -w
Notes
- It must be run as root in order to access /sys/kernel/debug.
- It requires tracing to be enabled in the kernel
Contributing
Please send email to sched-tools@linaro.org for feedback or contributions. The plan is to use linux-pm for future development.
FAQs
- How is idlestat different from powertop?
idlestat is another PM analysis tool with some overlap with the powertop functionality. However, it is designed to be a non-interactive, architecture-agnostic tool that tries to be very accurate in capturing all P-state and C-state transitions of all CPUs while minimising overhead from trace capturing.
From the captured traces, idlestat can deduce the idle time for a cluster as an intersection between the idle times of all the cpus belonging to the same cluster. This data is useful to analyse and optimise scheduling behaviour.
Feature Status
Features implemented
- CPU idle states (C-states)
- CPU performance states (P-states)
- Find source of wakeup (irq #, IPI).
- Make consistent trace ouput options.
- Ability to import trace-cmd traces
New Feature ideas
- Ability to import topology of target CPU to allow trace collection on target and post-processing on host.
Allow a diff mode to compare two traces and output the difference. This could be used to gather traces with and without some patchset and then know if there was a regression in behaviour.
- Add a 'runs' option that automatically calculates statistics for a number of runs (iterations) and prints average statistics
- Allow a SoC energy model to be supplied and calculate the energy consumption of a workload
- Dynamic buffer size to prevent overflow and to handle external workloads
WorkingGroups/PowerManagement/Resources/Tools/Idlestat (last modified 2014-08-08 11:56:22)