On Tue, Feb 11, 2003 at 08:35:50AM +0100, Moncho Jeremy wrote: > Y-a-t'il moyen de de liberer (flush) la RAM sans rebooter?
Sous UNIX, lorsqu'un processus se termine (*), toute la mémoire utilisée est automatiquement rendue. (*) exceptions: - memory-leak du kernel (mais en général ça se voit) - crash en mode kernel - régions de mémoire partagée non rendus (voir la commande ipcs) - fichier temporaire (`mémoire disque') non effacés Probablement que vous voyez quelque chose comme: total used free shared buffers cached Mem: 127148 111328 15820 0 1856 45456 -/+ buffers/cache: 64016 63132 Swap: 248968 47000 201968 et vous vous dites, j'aimerais bien ne plus avoir de swap utilisé, et plein de mémoire *libre* (sous free). Réponse rapide: # swapoff -a; swapon -a # vide le swap Réponse longue: S'il n'y a pas ou très peu d'activité sur le swap (voir commande vmstat 5, colonnes si et so sur une longue durée), les données qui sont en swap ont donc été mises là pour une excellente raison: elles ne servaient à rien et la mémoire RAM libérée ainsi peut être utilisée pour de meilleurs usages (autres données, cache disque). De plus, à quoi sert d'avoir la RAM complètement libre si les entrées/sorties n'ont qu'un tout petit cache ? La mémoire libre, par définition, est gaspillée. En conséquences les systèmes UNIX modernes ajustent dynamiquement les paramètres de cache: ils laissent un peu de mémoire libre pour permettre aux interruptions (trafic réseau p.ex.) d'allouer atomiquement de la mémoire sans devoir swapper quelque chose ou écrire des buffers. Mais en théorie, si le système ne fait qu'écrire, par exemple, on finira par free petit, buffers très grand, et un peu d'activité de swap au début. Donc ce n'est pas le fait d'avoir des choses dans le swap qui est problématique, mais d'en avoir besoin (si et so élevés dans vmstat 5). Enfin, ce n'est pas parce que la mémoire libre n'augmente pas lorsqu'un processus se termine que la mémoire est perdue: il faut garder à l'esprit l'ensemble (swap, buffers, cached, free). D'ailleurs la commande free fait ce calcul: dans l'exemple ci-dessus, il y a en fait 63 MB de mémoire RAM libre, et 264 MB de mémoire libre. Dont 200 de swap (en dernier recours), 45 MB de cache lecture (donc dès qu'on en a besoin on peut l'utiliser comme mémoire normale), et 2 MB de cache écriture (qu'il faut écrire sur disque avant de pouvoir réutiliser). Tous ces paramètres sont contrôlables, mais à part quelques versions bancales (2.4.10 à 2.4.17) du kernel ça fonctionne en général bien tout seul. Donc en bref, rebooter votre machine donnera peut-être au début l'illusion d'une grande rapidité. -- http://www-internal.alphanet.ch/linux-leman/ avant de poser une question. Ouais, pour se désabonner aussi.