Les contenus de votre forum étant bien sympathiques, je me permet de me taper une petite incrust' pour papoter d'un OS que je découvre avec plaisir (FreeBSD).
La bestiole fonctionne plustot pas mal, et j'avale de la doc en même que je met en exploitation mon petit serveur de jeu.
Mais bon voila, je suis tombé sur un os (sans jeu de mots) et avant d'aller faire un petit post sur une liste de diffusion (core/hack) qui va bien, je préfère vous consulter.
Le contexte : J'utilise mon serveur et FreeBSD pour faire tourner un service de jeu Steam (Valve Software), plus précisément Left4Dead (binaire lancé : srcds_i486). Pour cela, j'utilise donc la compatibilité Abi Linux. La version que j'utilise actuellement est la 7.1-RC1. Après quelques petites configs sur une install de base, le bordel tourne --apparemment-- au poil. Donc je laisse fonctionner le serveur.
Le problème : Au bout de quelque jours, les 6 services lancés en parallèle tombent tous les un après les autres comme des mouches, en laissant en résidu, un gros coredump de plus de 600mo...
Après quelques investigations et un peu de monitoring des services fraîchement relancés, il s'avère que la taille de mémoire de mes binaires se met à enfler, lentement mais sûrement... Je ne peux pourtant pas incriminer le binaire de Valve, car sous Linux ce programme fonctionne nickel et l'espace mémoire occupé est constant (testé sur 3 semaines). Je penche donc pour un problème de fuite de mémoire sur le module de compatibilité Linux. J'ai fais quelques tests en recompilant ce module en statique dans le noyau, mais le résultat est le même.
J'ai bien été voir du coté du source localisé dans
/usr/src/sys/i386/linux mais la compréhension de ce code n'est pas à ma portée, et son debuggage encore moins. Mon amis google ne m'a pas été d'une grande aide sur ce coup là (ex : freebsd abi linux memory leak).
Si vous avez des suggestions concernant la résolution de ce type de problème ou si vous avez des adresses de gens à contacter (ou liste de diffusion / forums), je suis preneur !
Peex
Deux top assez informatif :
Code:last pid: 5830; load averages: 0.91, 1.00, 0.92 up 0+03:20:32 20:43:52
34 processes: 10 running, 24 sleeping
Mem: 740M Active, 1028M Inact, 138M Wired, 80M Cache, 112M Buf, 8264K Free
Swap: 2048M Total, 2048M Free
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
734 peex 1 57 0 219M 144M CPU1 1 36:44 20.65% srcds_i486
762 peex 1 8 0 244M 165M RUN 1 34:47 13.96% srcds_i486
744 peex 1 8 0 240M 160M RUN 1 30:36 12.89% srcds_i486
753 peex 1 8 0 259M 173M RUN 1 43:07 10.06% srcds_i486
...
Code:last pid: 57104; load averages: 1.08, 0.89, 0.71 up 0+19:34:23 12:57:43
33 processes: 1 running, 32 sleeping
Mem: 1195M Active, 502M Inact, 188M Wired, 97M Cache, 112M Buf, 10M Free
Swap: 2048M Total, 124K Used, 2048M Free
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
762 peex 1 8 0 368M 252M nanslp 0 118:50 17.87% srcds_i486
753 peex 1 8 0 406M 275M nanslp 1 176:25 17.58% srcds_i486
744 peex 1 8 0 391M 267M nanslp 1 134:00 13.96% srcds_i486
734 peex 1 44 0 381M 258M select 1 152:32 0.00% srcds_i486
...