• [^] # Re: Les pages propres

    Posté par . En réponse à la dépêche Le noyau Linux est disponible en version 3.0. Évalué à 8.

    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

    Bon, je te rassure, ça existe :

    Hop,
    Moi.