Fontionnement mémoire cache Linux ?

Bonjour tout le monde, je voudrais avoir un éclairage sur l’utilisation de la mémoire cache.
Je me suis un peu documenté mais je n’arrive pas à comprendre quelque chose sur mon système :
Je possède 2Go de Ram. Après un peu d’utilisation (Chromium, virtualbox etc …), j’ai ma mémoire cache qui grimpe jusqu’à faire swapper mon système (genre 1500MO). Ma valeur pour /proc/sys/vm/swappiness est 40. Si je comprend bien, mon système aura tendance à swapper quand il me restera 40% de mémoire libre…
En cherchant sur le net, j’ai trouvé l’astuce qui permet de vider la mémoire cache : “echo 3 > /proc/sys/vm/drop_caches”.
Ce que je cherche à comprendre, c’est pourquoi la mémoire cache ne se vide pas régulièrement d’elle même alors que tous mes logiciels sont fermés et que mon système aurait besoin de ram libre pour éviter de swapper si j’en lance d’autres ???

Ma config : Fluxbox avec Debian testing/sid 2.6.39-2-amd64
J’espère avoir été assez clair et merci d’avance pour toute réponse, à bientôt.

Salut,

[quote]Ce que je cherche à comprendre, c’est pourquoi la mémoire cache ne se vide pas régulièrement d’elle même alors que tous mes logiciels sont fermés et que mon système aurait besoin de ram libre pour éviter de swapper si j’en lance d’autres ???
[/quote]

A quoi bon libérer de la mémoire avant que tu n’en aies besoin ? Et si par hasard tu relançais ma même application, le système serait obligé d’aller rechercher ce qu’il a en cache. :slightly_smiling:

S,

Tu es sûr de tes logiciels ? Cela sonne pas trop d’après moi.
Linux est vraiment très réputé pour sa mémoire, le peu que j’en ai étudié c’est vraiment bien : normallement il ne swappe pas du tout, surtout s’il a de la mémoire de libre : la seule explication que j’ai c’est que la mémoire apparaît libre mais quelle ne l’est pas (Je sais c’est bête à dire).
Ta commande me paraît plutôt corriger quelque chose qu’un des softs fait mal, je pense.
Faut faire les tests.
@+

Merci pour vos réponses, je vais essayer de voir du côté des softs.
Pour infos, qu’elle mécanisme libère le cache en ram, est ce l’application concernée ou le système qui décide de vider la mémoire cache utilisait par tel ou tel softs ???
Bonne journée à tous

Re,

Le système ne vide pas la mémoire cache, il prend dans le cache ce dont il a besoin :slightly_smiling:

rapiet, est-ce que tu peux nous dire comment tu fais pour voir quelle place occupe ta mémoire cache ?

Je fais free -m et je regarde la valeur du cache sur la dernière colonne de la 1ere ligne.

Plop , j’ai le même problème mais sur un serveur : Debian GNU/Linux 5.0.8 (lenny) 2.6.32-bpo.5-amd64 (SMP) x86_64
j’ai installer phpsysinfo pour voir l’utilisation de la RAM , il indique 59% (1.2Go) de ram qui est en cache je fait la commande echo 3 > /proc/sys/vm/drop_caches le cache redescend a 4% puis quelques minutes (20 a 30) le cache remonte a 50% !

Comment et à quoi sert la ram mis en cache (mysql) ?

Pour voir la mémoire je regarde aussi avec free -m

merci :wink:

Salut,

[quote]
Comment et à quoi sert la ram mis en cache (mysql) ? [/quote]

Voir mes réponses un peu plus haut :mrgreen:

C’est plus une question “à part”, ça, non ? À moins que mysql ne soit qu’un exemple parmi tant d’autres.
Le cache sert à éviter d’aller chercher loin ce qui peut rester près … En français, on parle de tampon, cache s’est peu à peu suplanté comme régulière pour régular avec les expressions rationnelles

Comme l’as précisé René Cougnenc, paix à son âme : “paquetage est le seul mot informatique de la langue française qui provient des militaires”.

D’autre part, le cache est “à priori” forcément de la ram, de part sa définition même, elle peut même se trouver ètre intégrée aux processeur(s).
@+

Je reviens pour mon soucis.
Après quelques temps d’analyse, il se passe bien ce que j’expliqué auparavant.
Ouverture de ma session fluxbox, lancement de plusieurs applis (nautilus, chromium, transmission …). A partir du moment où ma mémoire cache atteint 1.5Go sur mes 2 Go de dispo, le système swap et ne libère pas de mémoire cache. J’ai beau fermer toutes les applis mais le cache ne se vide jamais. Il swap constement ensuite.
Mon cache ne se vide qu’à 2 conditions :
Sois je ferme ma session fluxbox puis la réouvre, soit je réinitialise la cache dans /proc/sys/vm/drop_caches par la commande echo sous root.
J’ai bien compris que la mémoire dispo est utilisait à son max par linux pour accélérer son utilisation, mais mon cache ne se vide qu’à la fermeture de ma session…
J’utilise fluxbobx justement pour avoir un bureau des plus légers mais je me retrouve avec un système qui swap après un certains temps d’utilisation.
La gestion du cache est à priori dynamique, cela n’a pas l’air le cas chez moi.
Peut on connaitre combien de mo en cache est utilisé pas une application particulière ???

S,
Grr, pas d’idée … Si ce n’est vérifier dans le Bios la mémoire partagée pour la vidéo ; bref, de la bidouille que je ne connais pas.
Pour la commande que tu demandes, je t’avouerai sans fausse note que je n’en ai jamais eu besoin. Dès que je swap, je sais pourquoi !!!
Aussi, je ne vois pas comment, mis à part /dev/kcore, on peut savoir ça ???

Bon je reviens une dernière fois pour fermer le sujet.
Je n’ai finalement pas trouvé ce qui pouvais se passer sur mon système. Après pas mal de tests, j’ai l’impression que le cache généré par Chromium ne se libére pas si besoin. Il m’arrive souvent d’avoir 1Go de swap utilisait alors que je n’ai pas plus de 200Mo d’utiliser par mon système (tout le reste est en cache). La seule chose qui me libère du cache et la fermeture de ma session fluxbox.
Merci pour tout ceux qui m’on conseillé et bon week-end à tous.
Je reviendrai vers vous au cas ou j’aurai du nouveau.

Effectivement, n’hésite pas à donner davantage de détails si tu en as, c’est toujours une bonne chose de savoir d’où vient un problème même si on n’est pas spécialement concerné.