我在跑
top -H -b -n 1
在带有 Java 应用程序的 Linux 上
我得到带有标题的结果:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
%CPU 是我为每个thread
真正的 cpu 看到的,这意味着它没有考虑线程浪费在等待锁等上的时间,所以它纯粹是线程在 CPU 上花费的时间。
我在跑
top -H -b -n 1
在带有 Java 应用程序的 Linux 上
我得到带有标题的结果:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
%CPU 是我为每个thread
真正的 cpu 看到的,这意味着它没有考虑线程浪费在等待锁等上的时间,所以它纯粹是线程在 CPU 上花费的时间。
如果您正在寻找有关进程 I/O 访问和 cpu 使用情况的更多信息,也许您可以查看iotop。该应用程序提供有关进程的信息,例如顶部,但用于输入/输出信息。iotop 使用来自 /proc 文件的信息,此处以进程 16528 为例。
cat /proc/16528/io
rchar: 48752567
wchar: 549961789
syscr: 5967
syscw:
67138 read_bytes: 49020928
write_bytes: 549961728
cancelled_write_bytes: 0
我知道可以在像 top 这样的 bash 模式下调用它。
iotop -botqqq --iter=3 >> /var/log/iotop
您也可以查看dstat,但它就像 top ,对于系统来说是全局的,而不是特定于进程。
您没有线程锁定信息。
如果您只寻找 java 可能会查看 jconsole它使用ThreadMXBean getThreadCpuTime() 函数。