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

Re: [linux]



Hello !

On Fri, Jul 27, 2001 at 05:44:12AM +0200, rno wrote:
[.../...] 
> Qu'est ce qu'on risque à ne pas respecter la rêgle?
> Là je suis en 2.2.19, j'ai un 2.4.5 sur un cd de lmf donc je pourrais
> y passer, mais à cause de mon partitionnement, je ne peux plus trop
> changer ma swap, j'aurais donc swap=ram/2 (128 swap - 256 ram)
> 
> Est ce que je peux le faire quand même, sachant qu'avec 256M et que
> cette machine ne swappe jamais d'habitude, ou j'attend le 2.5?

Tu peux toujours essayer, tant que ce n'est pas sur un serveur en
production ... cependant, il est fortement conseillé de ne pas poster un
bug report sur la liste du kernel si tu obtiens des erreurs OOM (Out Of
Memory) !

En fait, ça dépend de la pression que tu mets sur la mémoire de ta
machine. Si tu as de nombreux processus qui ont une durée de vie fort
longue, c'est fort risqué. Voilà ce qu'il se passe en réalité (IIRC) :

- Tout processus qui se trouve en mémoire risque d'être petit à petit
  swappé au fur et à mesure que les caches disques et d'autres processus
  utilisent la mémoire. Ce n'est pas parce que tous tes processus
  tiennent dans ta RAM que cela n'arrivera pas : le kernel peut en décider
  autrement, ne serait-ce qu'à cause d'une activité disque plus importante
  (un job updatedb, backup, etc., par exemple) ;

- Quand ton processus redémarre, le kernel va rechercher les pages dans
  le swap et les *copie* en mémoire. C'est ce point qui est important :
  après un swapin/swapout, il existe *deux* copies de la page : une
  éventuellement dirty en mémoire et l'autre dans le swap ;

- Les pages de ton processus qui se trouvent dans le swap y resteront
  *pendant toute la durée de vie de ce process*. Cela permet d'éviter
  une 'réallocation' d'espace swap si la page doit de nouveau être swappée
  out. De plus, en cas de « trashing », il y a beaucoup de chances qu'une
  page qui vient d'être récupérée par un swapin ne soit pas encore dirty
  et puisse être abandonnée sans besoin de refaire un swapout fort
  coûteux.

On peut donc résumer l'histoire de la sorte : avec un kernel 2.2, on a
toujours :

	Mémoire disponible = RAM + swap

Avec un 2.4, on a :

	Mémoire disponible = RAM + swap - dup_pages ()		(1)

où dup_pages () est une valeur variable en fonction de la charge du
système (I/O et mémoire), et qui correspond au nombre de pages qui sont
à la fois dans la RAM et dans la swap. Il est forcément garanti que :

	0 <= dup_pages () <= MIN (RAM, swap)

Si tu as moins de swap que de RAM, il est fort probable que tu te
retrouves avec un swap *complètement* plein lors d'une utilisation un
peu prolongée du système (puisque tu arriveras à dup_pages () == swap
dans (1)). Si à ce moment, tu as 230 MB de RAM utilisée et que tu as le
malheur d'ouvrir une image un peu grosse, BOUM ! OOM, avec tous les
désagréments que cela comporte (tu n'as plus que 26 MB de latitude,
alors que tu en aurais eu 26 + swap MB avec un 2.2). Pas bien.

J'espère que ça explique un peu la chose. J'essaierai de faire plus
clair/court la prochaine fois ;)

Cu,
Dash.

-- 
Free Dmitry Sklyarov !
-- 
Damien Diederen
dash@linuxbe.org
http://users.swing.be/diederen/

[ Soyez précis dans vos sujets svp afin de déterminer directement  ]
[ le type de demande...                                            ]
[ Pour vous (dés)inscrire, aller sur http://linuxbe.org/ml.php     ]
[ Archives de la mailing list: http://archives.linuxbe.org/linux/  ]
[ http://LinuxBe.org              Contact: listmaster@linuxbe.org  ]