Forum Linux.général Placer un filesystem complet en RAM

Posté par (page perso) .
Tags : aucun
0
6
juil.
2007
Bonjour,
J'ai un client qui a une belle machine un dual opteron 275 avec 8 Go de RAM.
Celui-ci a fait un répertoire cache (1 go environ) qui contient des données qui vont être envoyés au client, bien ce n'est pas réellement un répertoire cache car il ne peut être regénéré.

Donc ce répertoire j'aurai l'idée de le placer dans un filesystem dédié qui serait sauvegardé entièrement en ram mais sachant que toutes les écritures se feraient tout de même sur le disque.

Donc je voulais savoir si quelqu'un avait déjà eu ce genre de cas, et si il connaitrait un filesystem qui ferait ca et si possible un retour d'expérience.

Merci d'avance
  • # hein ?

    Posté par . Évalué à 2.

    Je comprends pas tout mais :

    - "sauvegarder" et "en ram" dans la même phrase c'est curieux....

    - si une machine a beaucoup de ram, de toute façon les accès disques sont cachés dans des buffers en ram. Donc en pratique, il n'y a plus que des accès en ram (sauf pour les écritures qui sont propagées sur le disque évidement) et c'est complètement transparent donc je vois pas trop l'intérêt de faire un système de fichier en ram.
    • [^] # Re: hein ?

      Posté par . Évalué à 1.

      je penses qu'il voudrait eventuellement lancé un systeme complet en RAM (comme le ferait un livecd) pour gagner en temps

      mais qu'en meme temps il voudrait que les modifications apportées (creation/modification/effacement de fichiers) soient sauvegardées et donc disponibles au prochain demarrage.
    • [^] # Re: hein ?

      Posté par (page perso) . Évalué à 1.

      en parlant de sauvegarde je veux juste que les fichiers soient à la fois stockés sur mémoire volatile et sur le disque.
      Alors je sais que l'os effectue ce type d'optimisation nativement mais je voudrais forcer la mise en ram pour un répertoire donné.
  • # Mémoire cache

    Posté par (page perso) . Évalué à 4.

    Normalement, c'est ce que fait linux. Si tu lis tout ton répertoire (par exemple en faisant un grep recursif dedans), il charge tout en mémoire. Tu dois retrouver la taille de ton répertoire dans la colonne "cached" de la commande "free". A partir de là, les opérations de lectures et d'écritures se font dans la mémoire. La commande "sync" force le système à reporter les modifications sur le disque. Par contre, rien ne l'oblige à garder ces données en mémoire. Si elles ne sont pas suffisamment accédées, elles finiront par être purgées de la mémoire (et reportées sur le disque si elles sont modifiées) pour faire place à d'autres données plus vitales. Si ton système de fichier est monté avec l'option "sync", les écritures se font directement sur le disque. Sinon, elle sont faites au pire lors du démontage.

    Si tu veux réellement forcer ces données à rester en mémoire, tu peux faire un ramfs (mount -t ramfs ramfs /ram), copier tout ton répertoire dedans, faire pointer ton application dedans, et faire un cron qui synchronise régulièrement le disque (cp -au /ram/* /origine/). Ca doit marcher, mais c'est certainement moins optimisé que le cache de linux :)
    • [^] # Re: Mémoire cache

      Posté par (page perso) . Évalué à 1.

      oui justement j'ai pensé à la méthode ramfs mais je trouve ca un peu crade de copier les fichiers tous les x minutes et je doute que je m'y retrouve de bloquer le serveur régulièrement, c'est pourquoi j'ai pensé à un fs disque avec une option gardant tous les fichiers en ram
      visiblement personne ne connaitrait qqe du genre
      là j'ai 2,6 Go de fs sauvegardé en RAM
      quelqu'un connaitrait une commande permettant de savoir les fichiers en mémoire ?
      J'ai un peu regardé sur le net mais j'ai pas trouvé
      • [^] # Re: Mémoire cache

        Posté par . Évalué à 2.

        Ca me fait penser à RAID1 avec un disque en RAM l'autre sur un disque dur.
        http://fr.wikipedia.org/wiki/RAID_(informatique)#RAID_1_:_mi(...)

        En recherchant avec google "raid1 linux ramfs" :
        http://www.linuxfocus.org/Francais/July2001/article210.shtml
      • [^] # Re: Mémoire cache

        Posté par . Évalué à 1.

        Je comprend vraiment pas ce que tu veux faire, tu risques simplement de désoptimiser le système en essayant de forcer les choses en ram. Comme dis précédemment, si ton fs est accédé régulièrement et que tu as suffisament de ram, tout va rester dans la ram. Si tu n'as pas suffisament de ram, alors il est certainement bcp plus optimal de laisser l'os choisir ce qui restera ou pas.

        En fait je n'arrive à imaginer qu'un cas ou ton projet aurait un sens: un fs avec des fichiers rarement accédés (donc pas en cache ram au premier accès ou qui n'y restent pas) pour lesquels, si tu as une demande d'accès à un de ces fichiers, le temps de déplacement/lecture sur le disque dur serait trop long. Donc à part si tu as besoin d'un temps de réponse inférieur a quelques centièmes de secondes alors cela à éventuellement du sens.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.