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 slack . É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 Anonyme . Évalué à 1.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: des pistes à étudier
Posté par fredoche . Évalué à 1.
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 LaBienPensanceMaTuer . Évalué à 2.
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 totof2000 . Évalué à 3.
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 Anonyme . Évalué à 3.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: des pistes à étudier
Posté par fredoche . Évalué à 2.
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 Anonyme . Évalué à 3.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: des pistes à étudier
Posté par LaBienPensanceMaTuer . Évalué à 0.
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 LaBienPensanceMaTuer . Évalué à 2.
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 Anonyme . Évalué à 1.
Ce commentaire a été supprimé par l’équipe de modération.
# re
Posté par LaBienPensanceMaTuer . Évalué à 2.
[...]
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 fredoche . Évalué à 1.
[^] # Re: re
Posté par LaBienPensanceMaTuer . Évalué à 1.
[^] # Re: re
Posté par -=[ silmaril ]=- (site web personnel) . Évalué à 1.
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 fredoche . Évalué à 1.
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 totof2000 . Évalué à 1.
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 slack . Évalué à 1.
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 totof2000 . Évalué à 0.
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 fredoche . Évalué à 1.
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 totof2000 . Évalué à 0.
Sous NetBSD, on peut ....
[^] # Re: re
Posté par fredoche . Évalué à 1.
[^] # Re: re
Posté par totof2000 . Évalué à 0.
[^] # Re: re
Posté par totof2000 . Évalué à 1.
# 2c supplémentaires
Posté par slack . Évalué à 1.
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 fredoche . Évalué à 1.
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 mururoa69 . Évalué à 1.
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 mururoa69 . Évalué à 1.
# y'a de l'idée
Posté par Julian . Évalué à 1.
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.