application Java ancienne et propriétaire se bloque sur plusieurs cœurs

0

Je dois utiliser le client StarTeam 2005 CrossPlatform sur un système Debian récent dans une machine virtuelle. Cela fonctionne correctement si la machine virtuelle est configurée pour un cœur. Mais si je configure plusieurs processeurs et / ou plusieurs cœurs, l'application se fige au démarrage et ne montre que l'écran de démarrage. Aucune trace d'erreur n'est affichée sur la console.

Existe-t-il une solution de rechange pour que de telles applications soient opérationnelles sur un environnement multi-core? De manière courante, je dois soit redémarrer, si je veux me connecter ou travailler avec une configuration mono-core. J'utilise cette machine virtuelle pour le développement et make -j8c'est plus amusant qu'une simple plaine make;)

J'ai essayé de pirater un appel dans le script de démarrage comme schedtool -a 0x1 -v -e java ...(définition de l'affinité processeur) mais sans succès - même comportement.

La même chose s’est produite avec une ancienne installation (ancienne VM, ancien Linux, même StarTeam), mais je n’ai pas les numéros de version de ceux-ci. Voici la configuration du système actuel:

  • VMWare Workstation 9.0.3 build-1410761, ajout d'invités installé
  • Debian Wheezy (Linux cmd-vm 3.2.0-4-686-pae # 1 SMP Debian 3.2.46-1 + deb7u1 i686 GNU / Linux)
  • Environnement d'exécution Java SE (version 1.7.0_25-b15)
  • launch-script: LAXUNIX.SH - LaunchAnywhere (tm) version 5.0
  • StarTeam Cross Platform Client Build 7.0.0-133
Peter Schneider
la source
Limiter le processeur est le seul moyen de résoudre ce problème. Recherchez d'autres outils comme unix.stackexchange.com/questions/23106/… .
Shiki
Thats ce que j'ai essayé avec schedtool. La tasksetquestion de la question que vous avez mentionnée échoue également, mais il est intéressant de noter que l'écran de démarrage de l'application disparaît - le processus Java est à une charge de 100% du processeur dans les deux scénarios.
Peter Schneider
Pouvez-vous essayer d'utiliser strace, puis poster le résultat?
MariusMatutiae
Nice - Il semble, avec strace il devient assez lent pour ne pas déclencher une condition de course -.- Il a plutôt échoué une fois, quand je déversait sur la console dans un fichier: pastebin.com/S0nTkz5g (ou je n'ai pas attendre longtemps suffisant).
Peter Schneider le

Réponses:

0

Comme indiqué ci-dessus, limiter le nombre de cœurs de processeurs n'était pas suffisant. J'ai dû utiliser cpulimitpour diminuer l'utilisation de ce programme par le processeur:

Directement après avoir appelé Java, j'ai ajouté cette ligne dans le script de démarrage:

cpulimit -e java -l 25 -b

Cela limite Java à 25% de la vitesse maximale d'un processeur / unité centrale. Limiter le nombre de processeurs (l' -coption n'est pas nécessaire). Probablement juste une condition de concurrence dans l'initialisation du programme.

Peter Schneider
la source