旧的和专有的Java应用程序在多个核心上崩溃


0

我必须在VM内部最近的debian系统上使用StarTeam 2005 CrossPlatform Client。如果VM配置为单核,则此工作正常。但是,如果我配置多个处理器和/或多个内核,应用程序会在启动时冻结,只显示启动画面。控制台上未显示错误跟踪。

是否有解决方法可以在多核环境中启动和运行此类应用程序?如果我想要签入或使用单核设置,我必须重新启动。我使用这个VM进行开发,make -j8比平原更有趣make;)

我试图破解对启动脚本的调用schedtool -a 0x1 -v -e java ...(将处理器亲和性设置为一个),但没有成功 - 相同的行为。

在较旧的设置(较旧的VM,较旧的Linux,相同的StarTeam)上也发生了同样的情况,但我没有那些版本号。这是当前系统的设置:

  • VMWare Workstation 9.0.3 build-1410761,已安装guest虚拟机
  • Debian Wheezy(Linux cmd-vm 3.2.0-4-686-pae#1 SMP Debian 3.2.46-1 + deb7u1 i686 GNU / Linux)
  • Java(TM)SE运行时环境(版本1.7.0_25-b15)
  • launch-script:LAXUNIX.SH - LaunchAnywhere(tm)5.0版
  • StarTeam跨平台客户端构建7.0.0-133

限制CPU是解决这个问题的唯一方法。环顾四周,像其他工具unix.stackexchange.com/questions/23106/...
Shiki 2014年

多数民众赞成我尝试过的schedtool。在taskset你所提到的问题,但也有趣失败,应用程序的启动画面消失- java进程是在这两种情况下100%的CPU负载。
彼得·沙伊德

你可以尝试使用strace,然后发布结果吗?
MariusMatutiae 2014年

很好 - 似乎,随着它变得足够缓慢,不会触发竞争条件--.-它失败了一次,当我倾倒到控制台而不是一个文件:pastebin.com/S0nTkz5g(或者我没等多久足够)。
彼得施奈德2014年

Answers:


0

如上所述,限制cpu核心的数量是不够的。我不得不用来cpulimit减少这个程序的cpu使用率:

在调用java之后,我在启动脚本中添加了这一行:

cpulimit -e java -l 25 -b

这将java限制为一个cpu / core的最大速度的25%。限制cpus的数量(-c不需要选项)。可能只是程序初始化中的竞争条件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.