fabcoq a écrit :
J'ai remarqué en exécutant un logiciel qui demande beaucoup de mémoire que la mise en cache est grimpé à 3go et que la mémoire disponible n'était que de 1.5go.A la fin de l'exécution la mise en cache est en moyenne à 1 go.
|
Le cache n'est pas prioritaire pour la mémoire. Si un programme demande de la mémoire alors que tout est alloué, une partie de la mémoire utilisée par le cache sera immédiatement libérée, sans délai. Donc si le cache utilise 3Go, c'est que le programme n'en a pas l'utilité.
fabcoq a écrit :
ces 3 Go , ce sont des données qui proviennent du dd qui sont là au cas ou pour exécution du programme ils seraient utiles sans avoir besoin de les transférer de nouveau du dd.
|
Exactement.
En gros, le cache fonctionne comme suit: dès qu'un bloc de données est lu depuis le disque, ou écrit vers le disque, il est stocké en mémoire, au cas où il serait à nouveau demandé, et −dans le cas d'une écriture− en attendant qu'il soit effectivement écrit. Il y a aussi des lectures anticipées: lorsqu'un bloc d'un fichier est lu depuis le disque, les suivants (du même fichiers), voire le fichier entier, sont lus également et stockés dans le cache. Les systèmes de prefetch et readyboot utilise également le cache (je crois): le cache est rempli avant la moindre demande.
Ainsi, si on lance un même programme 2 fois de suite, le 2nd démarrage sera beaucoup plus rapide.
C'est en grande partie grâce au cache-disque qu'un ordinateur disposant de plus de RAM est plus rapide.
fabcoq a écrit :
Quand je faisais de la programmation en turbo pascal sous dos dans les années 90, j'utilisais des overlay chargé en ramdisk pour gagner du temps d'exécution, est-ce le même principe ?
|
Je ne me rappelle plus du tout ce qu'étaient des overlay en TP… En tout cas, le cache ne fonctionne pas comme un ramdisk (pas de secteur, pas de système de fichiers, et pas de fichier)
---------------
L'an dernier j'étais encore un peu prétentieux. Cette année, promis, je serai parfait. —— Brocante et dons