From: Didier Belhomme <[EMAIL PROTECTED]>
Reply-To: "CyberMac" <[EMAIL PROTECTED]>
To: CyberMac <[EMAIL PROTECTED]>
Subject: Re: [CCMC] Gestion de la m�moire sous OS X ?
Date: Tue, 18 Feb 2003 22:14:05 +0100


Selon Eric Van Honacker <[EMAIL PROTECTED]>:

> Le mardi, 18 f�v 2003, � 15:09 Europe/Brussels, David Remacle a �crit :
> > Salut,
> > La question va peut �tre vous para�tre bizarre, mais voil� je la pose.

Mais non, ce n'est pas une question bizarre. Disons simplement qu'elle montre
combien l'habitude de travailler avec des OS (DOS, Windows, Mac OS Classique)
franchement mal foutu � ce niveau transforme un "bug" de ces OS en un
r�flexe "anormal" pour quiconque travaille avec un syst�me plus s�rieux � ce
niveau. Mais tr�ve de plaisanterie...

> > Comment os X g�re t-il sa m�moire ?

Le principe de base d'un syst�me bas� sur un noyau Unix est que tout programme
souhaitant utiliser ne serait-ce qu'un octet en m�moire doit demander
son "allocation" (malloc) au noyau qui en garde trace. Dans le cas o� le noyau
doit "liquider" une t�che parce qu'elle fait une r�f�rence � un espace m�moire
qu'elle n'a pas re�u, car pas demand� � l'OS, le noyau dispose de la liste
compl�te des espaces m�moires allou�s et peut donc lib�rer la totalit� de la
m�moire allou�e � ce processus. Il existe 2 exceptions � cette r�gle :

- les zones de m�moire partag�es (Shared Memory) qui, r�clam�es par un
processus, ne sont pas obligatoirement d�truites par ce m�me processus. En
effet, le principe d'une zone de m�moire partag�e est qu'elle est susceptible
d'�tre "r�cup�r�e" par un autre processus, et les donn�es qu'elle contient sont
�videmment sens�es �tre pouvoir relues par le second processus.

- certaines allocation m�moire qui, r�alis�e pour un processus utilisateur, se
retrouvent en fait allou�es par des devices drivers ou des modules du noyau,
lesquels ne sont pas obligatoirement avertis que le processus pour lequel ils
ont r�alis� cette allocation m�moire est termin�. Un exemple qui me vient � la
t�te : l'allocation de buffers lors d'une gravure d'un CD.

Cette derni�re situation dans laquelle la m�moire du syst�me s'�puise petit �
petit est ce qu'on appelle un ph�nom�ne de "memory leak". Il est plus
particuli�rement fr�quent quand on a des cycles entres diff�rents processus a-
>b->c->a qui doivent chacun faire une allocation m�moire pour le pr�c�dent. Le
fil des allocations m�moire devient parfois extr�mement difficile � retrouver,
� moins de fusiller l'ensemble des processus concern�s.

Dans le premier cas, il est normalement toujours possible � l'administrateur
d'identifier les zones de m�moire partag�es (commande ipcs sur les syst�me
UNIX) et de les supprimer manuellement. Dans le cas d'une allocation dans un
module, le d�chargement/rechargement du module r�soud � 99.99% le probl�me...
Encore faut-il pouvoir le faire *sans* red�marrer le syst�me.

C'�tait la th�orie.

Pour l'approche pragmatique : qu'au bout de 300 jours d'uptime un syst�me se
retrouve en renon de m�moire, c'est relativement normal. L'essentiel est de
jeter un coup d'oeil (par exemple, directement apr�s chaque ouverture de
session) sur la liste des processus et la m�moire allou�e. Si la liste est
stable, normalement il ne devrait pas y avoir moins de m�moire libre � chaque
ouverture de session. et s'il y a effectivement un probl�me, il faut identifier
le processus qui "bouffe" la m�moire (le plus souvent par une boucle sur un
malloc), le fusiller, et faire rapport au programmeur en indiquant le bug...

