Per-thread CPU breakdown

Per-thread CPU%, find the hot TID inside a busy process for jstack/perf

pidstat -t -p <pid> 1

tool
troubleshooting32 commands
tags
troubleshootingperformancecpudebug

More troubleshooting commands

  • top -H -p <pid>

    Live per-thread view; convert hot TID to hex (printf %x) to match jstack nid

  • mpstat -P ALL 1

    Per-core %usr/%sys/%iowait — spot a single saturated core vs balanced load

  • vmstat 1 5 | awk 'NR>2{print "runq="$1" blocked="$2}'; nproc

    vmstat r column (runnable) above nproc means CPU saturation, not just high load

  • ps -o nlwp= -p <pid>; ps -eLf | wc -l

    Thread count per pid and system-wide; runaway threads exhaust kernel.pid_max

  • while sleep 5; do ps -o rss= -p <pid> | awk '{print strftime("%T"),$1/1024"MB"}'; done

    Sample RSS every 5s to confirm a real leak (monotonic growth) vs steady churn

all 32 troubleshooting commands