J'essaie de diagnostiquer des erreurs de segmentation aléatoires sur un serveur sans tête et une chose qui semble curieuse est qu'elles ne semblent se produire que sous la pression de la mémoire et ma taille de swap ne dépassera pas 0.
Comment forcer ma machine à permuter pour m'assurer qu'elle fonctionne correctement?
orca ~ # free
total used free shared buffers cached
Mem: 1551140 1472392 78748 0 333920 1046368
-/+ buffers/cache: 92104 1459036
Swap: 1060280 0 1060280
orca ~ # swapon -s
Filename Type Size Used Priority
/dev/sdb2 partition 1060280 0 -1
kern.log
au moment des erreurs de segmentation? Un message suroom-killer
indiquerait que votre système n'a pas assez de mémoire virtuelle, ce qui pourrait signifier que le swap n'est pas utilisé. S'agit-il d'un serveur virtualisé (et de quel type)?segfault at 54 ip b7619ba8 sp bf9c3380 error 4
je pense que c'est un problème matériel qui va être difficile à retrouver. Il s'agit d'un serveur physique avec deux processeurs Athlon MP 2000+ et 1,5 Go de RAM. Il fonctionne de manière assez stable mais segfaults lors des compilations.Réponses:
Est-ce Linux? Si oui, vous pouvez essayer ce qui suit:
Et puis, utilisez un ou des programmes qui utilisent beaucoup de RAM ou écrivez une petite application qui mange de la mémoire vive. Ce qui suit fera cela (source: http://www.linuxatemyram.com/play.html ):
J'ai ajouté le sommeil (1) afin de vous donner plus de temps pour regarder les processus pendant qu'il engloutit le bélier et échange. Le tueur OOM devrait tuer cela une fois que vous êtes hors de RAM et SWAP pour donner au programme. Vous pouvez le compiler avec
où filename.c est le fichier dans lequel vous enregistrez le programme ci-dessus. Ensuite, vous pouvez l'exécuter avec ./memeater.
Je ne ferais pas ça sur une machine de production.
la source
/proc/self/oom_score_adj
s'assurer qu'il est la victime la plus probable du tueur OOM ...<unistd.h>
pour dormir, sinon il lance un avertissementwarning: implicit declaration of function ‘sleep’;