> > Est-ce que quand une application quitte (volontairement ou pas) elle
> > lib�re par la m�me la place en m�moire qu'elle occupais pour les
> > autres ?
>
> Normalement c un des avantages du X avec le fait qu'elle soit
> r�ellement prot�g�e mais d'autres technos plus pointus te
> l'expliquerons ds le d�tail... Hein les gars ;-))))
> >
> > Ou bien faut-il de temps en temps rebooter (comme sous os 9) pour
> > lib�rer plus de m�moire.
>
> X est fait pour rester en fonctionnement pdt de longues p�riodes donc
> ce serait un peu emb�tant... Perso, je lance et quitte bcp (la machine
> ne red�marre pas souvent) et je n'ai jamais eu de probl�mes similaires
> � ceux qui se produisaient sous le 9. Je quitte les apps par habitude
> sinon je pense que ce n'est m�me pas n�c�ssaire (une app ne consomme
> que ce qu'elle a besoin et donc si elle ne fait rien elle ne consomme
> presque rien en m�moire).

Si l'application est correctement programm�e, c'est tout � fait exact. Mais des
bugs dans les applications, �a existe :-)

> vh
--
Didier Belhomme
FUNDP - SIU
Unix Systems Manager

--
Avec i-mode, vivez une toute nouvelle experience de la communication
et des services en ligne. Plus d�info sur http://www.imode.be
CyberCafe 2.0 <http://www.cybercafe.tv> Chaque Mardi 19h15 sur La 2!
Desabonnement par email : <mailto:[EMAIL PROTECTED]>
/* => Start here */
Bonjour Didier.
Tr�s bonne explication et clair de +.

"...mais d'autres technos plus pointus te l'expliquerons ds le d�tail... Hein les gars ;-))))" ... probablement ;-) (Lire "Le complexe du Forum")

Je ne peux qu'encourager les gens d�sireux de comprendre les entrailles de OS.X d'utiliser <carbon.h> ou <cocoa.h> et faire un "projet" dans ProjetctBuilder. Personnellement j'ai boss� 6 ans avec Visual C++ qui est un tr�s bon produit M$(le seul � mes yeux) mais project builder (bien que manquant de fonctions int�ressantes) reste un superbe outil de d�veloppement, et �conomiquement imbattable, surtout qu'il est livr� avec des tonnes de tools (MallocBrowser, objectDescriptor, ...).

De plus Apple � �norm�ment de code source � disposition pour comprendre pas mal de choses sur les typedef/objects, l'EventLoop, des classes utilis�es, etc...

Si je peux peut-�tre rajouter � ton texte que chaques O.S. rend les choses plus ou moins complexes en ayant une d�finition propre du Garbage Collector, celui peut en effet "fusiller" (pour reprendre ton expression que je trouve .... massacrante ;-) un/des typedefs sans pHandle actifs sur malloc (->process zombie,...)... Et "le programmeur" � en effet pas mal de difficult� parfois � retrouver les processus parents... Je me souviens de certaines nuits caf��ne/Dafalgan/... parce qu'un "free()" �tait implicite, la source ayant �t� d�velopp�e sur un plateforme ou le Garbage Collector fonctionnait selon un mode pr�cis. Sur une autre plateforme ... mmmm disons que ce mode n'�tait pas aussi pr�cis ...

Il devrait en th�orie avoir un free() d�fini par malloc() d�fini (de fa�on statique ou non, liste cha�n�e de pointeurs sur structures, ...).
Mais des tonnes d'outils comme Lint permettent de "bien coder" ou du moins d�passe simplement la notion de syntax...

J'ai qqs iBook ice 2002 depuis l'ann�e pass�. Je les utilise surtout pour comprendre dans mon LAN comment OS.X "per�oit" son environnement et pour d�velopper en C, CiscPPC750,... (j'avoue tout ... parfois pour jouer � MacMame, le seul jeux/emulateur que j'utilise ... aaahhh nostalgie). Je ne suis pas vraiment un "user" au sens Marketing et je me fous un peu/royallement des applications bureautiques OR iApps ...
Ca fait maintenant 1 an 1/2 que je n'ai �teint aucunes de ses machines (je les mets en suspend mode pour �conomie d'�nergie/�cran, mais les objects restent en mem). Je ferme aussi les applications par r�flexes, trop habitu� � Merdoze_All_Version, mais les applications ne font qu'une instantiation des objects d�j� appartenant � l'O.S. => pas vraiment de ressources suppl�mentaires (1 word align� par pointeurs), � part les propres objects de l'applicatif m�me ...

