Man page - cpudist-bpfcc(8)
Packages contas this manual
- tcpcong-bpfcc(8)
- bindsnoop-bpfcc(8)
- runqlen-bpfcc(8)
- cachestat-bpfcc(8)
- mdflush-bpfcc(8)
- ucalls(8)
- tcprtt-bpfcc(8)
- ksnoop-bpfcc(8)
- javaflow-bpfcc(8)
- phpstat-bpfcc(8)
- wqlat-bpfcc(8)
- vfscount-bpfcc(8)
- funclatency-bpfcc(8)
- rubystat-bpfcc(8)
- nodegc-bpfcc(8)
- btrfsdist-bpfcc(8)
- swapin-bpfcc(8)
- wakeuptime-bpfcc(8)
- btrfsslower-bpfcc(8)
- pythongc-bpfcc(8)
- tcplife-bpfcc(8)
- cpudist-bpfcc(8)
- trace-bpfcc(8)
- capable-bpfcc(8)
- rubyobjnew-bpfcc(8)
- nodestat-bpfcc(8)
- rubyflow-bpfcc(8)
- offcputime-bpfcc(8)
- gethostlatency-bpfcc(8)
- tcpretrans-bpfcc(8)
- zfsdist-bpfcc(8)
- dbstat-bpfcc(8)
- tcpconnect-bpfcc(8)
- cobjnew-bpfcc(8)
- criticalstat-bpfcc(8)
- deadlock-bpfcc(8)
- dirtop-bpfcc(8)
- biosnoop-bpfcc(8)
- drsnoop-bpfcc(8)
- ext4dist-bpfcc(8)
- biolatency-bpfcc(8)
- argdist-bpfcc(8)
- funccount-bpfcc(8)
- pythonstat-bpfcc(8)
- klockstat-bpfcc(8)
- execsnoop-bpfcc(8)
- mountsnoop-bpfcc(8)
- tclobjnew-bpfcc(8)
- virtiostat-bpfcc(8)
- javastat-bpfcc(8)
- threadsnoop-bpfcc(8)
- profile-bpfcc(8)
- bpflist-bpfcc(8)
- statsnoop-bpfcc(8)
- inject-bpfcc(8)
- stackcount-bpfcc(8)
- pythonflow-bpfcc(8)
- perlstat-bpfcc(8)
- spfdsnoop-bpfcc(8)
- rubycalls-bpfcc(8)
- opensnoop-bpfcc(8)
- pidpersec-bpfcc(8)
- tcpstates-bpfcc(8)
- filegone-bpfcc(8)
- kvmexit-bpfcc(8)
- javathreads-bpfcc(8)
- phpflow-bpfcc(8)
- nfsdist-bpfcc(8)
- oomkill-bpfcc(8)
- tclflow-bpfcc(8)
- dcstat-bpfcc(8)
- rubygc-bpfcc(8)
- runqslower-bpfcc(8)
- rdmaucma-bpfcc(8)
- reset-trace-bpfcc(8)
- dbslower-bpfcc(8)
- ustat(8)
- shmsnoop-bpfcc(8)
- vfsstat-bpfcc(8)
- biopattern-bpfcc(8)
- llcstat-bpfcc(8)
- netqtop-bpfcc(8)
- javagc-bpfcc(8)
- syscount-bpfcc(8)
- cthreads-bpfcc(8)
- filelife-bpfcc(8)
- biolatpcts-bpfcc(8)
- bitesize-bpfcc(8)
- javaobjnew-bpfcc(8)
- ttysnoop-bpfcc(8)
- slabratetop-bpfcc(8)
- tcpsubnet-bpfcc(8)
- zfsslower-bpfcc(8)
- xfsdist-bpfcc(8)
- dcsnoop-bpfcc(8)
- tcpaccept-bpfcc(8)
- syncsnoop-bpfcc(8)
- tcptracer-bpfcc(8)
- tclstat-bpfcc(8)
- cpuunclaimed-bpfcc(8)
- mysqld_qslower-bpfcc(8)
- filetop-bpfcc(8)
- funcinterval-bpfcc(8)
- tcpconnlat-bpfcc(8)
- uobjnew(8)
- uthreads(8)
- runqlat-bpfcc(8)
- sofdsnoop-bpfcc(8)
- readahead-bpfcc(8)
- memleak-bpfcc(8)
- tcpsynbl-bpfcc(8)
- biotop-bpfcc(8)
- fileslower-bpfcc(8)
- uflow(8)
- tcpdrop-bpfcc(8)
- phpcalls-bpfcc(8)
- killsnoop-bpfcc(8)
- cachetop-bpfcc(8)
- ugc(8)
- f2fsslower-bpfcc(8)
- softirqs-bpfcc(8)
- bashreadline-bpfcc(8)
- pythoncalls-bpfcc(8)
- tclcalls-bpfcc(8)
- perlflow-bpfcc(8)
- compactsnoop-bpfcc(8)
- ppchcalls-bpfcc(8)
- tplist-bpfcc(8)
- solisten-bpfcc(8)
- exitsnoop-bpfcc(8)
- funcslower-bpfcc(8)
- sslsniff-bpfcc(8)
- offwaketime-bpfcc(8)
- perlcalls-bpfcc(8)
- nfsslower-bpfcc(8)
- xfsslower-bpfcc(8)
- javacalls-bpfcc(8)
- tcptop-bpfcc(8)
- hardirqs-bpfcc(8)
- ext4slower-bpfcc(8)
apt-get install bpfcc-tools
Manual
| cpudist(8) | System Manager's Manual | cpudist(8) |
NAME
cpudist - On- and off-CPU task time as a histogram.
SYNOPSIS
cpudist [-h] [-O] [-T] [-m] [-P] [-L] [-p PID] [-I] [-e] [interval] [count]
DESCRIPTION
This measures the time a task spends on the CPU before being descheduled, and shows the times as a histogram. Tasks that spend a very short time on the CPU can be indicative of excessive context-switches and poor workload distribution, and possibly point to a shared source of contention that keeps tasks switching in and out as it becomes available (such as a mutex).
Similarly, the tool can also measure the time a task spends off-CPU before it is scheduled again. This can be helpful in identifying long blocking and I/O operations, or alternatively very short descheduling times due to short-lived locks or timers.
By default CPU idle time are excluded by simply excluding PID 0.
This tool uses in-kernel eBPF maps for storing timestamps and the histogram, for efficiency. Despite this, the overhead of this tool may become significant for some workloads: see the OVERHEAD section.
Since this uses BPF, only the root user can use this tool.
REQUIREMENTS
CONFIG_BPF and bcc.
OPTIONS
- -h
- Print usage message.
- -O
- Measure off-CPU time instead of on-CPU time.
- -T
- Include timestamps on output.
- -m
- Output histogram in milliseconds.
- -P
- Print a histogram for each PID (tgid from the kernel's perspective).
- -L
- Print a histogram for each TID (pid from the kernel's perspective).
- -p PID
- Only show this PID (filtered in kernel for efficiency).
- -I
- Include CPU idle time (by default these are excluded).
- -e
- Show extension summary (average/total/count).
- interval
- Output interval, in seconds.
- count
- Number of outputs.
EXAMPLES
- Summarize task on-CPU time as a histogram:
- # cpudist
- Summarize task off-CPU time as a histogram:
- # cpudist -O
- Print 1 second summaries, 10 times:
- # cpudist 1 10
- Print 1 second summaries, using milliseconds as units for the histogram, and include timestamps on output:
- # cpudist -mT 1
- Trace PID 185 only, 1 second summaries:
- # cpudist -p 185 1
- Include CPU idle time:
- # cpudist -I
- Also show extension summary:
- # cpudist -e
FIELDS
- usecs
- Microsecond range
- msecs
- Millisecond range
- count
- How many times a task event fell into this range
- distribution
- An ASCII bar chart to visualize the distribution (count column)
OVERHEAD
This traces scheduler tracepoints, which can become very frequent. While eBPF has very low overhead, and this tool uses in-kernel maps for efficiency, the frequency of scheduler events for some workloads may be high enough that the overhead of this tool becomes significant. Measure in a lab environment to quantify the overhead before use.
SOURCE
This is from bcc.
- https://github.com/iovisor/bcc
Also look in the bcc distribution for a companion _example.txt file containing example usage, output, and commentary for this tool.
OS
Linux
STABILITY
Unstable - in development.
AUTHOR
Sasha Goldshtein, Rocky Xing
SEE ALSO
pidstat(1), runqlat(8)
| 2016-06-28 | USER COMMANDS |