我们有一个 Java 应用程序,它在 Solaris 10 服务器中比在 Windows PC 中慢得多。
我们已经分析 (-Xprof) 应用程序,并观察到 UnixFileSystem.getBooleanAttributes0 方法使用本机调用消耗大约 40% 的 CPU 时间。
我们如何按照我们的搜索来确定行为缓慢的原因是什么?
更新:
我们已经执行dtrace并观察到 CPU 时间为 0.489 秒,而time结果是
real 0m40.759s
user 0m47.669s
sys 0m2.287s
Run Code Online (Sandbox Code Playgroud)
似乎时间不是花在 CPU 上,而是花在了另一个地方。有了这个dtrace结果,我们如何进行进一步的调查?我们可以使用其他dtrace选项来显示更多信息吗?
非常感谢。
# /dtrace-toolkit/DTraceToolkit-0.99/procsystime -aTp 5695
Tracing... Hit Ctrl-C to end...
dtrace: 1032 dynamic variable drops with non-empty dirty list
^C
Elapsed Times for PID 5695,
SYSCALL TIME (ns)
gtime 7799
sysconfig 8018
lwp_kill 10105
getsockname 10215
systeminfo 10984 …Run Code Online (Sandbox Code Playgroud)