在 Linux 系统上使用 Java / Eclipse TPTP 进行 16 线程 / 16 核心代码分析
Posted
技术标签:
【中文标题】在 Linux 系统上使用 Java / Eclipse TPTP 进行 16 线程 / 16 核心代码分析【英文标题】:16 Thread / 16 core code profiling with Java / Eclipse TPTP on Linux system 【发布时间】:2011-10-05 16:46:56 【问题描述】:我用 Java 开发了一个很好的多线程遗传算法,它在运行 CentOS 和 128GB RAM 的 16 核系统上运行。
我想使用代码分析器来查看当我将模拟中的突变数量增加到超过某个点时,我是否可以找出代码的哪一部分陷入困境。内存似乎不是问题。
所以我在服务器上安装了 VNC 和 Eclipse 3.6SR2 并安装了 TPTP 插件。
问题:最大的问题是当我进行 TPTP“执行时间分析”(我使用“top”检查)时,eclipse 似乎没有使用多个内核。通常,当程序从命令行运行时,它使用的内核数与程序中的线程数一样多。
有没有办法在 eclipse 配置中解决这个问题?
【问题讨论】:
我刚刚检查过,当使用“调试”或“运行”时,使用了所有 16 个内核,但在使用“配置文件”时,只使用了一个内核。另一个问题是内存,在我的调试/运行配置下。我使用 -Xmx32g 选项为 JVM 分配了 32GB,但是 TPTP 似乎没有分配内存……或处理器。 【参考方案1】:免责声明:我公司开发JProfiler
使用 JVMTI 的分析器不应该改变相对于常规执行的多核线程分布。 TPTP 可能不是您的最佳选择。
市场上有几种功能强大的 Java 分析器。最著名的免费选项是VisualVM,而在多线程和监视器争用分析领域具有更强大分析功能的商业替代选项是JProfiler - 有一个功能齐全的免费试用版。
【讨论】:
【参考方案2】:获取像YourKit 这样的真正分析器,并在启动时将代理添加到您的应用程序。
然后,您可以使用运行代理的端口打开一个 SSH 隧道,并且您可以远程分析您的应用程序。它在他们的论坛中有一个很好的文档和一个健康的社区。在我看来,YourKit 非常适合多线程应用程序,我经常使用它。
无需 VNC 和在生产服务器上安装 Eclipse。
【讨论】:
以上是关于在 Linux 系统上使用 Java / Eclipse TPTP 进行 16 线程 / 16 核心代码分析的主要内容,如果未能解决你的问题,请参考以下文章
在使用替代方案的 Linux 系统上,JAVA_HOME 的正确路径是啥?
在 Linux 系统上使用 Java / Eclipse TPTP 进行 16 线程 / 16 核心代码分析