Forum Linux.général Swapper dans la RAM d'un autre ordinateur

Posté par  .
Étiquettes :
0
18
fév.
2008
Bonjour,

Je viens de me procurer un NSLU2. Il s'agit d'une boite fonctionnant avec un processeur ARM à 200mhz, et disposant de 2 ports USB ainsi que d'un port ethernet.

Bidouilleur dans l'âme, j'ai consulté les sites de fan pour remplacer le firmware d'origine un peu pourri par une debian sur une clé USB qui lui est adjointe. Tout allait bien jusqu'au moment ou j'ai voulu faire fonctionner des programmes un peu gourmand en RAM. La bestiole ne disposant que de 32Mo de RAM, elle swappe comme une folle dans la mémoire flash, et les perfs se vautrent.

Mon idée, c'est de swapper sur un autre ordi du réseau.

J'ai étudié plusieurs techniques pour mettre ça en place.

Tout d'abord, j'ai mis en place un partage NFS en lecture/écriture, y ai déposé un fichier de 100mo, et indiqué au nslu2 qu'il pouvait swapper dessus (mkswap -c ou un truc comme ça).
Résultat un peu pourri, autant adjoindre un disque sur directement au NSLU2; si on ajoute l'overhead de NFS, on se doute bien que c'est naze.

Ensuite, j'ai regardé du côté de AoE, ATA over ethernet, un truc assez sympa pour partager des périphériques de bloc sur le réseau si ces derniers fonctionnent en ATA, comme un DD en SATA.
Dans le même genre il y a aussi ndb (-client et -server), si jamais votre périphérique fonctionne pas en ATA (ce qui est peut être le cas des clés usb, à vérifier).

Bon, c'est très bien toussa, mavie, etc... mais le top du top, ça serait
1- de créer un block device virtuel de 100Mo en RAM,
2- le formater avec mkswap
3- le partager avec nbd.

Ami lecteurs, savez vous comment procéder pour l'étape 1 ?
Suis-je complètement à côté de la plaque ?

