Le prochaine accès à une telle page provoquera un major pagefault, et le noyau va aller la rechercher depuis le disque.
C'est justement le but de la manœuvre: ne pas avoir besoin de les récupérer sur le disque.
Tout à fait d'accord. Mais ce n'est ce sur quoi je réagissait. patrick_g a dit :
les pages en statut « clean » peuvent être « enlevées » de la mémoire physique. Ce mécanisme d’éviction (memory reclaiming) va enregistrer les pages dans leur espace de stockage particulier.
Or, une page clean n'est pas enregistrées sur le disque. Son entrée dans la page table est simplement suprimée, et la RAM qu'elle utilisait est de suite disponible pour y mettre une autre page (du même processus, ou d'un autre).
Seules les pages dirty sont écrites sur le disque.
Maintenant, ce nouveau mécanisme ajoute une étape intermédiaire : plutôt que de trasher la page, elle est envoyée au cleancache qui va la stocker temporairement au cas où elle serait demandée dans pas longtemps . Ce stockage peut alors être effectué de différentes manières :
la page est envoyée au swap
ça ne change rien par rapport à avant
la page est compressée en RAM
cleancache va stocker plusieurs pages compressées en utilisant moins de pages au total
ça reviens un peu à un truc qui existait il y a 15 ans sous Win3.11 qui faisait exactement ça; enfin, qui essayait... ;-)
la page est compressée en RAM, puis envoyée au swap
l'échange vers/depuis le swap est plus rapide
la page est toujours en RAM
si la pression est vraiment trop forte, on vire la page de la RAM plus tard
la pages est envoyée sur un périphérique bloc très rapide (eg. SSD)
un peu comme si c'était un swap
si ce périphérique se remplit trop, la page est migrée vers le vrai swap
Attention ! Ces possibilités ne sont pas (toutes) disponibles dans le 3.0. cleancache propose juste une infrastructure générique pour y brancher différentes politiques de gestions des pages.
pourquoi ne pas avoir un périphérique avec une tonne de RAM lente ?
C'est pas faux ! ;-)
Cette RAM jouerai le même rôle envers les disques que le cache envers la RAM. Une espèce de cache, sauf qu'au lieu d'être entre le processor et la RAM, il serait entre la RAM et le disque, en quelque sorte...
Maintenant, faire un tel truc ne devrait pas être ultra complexe. Il faudrait:
un contrôleur SATA-3 esclave
un paquet de barettes de RAM
quelques petits composants par-ci par-là
et une petite batterie en case de coupure de courant
[^] # Re: Les pages propres
Posté par ymorin . En réponse à la dépêche Le noyau Linux est disponible en version 3.0. Évalué à 8.
Tout à fait d'accord. Mais ce n'est ce sur quoi je réagissait. patrick_g a dit :
Or, une page clean n'est pas enregistrées sur le disque. Son entrée dans la page table est simplement suprimée, et la RAM qu'elle utilisait est de suite disponible pour y mettre une autre page (du même processus, ou d'un autre).
Seules les pages dirty sont écrites sur le disque.
Maintenant, ce nouveau mécanisme ajoute une étape intermédiaire : plutôt que de trasher la page, elle est envoyée au cleancache qui va la stocker temporairement au cas où elle serait demandée dans pas longtemps . Ce stockage peut alors être effectué de différentes manières :
Attention ! Ces possibilités ne sont pas (toutes) disponibles dans le 3.0. cleancache propose juste une infrastructure générique pour y brancher différentes politiques de gestions des pages.
C'est pas faux ! ;-)
Cette RAM jouerai le même rôle envers les disques que le cache envers la RAM. Une espèce de cache, sauf qu'au lieu d'être entre le processor et la RAM, il serait entre la RAM et le disque, en quelque sorte...
Maintenant, faire un tel truc ne devrait pas être ultra complexe. Il faudrait:
Bon, je te rassure, ça existe :
Hop,
Moi.