Aller au contenu | Aller au menu | Aller à la recherche

jeudi, avril 19 2007

De l'inutilité de top....

J'ai recu des demandes d'un nombreux collègue pour écrire quelquechose à propos de la commande UNIX top(1).

Soyons clairs: cette commande ne sert pas à grand chose....

La question du jour était la différence entre "Size" et "Res", et la réponse à la grande question qui empèche aujourd'hui encore une meilleure compréhension de grands mystères comme l'originie de l'univers, la reproduction des huitres du bassin d'arcachon, la capacité des femmes a causer string et maquillage pendant toute une après midi ou la signification exacte des chiffres alignés sur une feuille d'impots: comment faire pour savoir *vraiment* quelle est la consommation mémoire d'un programme ?

Et, après quelques expérimentations, la réponse reste désespérément "on sait pas"....

Res indique manifestement la quantité de mémoire du processus qui est vraiment "utilisée" en mémoire vive.

Un premier test en laboratoire (attention, les enfants, ne faites pas ca chez vous, cette expérience a été réalisée par un professionel !!!) permet de constater que la mémoire n'apparaitra pas en "Res" tant qu'elle n'est pas utilisée:

int main(void){
	char *p=malloc(128*1024*1024);
	int i;
	
	sleep(10);
	printf("1");
	
	for(i=0; i<128*1024*1024; i++)
		p[i]='a';
	printf("2");
	
	sleep(5);
	printf("3");
	free(p);
	p=NULL;
	
	sleep(5);
	printf("4");
}

En exécutant ce programme, on constate que "Size" gonfle tout de suite, alors que "Res" ne gonflera que entre "1" et "2".

Par contre, si on regarde la fin de l'exécution, on constate que ni "Size" ni "Res" ne diminuent après l'appel a free(3). Après quelques instants de frayeur, ou une équipe quasi complète d'ingénierie a failli renier ses croyances les plus profondes pour aller élever des chèvres dans le larzac (je vous avais prévenu que c'est dangereux, et qu'il faut pas faire ca chez vous !!!), je tente un 2eme test: je transforme mon main() en fonction locale, et je crée un nouveau main() qui va appeler plusieurs fois d'affilée ma fonction.

La tension a tout de suite baissé d'un cran quand nous avons constaté que ni "Size" ni "Res" ne gonflaient, et que la consommation mémoire restait stable quelque soit le nombre d'appels. Ouf, l'univers peut encore continuer de fonctionner.

Mais tout ca nous a quand meme confirmé une chose: ni "Size" ni "Res" ne nous montrent la consommation "réelle" d'un programme, mais nous montrent au mieux un "pic" (et encore, je vous fais grace des caches disques qui apparaissent dans "Size", et qui peuvent ammener une équipe de développeurs a passer plusieurs journées à chasser un Memory Leak qui n'existe pas, ambiance garantie !).....

Bref, l'univers peut continuer de tourner, certes, mais c'est pas aujourd'hui que je comprendrai comment certaines de mes copines peuvent parler de leur string pendant toute une après midi........

Wouhouh, je suis "in', j'ai mon blog, 2eme......

Apres environ 2 eternités à me dire "faudrait que je fasse un blog", et apres 2 jours de bagarre avec Free et Dotclear (enfin, surtout a attendre que mes changements de base de donnée soient activés....), me voila enfin dans le monde moderne, avec mon blog !!!

Je vais enfin pouvoir mettre toutes mes sautes d'humeur à disposition du monde entier, donner plein d'infos techniques en anglais sur des sujets pointus, médire sur mes collègues, parler de "huge dildos", bien sur, le tout à un rythme qui devrait rapidement passer à 2-3 messages par an au moins, pour peu que je me souvienne de mon mot de passe.....

Mais on n'est jamais trop prudent, meme un blog rempli n'importe comment, pratiquement jamais et donc totallement inintéressant peut tout à fait etre lu par des gens, donc une précaution supplémentaire s'impose: ne SURTOUT PAS diffuser l'adresse de ce blog !!!!

Tout ca donc pour dire: bienvenue à toi, lecteur qui s'est égaré de facon hautement improbable sur ce blog, et bonne lecture si d'aventure je me décidais a vraiment remplir ce truc !!!!

A +

VANHU, super corporate, maintenant que j'ai mon blog ! ;-)

Update: après une nouvelle bagarre avec Dotclear, et une réinstallation "from scratch", voila enfin mon blog de retour, avec des liens valables, et, parait-il, avec meme des lecteurs !!!!

page 4 de 4 -