[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Nettoyer le swap ?



On 25 Jan 2003 03:01:08 +0100
Peix Fabrice <fabrice.peix@sophia.inria.fr> wrote:

> On Fri, 2003-01-24 at 14:09, François Boisson wrote:
> > On Fri, 24 Jan 2003 09:59:05 +0100
> > Emmanuel.Dubois@linedata.com wrote:
> > 
> > > Salut la liste.
> > > 
> > > En démarrant mon système (sarge, noyau 2.4.18, enlightement, ni
> > > gnome, ni kde), un
...
> > exemple utilisées seulement à l'initialisation restent sur le swap. Il
> > faut se méfier des interprétations de l'occupation mémoire,
> > rapidement, toute la mémoire est utilisée mais une partie souvent
> > importante sert en fait de cache pour les entrées/sorties. Bref, faire
> > confiance au noyau sur ce point et penser que ce système de mémoire
> > virtuelle, source de polémique d'ailleurs pour le noyau 2.4, commence
> > à être sérieusement au point.
> Plus precisement le noyau cache aussi le swap.

Je ne comprends pas ce que cela peut vouloir dire: le swap est constitué
de plages mémoires provisoirement écrites sur le disque afin de libérer de
la RAM, cacher le swap signifierait

1) conserver en mémoire une image disque d'une plage mémoire que  l'on
veut récupérer la place: démarche idiote...

ou bien

2) Le mécanisme du swap prévoirait systématiquement de mettre sur disque
une plage mémoire où il n'a a pas eu d'accès depuis un certain temps (ce
n'est pas le cas à mon avis mais bon), cacher le swap signifierait dans ce
cas conserver qd même cette plage tant qu'il y a de la place. Démarche
compliquée...

Peux tu m'expliquer?

> >  Par contre, j'aimerai savoir comment le noyau procède en cas de
> > grosse demande d'un seul coup: Gèle-t-il des processus et bascule
> > l'ensemble sur Swap? et bien sûr, il reste la question sempiternelle:
> Les pages ne sont pas alloue a la demande mais lorsque l'on ecrit
> dedans.

Oui, c'est ce que j'entendais par "demande" mais l'écriture n'est pas
obligatoire: Lorsqu'on fait un malloc, la mémoire est systématiquement
initialisée à 0 (voir source du noyau, c'est pour éviter de pouvoir lire
indirectement le contenu de la mémoire vive), donc si on fait

tab = (char *) malloc(10000000);
c = tab[3141592];

la simple consultation de la plage mémoire demandée commence par une
initialisation à 0 et donc par une écriture par le noyau; la page est crée
bien qu'il n'y ait pas eu d'écriture à proprement parler.

> > pourquoi le swap doit-il faite deux fois la taille de la mémoire vive?
> > (beaucoup de réponses mais aucune claires, il semble effectivement que
> > en cas de grosse demande, le swap soit sollicité très brusquement et
> > que ça bloque pour un swap trop petit (c'est le cas chez moi) mais
> > c'est juste une constatation).

Francois Boisson



Reply to: