Pris un signal fatal:SIGBUS(7) sur le nœud 2/32
Question
Je suis en train de lancer NAS-UPC de repères sur une 32 nœud de cluster.
Il fonctionne très bien dans les cas où le problème de taille est petite .Quand je sors d'un gros problème de taille (CLASSE D), j'ai cette erreur (par MG de référence)
*** Caught a fatal signal: SIGBUS(7) on node 2/32
p4_error: latest msg from perror: Bad file descriptor
*** Caught a signal: SIGPIPE(13) on node 0/32
p4_error: latest msg from perror: Bad file descriptor
p4_error: latest msg from perror: Bad file descriptor
*** FATAL ERROR: recursion failure in AMMPI_SPMDExit
*** Caught a signal: SIGPIPE(13) on node 27/32
*** Caught a signal: SIGPIPE(13) on node 20/32
*** Caught a signal: SIGPIPE(13) on node 21/32
p4_error: latest msg from perror: Bad file descriptor
*** FATAL ERROR: recursion failure in AMMPI_SPMDExit
*** FATAL ERROR: recursion failure in AMMPI_SPMDExit
*** FATAL ERROR: recursion failure in AMMPI_SPMDExit
*** Caught a signal: SIGPIPE(13) on node 16/32
*** FATAL ERROR: recursion failure in AMMPI_SPMDExit
Quelqu'un peut-il expliquer pourquoi ce qui se passe , Et si quelqu'un a vu cette erreur avant et il fixe ?
EDIT :Compris c'est une mémoire liée au problème .Mais je suis incapable de allott bonne quantité de mémoire pour une application au moment de la compilation
La solution 2
J'ai pensé que c'était un problème avec le benchmark nécessitant plus de mémoire que je ne l'avais alloué lors de la compilation.
Autres conseils
De vérifier dmesg
sortie - il peut être un problème de mémoire.Ou encore, il peut être un peu de ulimit -a
atteint, par exempleun stacksize (par défaut la taille de la pile est trop faible pour certains NAS tâches).
Si vous avez des lignes comme "Out of Memory:Tué processus ###" dans dmesg
sortie sur l'un de vos machines - cela signifie que votre programme requis (et essayé d'utiliser beaucoup de mémoire, plus grand que votre système d'exploitation peut donner à la demande.Il y a plusieurs limites de la mémoire:
ulimit -v
- limite de l'utilisateur pour la taille de la mémoire virtuelle.Vérifiez tous lesulimit -a
également les limites, mais il semble que votre cas n'est-ce pas- Vous pouvez utiliser pas plus de mémoire que vous avez de mémoire RAM totale et tous les swap tailles (vérifier avec
free
de commande).Mais si votre application utilise plus de mémoire que la taille de la RAM, et commencer à faire de la permutation de - la performance sera mauvais (dans la plupart des cas). - Il y a architecturale des limites de la mémoire maximale admissibles à un seul processus.Pour 32-bits des nœuds de cette limite peut être de 1(cas très rare) à 2, 3, 4 GB.Même si votre système 32 bits ont >4 GO de mémoire, par exempleavec l'aide de PAE - pas un seul processus peut prendre plus de 4 Go.Une grande partie de 4 go espace virtuel aussi pris par l'OS (à partir de centaines de MO à Sgb).