Je n'ai jamais plant� le Kernel OS.X.
J'ai souvent eu quelques petites injures (des malloc() pas tr�s malins de ma part ou des typedef foireux) ou des crashes d'applications (parfois erratiques... mais l'O.S. n'est pas vraiment responsable).
Il est amusant tout de m�me que les seuls applications � crasher de fa�on "magie noire" soient made-in-Billou (Entourage est le roi, IE. suit de pr�s, lui-m�me suivi de pr�s par la suite Office et talonn� par Messenger)... Enfin on va encore dire que je m�dis... mais sur mon petit labo, en 1 an de tests, plus de 90% des crashes applicatifs viennent d'Entourage, IE, Ms-Word (qui lui plante sans m�me toucher au clavier ni � la souris .. il ne lui manque plus qu'une fonction pHandle fnRandomAutoReboot (pHandleContent *void, szContent) et ca sera parfait).
Mais je n'ai jamais d� "rebooter" � froid mes Mac sous OS.X. Heureusement le terminal permet bien des choses ... Dommage que cette culture apparemment heurte les Apple users de longue date. Certains IT specialists Apple (r�actions lues dans les forums de Cuppertino), qui trouvent que l'on fait un bond de 30 ans en arri�re en r�-instaurant un terminal et que certaines fonctions ne soient pas accessibles sous GUI... Mwais ... Digne de postuler chez Billou & Co.

A titre d'info, je jure devant Dieu qu'une clean install des anciens O.S. sur des PowerG4 400mhz donnait des plantages s�v�res (juste retirer la prise de courant comme seule alternative) parce que j'avais os� d�plac� une fen�tre � l'�cran. Cela avec l'O.S. fraichement install� et aucunes autres applications encore install�e. Je me pose encore de solides questions sur le sujet mais je n'ai aucun background des OS. ...->9.x, donc je ne peux �mettre de jugements pertinents ...
Je suis un "switcher" ;-) fraichement d�barqu� dans le monde Mac depuis 1 an 1/2. Mais j'ai vir� le jour m�me OS.9 de mes Hdd (idem que sur PowerG4 ... Tu bouges � une fen�tre : Pan! t'es mort de partout... Allez, abaisse toi et retire la prise). Si ce probl�me �tait li� � une machine isol�e je comprendrais. Que cela se produise sur un parc de 30 Mac (PowerG4, iBook, eMac, iMac, ...) �a devient une "rule". Mais l� encore peut-�tre qu'il faut configurer la RAM ou autres �l�ments de fa�on pr�cise avant de chipoter ... Reste que cela fait un peu...bizzare. De m�moire W95 plantait moins ... (comment se faire des amis sur un Forum Apple)
N'emp�che... Ma copine est infographiste et ne jure que par OS9.2 (ou 1.2 je ne sais plus) et elle utilise 4 ou 5 logiciels. Toujours les m�mes depuis des mois/ann�es (photoshop, xPress, ...).
Certains jour (en travaillant sur les m�ms fichiers hein !!!) elle n'a ancun plantage de chez "aucun & co.". Certains jours �a bombe dur de dur toutes les 10min ... Moi �a me laisse perplexe.
J'ai impos� OS.X � la maison sur son iMac (Indesign2 � la place d'xPress commence � �tre admis ;-)), et elle n'a jamais plant�, ni l'application, ni l'O.S. ... Je pense (de mon point de vue qui par nature est subjectif) qu'il y a l� de quoi s'interroger sur la "qualit�" de l'O.S. (attention je ne juge pas les gens qui aiment OS...->9.x, loin de moi cette id�e !!! Je parle juste de quelques constatations de ma petite et courte exp�rience)
Je termine mon Roman (ou prose selon certaines signatures de reply ;-)) par une question:
J'�tais habitu� � Lint que j'avais int�gr� � Visual Studio 6. J'aurais aim� savoir si il existe une solution native pour os.x et project builder.
Je pense que Lint pourrait fonctionner en mode "stand alone" sous Terminal, mais j'aimerais (comme CVS le fait d�j�) l'int�grer dans Project Builder...
Suggestions bienvenues!

Bien � toutes && tous,
Bonne journ�e,

@242


_________________________________________________________________



--
Avec i-mode, vivez une toute nouvelle experience de la communication et des services en ligne. Plus d�info sur http://www.imode.be
CyberCafe 2.0 <http://www.cybercafe.tv> Chaque Mardi 19h15 sur La 2!
Desabonnement par email : <mailto:[EMAIL PROTECTED]>

Répondre à