Question bonus: Si je formate la partition partagée avec GFS, est ce que du coup tous les ordis du réseau ont magiquement un accès lecture écriture simple et fiable?
  • # des pistes à étudier

    Posté par  . Évalué à 1.


    Tout allait bien jusqu'au moment ou j'ai voulu faire fonctionner des programmes un peu gourmand en RAM. La bestiole ne disposant que de 32Mo de RAM, elle swappe comme une folle dans la mémoire flash


    En premier lieu, à ta place, je chercherais à limiter la consommation de ram.

    Quels logiciel fais-tu tourner sur ta machine ?

    Peux-tu éviter de lancer certains processus ?

    Peux-tu remplacer certains logiciels par d'autres moins gourmands ? Par exemple utiliser busybox à la place de bash, mount, ls ...

    Peux-tu compiler certains logiciels et ne conserver que les fonctionnalités indispensables ?

    Tu trouveras peut-être des idées sur
    http://www.slitaz.org
    http://www.Linuxfromscratch.org
    • [^] # Commentaire supprimé

      Posté par  . Évalué à 1.

      Ce commentaire a été supprimé par l’équipe de modération.

      • [^] # Re: des pistes à étudier

        Posté par  . Évalué à 1.

        Bonjour,

        Le programme que je fais tourner s'appelle slimserver, c'est une sorte de serveur multimédia pour streamer du son sur une squeezebox.
        C'est pas fait pour tourner sur un NSLU2 vu que ça prend 50 Mo en mémoire. Donc j'ai un peu laché les petites économies de mémoire du genre busybox (que j'utile sur mon wrt54g). Mais c'est effectivement à creuser, je teste ça ce soir :) .

        J'avais installé openwrt également, mais dès que l'on veut installer quelques softs malins (autre chose que du routage en fait), il faut qd meme ajouter une clé usb pour l'espace disque. Et avec si peu de RAM, impossible de faire fonctionner rtorrent. De plus, le repository "optware" contient peu de packages, et celui pour slimserver plante.

        L'avantage de debian, c'est que le NSLU2 est "fully supported" donc c'est la folie, tous les programmes du Projet sont dispo à coup d'apt-get. Et c'est super confortable.
      • [^] # Re: des pistes à étudier

        Posté par  . Évalué à 2.

        Et pourquoi répondre toujours à côté de la plaque ?
        Il a une problématique, et pose une question. Répondez donc à sa question au lieu de lui dire "ce que vous vous auriez fait et qui vous semble vachement mieux"...
        • [^] # Re: des pistes à étudier

          Posté par  . Évalué à 3.

          Et pourquoi ne pas poser la question ?
          Et pourquoi tu réagis aussi mal ?

          Peut-être le PI ne connaissait-il pas cette distribution, ou alors a-t-il une contrainte qui l'empêche de l'utiliser ...
        • [^] # Commentaire supprimé

          Posté par  . Évalué à 3.

          Ce commentaire a été supprimé par l’équipe de modération.

          • [^] # Re: des pistes à étudier

            Posté par  . Évalué à 2.

            Oula, du calme!!
            Le fait que ce soit pour swapper sur le réseau n'empeche pas qu'il peut etre intéressant de créer un device de block virtuel en RAM.
            C'est le coeur de ma question. Pour le reste, la swap n'est qu'une application.
            • [^] # Commentaire supprimé

              Posté par  . Évalué à 3.

              Ce commentaire a été supprimé par l’équipe de modération.

              • [^] # Re: des pistes à étudier

                Posté par  . Évalué à 0.

                Je voulais juste lui répondre de la façon dont il m'a adressé la parole. Ne t'en préoccupe pas ;-)

                J'me souviens pas t'avoir demandé "de la fermer" ni être monté sur mes grands chevaux.
                Juste une constatation: sur linuxfr et sur bien d'autres endroits, on répond rarement à la question posé. On part plutôt sur du "Faut pas faire ça saynul, j'te conseille de faire ça saymieux".

                Branle toi un bon coup avant de monter en pression comme ça mon grand, ça te fera du bien tu verras. (ça c'était pour te donner une raison d'être en rogne).
          • [^] # Re: des pistes à étudier

            Posté par  . Évalué à 2.

            Espèce de tache, regarde plus bas, j'ai répondu à la question qu'il posait.
            Prend donc ton valium avant de poster la prochaine fois, ça sera mieux pour tout le monde.

            Aucun problème, si tu veux suggérer une autre solution, pas de soucis, mais répond avant à la question posée.

            Je m'en tamponne le derch que tu sois en rogne.
            • [^] # Commentaire supprimé

              Posté par  . Évalué à 1.

              Ce commentaire a été supprimé par l’équipe de modération.

  • # re

    Posté par  . Évalué à 2.

    1- de créer un block device virtuel de 100Mo en RAM,
    [...]
    Ami lecteurs, savez vous comment procéder pour l'étape 1 ?


    Si je ne m'abuse, cela s'appelle un ramdisk.
    Tu définies la taille de ce ramdisk en option au kernel à coup de ramdisk_size= puis ensuite, tu accèdes à /dev/ramX.
    • [^] # Re: re

      Posté par  . Évalué à 1.

      Merci, tu sais si on peut faire ce genre de choses sans avoir à redémarrer ?
      • [^] # Re: re

        Posté par  . Évalué à 1.

        Comme ça aucune idée ... ça doit être documenté dans les sources du noyaux ... Essaye donc de fouiller dans /usr/src/linux/Documentation ... (j'ai pas les sources du noyau sur ma bécane du boulot :/)
    • [^] # Re: re

      Posté par  (site web personnel) . Évalué à 1.

      Hum un ramdisk de 100Mo sur une machine avec 32Mo et pour
      en plus mettre de swap dessus .... je crois pas non.

      Quand à l'utilisation de ndb pour faire du swap:
      >Current state: It currently works. Network block device seems to be
      >pretty stable. It was originaly thought that it is impossible to swap
      >over TCP. This turned out not to be true, though the patch required
      >to make it safe has not been forward-ported to any reasonably
      >recent kernel.

      A priori c'est pas rentré en mainline.
      • [^] # Re: re

        Posté par  . Évalué à 1.

        J'envisageai bien sûr, comme le titre du thread le suggérait, de créer le block de 100Mo sur un ordi normal, du genre ceux qui ont 1Go de RAM, pour ensuite le partager avec nbd.
        Sinon, j'ai déja été sur la page de nbd, que j'ai lu attentivement, et je suis prêt a risquer un kernel panic, je vais pas en mourir.
        J'ajoute, sans en être vraiment sur, qu'étant donné les bonnes perfs des réseaux gigabit, je serais pas surpris qu'il soit plus avantageux de swapper dans la ram d'un autre ordi du réseau que sur un disque dur 5400tr/min branché en usb.
        Mais si quelqu'un sait comment créer un ramdisk dynamiquement, je suis toujours preneur.
        • [^] # Re: re

          Posté par  . Évalué à 1.

          si j'en crois http://www.vanemery.com/Linux/Ramdisk/ramdisk.html

          Ramdisk semble être un module ...

          [root]# dmesg | grep RAMDISK
          RAMDISK driver initialized: 16 RAM disks of 16000K size 1024 blocksize
          RAMDISK: Compressed image found at block 0


          un truc du style insmod ramfs ou modprobe ramfs ne ferait-il pas l'affaire ?
          • [^] # Re: re

            Posté par  . Évalué à 1.

            Cela dépend de la configuration du noyau.

            Si le pilote du ramdisk a été compilé en module, il est possible de décharger ce module puis de le charger en lui passant des paramètres. Voir
            le fichier Documentation/kernel-parameters.txt dans les sources du noyau
            et
            http://casteyde.christian.free.fr/system/linux/guide/online/(...)

            Par contre, je ne pense pas qu'il soit possible de modifier la configuration d'un ramkdisk après le boot si le pilote a été compilé en dur. Pas testé : mon noyau a été compilé sans ce pilote.

            P.S. Les développeurs du noyau considèrent le ramdisk obsolète et préfèrent tmpfs.

            Pour créer un fichier de swap en ram dans le fichier /tmp/fredoche en utilisant tmpfs :

            # mount -t tmpfs tmpfs /mnt
            # dd if=:dev/zero of=/mnt/fredoche bs=1M count=100
            # mkswap /mnt/fredoche
            • [^] # Re: re

              Posté par  . Évalué à 0.

              quel est l'intéret de swapper en RAM mis à part fournir un exemple pour utilisation de la commande ? :D

              Pace que quand je vois le nombre de cat | rep ou cat | awk .... alors qu'en général on utilise ça à titre d'exemple, je crois qu'on va bientot avoir du monde qui va swapper en ram ...
            • [^] # Re: re

              Posté par  . Évalué à 1.

              Le coup du tmpfs est stylé, mais on est encore loin d'un périph de bloc. On peut pas le formater en ext2, ou le partager avec nbd pour éviter de passer par NFS.
              Ramdisk a vraiment l'air de faire le job, mais au prix d'un reboot.
              Je ne trouve pas de procédure pour créer un ramdisk dynamiquement sur le net, est ce que l'un de vous à une idée?
              • [^] # Re: re

                Posté par  . Évalué à 0.

                Encore une des raisons qui me font préférer NetBSD à Linux :D
                Sous NetBSD, on peut ....
                • [^] # Re: re

                  Posté par  . Évalué à 1.

                  Et on fait comment? Merci
                  • [^] # Re: re

                    Posté par  . Évalué à 0.

                    RTFM !! :)
                  • [^] # Re: re

                    Posté par  . Évalué à 1.

                    Plus sérieusement, je me suis un peu vite avancé .... faut effectivement l'activer dans le noyau et rebooter. Mais comme ces temps-ci je compile mon système entièrement et que j'ai activé ce paramètre dans le fichier de config, j'ai ublié ce détail.
  • # 2c supplémentaires

    Posté par  . Évalué à 1.

    Vu http://www.ldlc.com/fiche/PB00023353.html
    as-tu branché un disque dur sur ton NSLU2 ? Dans l'affirmative, peux-tu faire un peu de place sur ce disque pour un fichier de swap ?

    je serais pas surpris qu'il soit plus avantageux de swapper dans la ram d'un autre ordi du réseau que sur un disque dur 5400tr/min branché en usb.
    As-tu réalisé des tests avec un disque récent ?
    Le noyau swape car il est a court de mémoire. Mais établir des connections réseaux demande de la mémoire libre...

    slimserver est écrit en perl et lance un processus mysqld.
    Ce logiciel est un vrai bouffe ressource. Est-il possible de recompiler perl avec uniquement l'indispensable ?

    Faute de nas sous la main, il m'est difficile d'être plus précis. Bon courage
    • [^] # Re: 2c supplémentaires

      Posté par  . Évalué à 1.

      J'ai un dd de 60Go de connecté. J'ai mis une partition de swap dessus (1Go, au cas où).
      Des que le slimserver est lancé, on sent qu'il souffre, la tete de lecture fait des aller retour incessants, bref, c'est vraiment pas le pied.
      J'ai aussi tneté avec une clé USB à mémoire flash de bonne qualité, c'est pareil sans le bruit :)
      Pour mysqld, j'essaie en paralelle de le remplacer par un sqlite (d'ailleurs les vieilles version de slimserver utilisaient sqlite il me semble) mais mes faibles connaissances en Perl m'ont vite découragé.
      Pour le reste, effectivment, il me semble que slimserver, c'est codé avec les pieds, prendre autant de mémoire pour si peu...
      Sinon, il n'y a pas d'options relatives aux performances.
      Si tu veux des détails sur le NSLU2, je te dirais que pour 70€ c'est un bon plan pour bidouiller un NAS.
      • [^] # Re: 2c supplémentaires

        Posté par  . Évalué à 1.

        Arf, 1 GB de swap pour une machine de 32 MB de ram ça fait juste 32 fois la taille de la ram du NAS ;)
        De la swap sur un disque externe c'est bien évidemment la meilleure solution mais pas plus de 2-4 fois la taille de la ram.
        De toute façon si ton NSLU2 swap en fonctionnement normal les performances ne pourront être que très mauvaises à catastrophiques. Il faut absolument limiter la consommation de ram pour que la swap ne soit là qu'en cas de surcharge ou de traitement exceptionnel sinon ton NSLU2 va passer son temps à swapper au lieu de fournir un service.
      • [^] # Re: 2c supplémentaires

        Posté par  . Évalué à 1.

        Et pour la question bonus GFS nécessite la cluster suite de redhat pour fonctionner et aussi, forcement, un stockage commun à tous les serveurs qui y accèdent donc sur ton NSLU2 rien qu'avec les démons de la cluster suite et de gfs il risque déjà de manquer de ram sans compter ce qu'il faudrait mettre en place pour avoir du stockage partagé.
  • # y'a de l'idée

    Posté par  . Évalué à 1.

    Bonjour Fred et le forum,

    je suis dans le même cas que toi,
    je viens d'aquérir un NSLU2 et une squeezebox v3.

    Et bien sur, je veux que tout soit autonome, à savoir que le slimserver tourne sur le nslu2.

    j'ai fais pas mal de recherche, et visiblement, il y a des gros soucis de performance dès que le nombre d'albums est important.

    Les dernières version de slimserver (supérieur à la 6.3) utilisent mysql à la place de SQLite et du coup, ça prend bcq trop de place dans la mémoire du ptit nslu2

    http://forums.slimdevices.com/showthread.php?t=40671&hig(...)

    Il y a pas mal de monde qui cherchent à optimiser la debian afin que tous les programmes tournent dessus.
    (http://www.cyrius.com/debian/nslu2/reducing-memory.html )

    Donc ton approche est super intéressante, reste à voir si c'est réaliste...

    Bon courage, on se tient au courant de nos avancées réciproques.

    Thanks,
    Julian.

Suivre le flux des commentaires

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