Comment peut-on optimiser la gestion de la RAM sous fedora. Sur ma fc x86_64, je constate en effet (via la commande top) que la mémoire n'est semble-t-il pas libérée après la fermeture des appli qui l'ont sollicitée. Et, à la longue, la ram disponible s'amenuise. Vrai problème. Je suis preneur de tous tuyaux. Pierre
Optimiser gestion mémoire ?
L'exploitation de la mémoire, sous Linux, ne s'assimile surtout pas à son exploitation sous Windows. Sans entrer dans détail, on retiendra que le résultat de top n'indique pas réellement l'utilisation de la mémoire par les programmes (la mémoire est toujours réputée utilisée à 100%).
L'indicateur qui traduit un pb de mémoire est bien plus le swap utilisé ...
Exemple d'un système moyennement chargé:
Tasks: 83 total, 1 running, 82 sleeping, 0 stopped, 0 zombie
Cpu(s): 21.5% us, 4.6% sy, 0.3% ni, 72.9% id, 0.0% wa, 0.7% hi, 0.0% si
Mem: 378028k total, 369180k used, 8848k free, 30236k buffers
Swap: 786424k total, 195620k used, 590804k free, 130660k cached
L'indicateur qui traduit un pb de mémoire est bien plus le swap utilisé ...
Exemple d'un système moyennement chargé:
Tasks: 83 total, 1 running, 82 sleeping, 0 stopped, 0 zombie
Cpu(s): 21.5% us, 4.6% sy, 0.3% ni, 72.9% id, 0.0% wa, 0.7% hi, 0.0% si
Mem: 378028k total, 369180k used, 8848k free, 30236k buffers
Swap: 786424k total, 195620k used, 590804k free, 130660k cached
Salut,
Je rejoins herrib dans son explication.
Linux cherche à exploiter toute la mémoire physique ( RAM) à sa disposition pour en faire le meilleur usage à un instant donné. Si les process ne consomment que peu de mémoire, le kernel utilise le reste de la mémoire pour le buffer cache ( les I/O filesystems sont bufférisées pour des raisons évidentes de gain de performance). Si les process veulent un peu plus de mémoire, le kernel enlève une partie de la mémoire utilisée par le cache pour la redonner aux process.
Avoir une freemem faible n'est pas inquétant tant le système ne swappe pas.
Si le système commence à swapper, il faut commencer à se poser des questions : est-ce que la RAM est insuffisante? Problème de memory leak ( d'origine kernel ou applicatif ? ) etc...
-----------------------------
Je rejoins herrib dans son explication.
Linux cherche à exploiter toute la mémoire physique ( RAM) à sa disposition pour en faire le meilleur usage à un instant donné. Si les process ne consomment que peu de mémoire, le kernel utilise le reste de la mémoire pour le buffer cache ( les I/O filesystems sont bufférisées pour des raisons évidentes de gain de performance). Si les process veulent un peu plus de mémoire, le kernel enlève une partie de la mémoire utilisée par le cache pour la redonner aux process.
Avoir une freemem faible n'est pas inquétant tant le système ne swappe pas.
Si le système commence à swapper, il faut commencer à se poser des questions : est-ce que la RAM est insuffisante? Problème de memory leak ( d'origine kernel ou applicatif ? ) etc...
-----------------------------
Tu as raison. Car en utilisant la commande free -m, appaît effectivement l'usage détaillée. Exemple sur ma bécane :
-----------
[pierre@localhost ~]$ free -m
total used free shared buffers cached
Mem: 1001 903 97 0 68 441
-/+ buffers/cache: 393 607
Swap: 2000 0 2000
[pierre@localhost ~]$
------------
L'indicateur important, c'est, d'après ce que je sais, le 393 Mo (ligne buffer/cache), en fait l'espace mémoire réellement utilisé. Cela dit, ça ne retire pas l'intérêt de ma question. Pour faire court, j'ai désactivé les services d'arrière plan qui ne me servent pas. Car un problème demeure : la libération de la mémoire qui n'est plus utilisée. Avant de passer à 1 Go de mémoire, ma bécane a planté plusieurs fois dans la même journée, sans même que je puisse utiliser une commande du type ctl-alt-F2 : tout était figé. Résultat des courses : un redémarrage par reset qu'en génaral, Linux n'aprécie guère (avec à l'arrivée, l'obligation de se résigner à utiliser un fsck en force pour récupérer une partition...).
Bref, s'il y avait un moyen simple d'améliorer la gestion mémoire, je reste preneur, car ma bécane reste allumée en permanence. Jusque-là, seul un redémarrage ramène l'occupation mémoire à sa réalité. Un bon post sur la question, récupéré sur le forum Gentoo : http://forums.gentoo.org/viewtopic.php?t=175419 (anglais)
http://forums.gentoo.org/viewtopic.php?p=1210748 (traduction française)
Pierre
-----------
[pierre@localhost ~]$ free -m
total used free shared buffers cached
Mem: 1001 903 97 0 68 441
-/+ buffers/cache: 393 607
Swap: 2000 0 2000
[pierre@localhost ~]$
------------
L'indicateur important, c'est, d'après ce que je sais, le 393 Mo (ligne buffer/cache), en fait l'espace mémoire réellement utilisé. Cela dit, ça ne retire pas l'intérêt de ma question. Pour faire court, j'ai désactivé les services d'arrière plan qui ne me servent pas. Car un problème demeure : la libération de la mémoire qui n'est plus utilisée. Avant de passer à 1 Go de mémoire, ma bécane a planté plusieurs fois dans la même journée, sans même que je puisse utiliser une commande du type ctl-alt-F2 : tout était figé. Résultat des courses : un redémarrage par reset qu'en génaral, Linux n'aprécie guère (avec à l'arrivée, l'obligation de se résigner à utiliser un fsck en force pour récupérer une partition...).
Bref, s'il y avait un moyen simple d'améliorer la gestion mémoire, je reste preneur, car ma bécane reste allumée en permanence. Jusque-là, seul un redémarrage ramène l'occupation mémoire à sa réalité. Un bon post sur la question, récupéré sur le forum Gentoo : http://forums.gentoo.org/viewtopic.php?t=175419 (anglais)
http://forums.gentoo.org/viewtopic.php?p=1210748 (traduction française)
Pierre
Pour faire court : linux utilise toute la mémoire libre pour ses buffers. Il libère ce qu'il faut en fonction des besoins.
Donc une mémoire à 100% c'est normal.
Moi je regarde le contenu de /proc/meminfo, en particulier la ligne Commited_AS. Cf Doc meminfo.
J'ai de nombreux serveurs sous Linux (RH et FC) que je ne 'reboot' quasi jamais (changement de noyau) sans aucun problème.
Tu devrais sans doute tester la qualité de tes barettes mémoires avec memtest (en bootant sur le CD 1).
Windows utilise moins(différement) la mémoire et les problèmes de barettes défecteuses ne sont pas toujours détectés aussi vite.
A++
Donc une mémoire à 100% c'est normal.
Moi je regarde le contenu de /proc/meminfo, en particulier la ligne Commited_AS. Cf Doc meminfo.
J'ai de nombreux serveurs sous Linux (RH et FC) que je ne 'reboot' quasi jamais (changement de noyau) sans aucun problème.
Tu devrais sans doute tester la qualité de tes barettes mémoires avec memtest (en bootant sur le CD 1).
Windows utilise moins(différement) la mémoire et les problèmes de barettes défecteuses ne sont pas toujours détectés aussi vite.
A++