Table of Contents


threadcpu - show CPU usage of threads in user% and system%


threadcpu [ -h ] [ -s measuring-interval ] [ -p path-to-jstack ]


threadcpu calculates user% and system% for all threads and writes them out in SPACE separated columns.
If it can identify a process as Java/JVM process then it calls jstack to get the list of threads including their names.
The 3 or 4 columns of threadcpu output are:

user percent
The relative time the task did spent in user mode in the measuring interval.

system percent
The relative time the task did spent in system mode in the measuring interval.

The task/thread ID as visible as /proc/*/task/<THREAD-ID>.

This is an optional column and may be empty. In case of a Java thread it is the JVM thread name. Otherwise the name of the process as shown in /proc/<PID>/stat (including parenthesis).

The calculation is actually done by getting the jiffies used in the measuring interval for utime and stime for each task. And then the percentage in relation to the global used jiffies from /proc/stat is calculated. See proc(5) for more details.

If the measuring interval is too short to get reasonable results then a warning will be printed.


Show small help page and exit.

-s <seconds>
Specify the measuring interval in seconds. Default: 10.

-p <path-to-jstack>
Specify which jstack should be called in case of Java/JVM processes to get thread names. Default: /usr/bin/jstack


This line sorts the tasks by user% and prints the 12 most "active" tasks:
$ threadcpu -s 30 -p /opt/java/default/bin/jstack 2>/dev/null | sort -n | tail -n 12

See Also

lps(1) , proc(5)


No signal handling is done on main process and jstack child.


Frank Bergmann,

Table of Contents