我正在分析 java 服务器。我正在查看火焰图:http ://www.brendangregg.com/flamegraphs.html 。我有几个关于如何解释火焰轮廓的问题。我是 Java 新手,所以它们可能听起来很基础。
1) 在配置文件中,我观察到的顶部框架 libjvm_so 占用 38.6% cpu。这在java进程和服务器中正常吗?这个共享对象到底是什么?通常需要这么多处理吗?
2)函数/堆栈占用 x% 意味着什么。这是相对的还是绝对的?进程或 x% cpu 占总 cpu 使用量的 x%。这让我想到了第二个问题,当我比较 2 个火焰图时,是否通过进程的所有 cpu 使用情况进行了比较标准化?也就是说,如果一种方法在一个配置文件中占用 10% 而在另一个配置文件中占用 15%,这是否意味着该函数实际上正在消耗更多的 cpu。或者可能是初始进程的总体 cpu 使用率为 50% 但在第二个进程中 cpu 使用率为 30% 的情况,因此从绝对意义上讲,第二个配置文件显示该函数的 cpu 使用率降低。(50% 的 10% 大于 30% 的 15%)。