SwapBoost épisode I : Les méthodes simples
Introduction
Ce post fait suite à un post que j’ai publié récemment (Windows’s ReadyBoost vs Linux’s SwapBoost : Quelques détails) et qu’il est préférable que vous lisiez d’abord pour mieux comprendre le contexte.
Pour rappel, ce qui est souvent appellé SwapBoost (très probablement en référence à ReadyBoost) est le fait d’utiliser un support externe utilisant de la mémoire flash pour stocker le swap.
Ce post discute de l’intérêt du procédé, et évoque quelques façons de faire.
Avertissement Important
La mémoire flash est un type de mémoire non volatile qui admet un nombre limité d’écritures. Même si ce nombre est “relativement grand”, il n’en reste pas moins qu’en en faisant une utilisation intensive vous l’usez (beaucoup) plus vite.
Il vous convient donc (si vous utilisez ces méthodes) de considérer la mémoire flash comme quelque chose de consommable, de savoir ce que vous faites (ou d’être prêt à prendre le risque) et de l’assumer.
Si votre clé connait des défaillances (dont aucune garantie n’est fournise quant à leur détection) alors qu’elle sert pour du swap, cela peut également avoir des conséquences (de même que si vous utilisez un module mémoire défaillant).
L’auteur du post n’assume en aucun cas les conséquences et risques (multiples) liées à l’utilisation des méthodes, qui sont présentées à titre purement indicatif.
SwapBoost: est-ce valable?
C’est une bonne question… Déjà premièrement il faut tenir compte des risques, mais ensuite il faut voir ce qu’il y a à gagner!
Il y a plusieurs facteurs qui peuvent vous donner une indication quant à la “valeur apportée” par les méthodes:
- l’utilisation typique actuelle de votre mémoire et votre disque: commencez par surveiller régulièrement l’usage du swap en laissant tourner une commande “top” dans une console. Si vous swappez beaucoup (ie une quantité plus que non négligeable par rapport à la quantité de mémoire RAM physique dont vous disposez) et si en plus quasiment à chaque fois que votre pc “ramme” le voyant du disque dur indique une activité intensive alors il y a des chances pour que la méthode donne du résultat, sinon il y a peu de chance que ce soit utile…
- le prix et la capacité de la clé envisagée: si vous y dédiez une clé de 2 Go pour 7 euros, ça peut sembler correct (au jour du post)
- la performance et le débit de la clé envisagée: vitesse de lecture et d’écriture suffisantes nécessaires: si la moyenne de ces deux vitesses se rapproche de celle de votre disque dur actuel (ou dépasse) alors vous avez des chances d’être gagnant (grâce aux opérations de la clé simultanées avec celles du disque et grâce au temps d’accès plus faible)
- vos autres façon d’agir: quand on peut il est souvent préférable d’ajouter de la RAM, de changer de disque dur ou d’avoir un système à plusieurs disques dur, etc…
Bref ces critères sont non exhaustifs et à titre indicatifs, vous préfèrerez peut être un test réel…
Méthode la plus basique
La méthode la plus simple (parmi celles que je présente) consiste à formater la clé telle qu’elle soit constituée d’une seule partition de swap, et à utiliser ensuite cette partition telle quelle. La méthode est décrite “dans ses grandes lignes” de façon générale et ce post n’en est pas un détail pas à pas. Une maitrise satisfaisante des concepts mis en jeu est donc souhaitable.
- Assurez vous que la clé ne contient aucune donnée que vous ne souhaiteriez garder (et assurez vous que vous comprenez parfaitement le sens de cette remarque avant de poursuivre)
- Commencez par partitionner la clé (ex de commandes: fdisk, cfdisk) préalablement démontée (ou non montée) en une seule partition de type “Linux swap” (type héxa: 82)
- Pour vous évitez des désagréments (suite à une mauvaise “reconnaissance automatique” de la clé par un autre système par exemple): remplissez quelques mégas du début de la partition swap avec des zéros (par exemple avec dd). Si vous ne comprennez pas exactement pourquoi, dites vous que ça ne coute pas grand chose…
- Formatez ensuite la partition en question au type swap (ex de commande: mkswap)
Le reste est à faire ensuite, puis à chaque redémarrage (bon un script peut simplifier…):
- Visualiser le swap déjà utilisé/utilisable par le système (cat /proc/swaps)
- Activer le swap sur la clé et donner une priorité plus élevée à cette partition que celle du swap déjà existant (en root: swapon -p 32767 /chemin_vers_partition_swap_de_la_clé/)
- Désactiver éventuellement les autres partitions swap (en root avec swapoff)
Pour aller plus loin
Cette méthode simpliste présente l’inconvénient de ne rien faire de spécifique pour répartir les écritures sur des zones variables de la clé afin de la faire durer plus longtemps face à l’usure due aux nombres d’écritures.
Face à ça diverses solutions existent, en utilisant plusieurs partitions de swap sur la clé et en jouant sur les priorités par exemple.
Parmi ces solutions, on peut essayer de définir un nombre élevé de partitions sur la clé et faire “tourner circulairement” l’ordre des priorités (option “-p” de swapon) de manière à répartir de façon “suffisante” (dans tout les cas pour rester avec un nombre de partitions raisonnable on reste très loin de la perfection) les écritures sur les différentes zones de la clé. Cette solution reste assez simple car elle peut ne faire intervenir que des programmes déjà existant (partitionnement, activation du swap) et non conçus spécialement pour faire du swap sur clé dans les meilleures conditions.
Il est aussi envisageable de développer des solutions plus poussées et adaptées aux spécificités des clés…
Le mot de la fin (du post)
Plus de vrai mémoire (RAM), c’est mieux!











“Plus de RAM, c’est mieux” ?
Pas sûr…
Parce qu’au plus la mémoire vive est disponible en abondance, au moins les développeurs penseront à l’optimisation, et au plus on se retrouvera avec des programmes gourmands inutilement.
Et qui dit programme qui consomme trop de mémoire dit moins de mémoire pour le système, donc moins de mémoire pour le cache, donc moins bonnes performances et utilisation accrue du disque dur, et donc hausse de la consommation électrique, et donc ça tue des pingouins en antarctique… (Je sais, là c’est capillotracté, mais c’est pour donner une image)
Malheureusement, face à ça, l’utilisateur final ne peut (et ne devrait) faire qu’une seule chose : signaler ça comme étant un bug.
> Cette méthode simpliste présente l’inconvénient de ne rien faire de spécifique pour répartir les écritures
Une autre méthode de répartition que les différentes partition pourrait être de formater la clef avec un système de fichier spécifique et dédié à cet usage (il y en a plusieurs, plus ou moins développés), et de créer un fichier de swap sur la clef. Ainsi, c’est le système de fichier en dessous qui prendrait en charge la gestion de l’usure de la clef…
Dans mon commentaire sur ton article précédent je disais pour les mémoires flash que “certaines ont des systèmes de ré-allocation des bits”.
Ce système s’appelle le “Wear levelling” http://fr.wikipedia.org/wiki/Wear_levelling , il est intégré en hardware au niveau du contrôleur des puces et est indépendant du système de fichier. Donc bien pratique, notamment quand on lui colle un FS de swap.
Pour que ce système fonctionne il faut évidemment qu’il reste toujours une quantité non-négligeable d’espace libre sur la mémoire flash afin que la ré-allocation automatique puisse se faire de manière correcte et durable.
Cet algorithme au niveau hardware n’est hélas pas intégré sur toutes les mémoires flash (en général les support >2Go) et rarement sur les supports bas de gamme. Mais rajouter à peine quelques euros pour avoir cette sécurité d’esprit ça peut être rentable (nombres sont les support flash ayant des blocks morts dès le départ ou au bout de quelques mois à peine), avec cette ré-allocation les blocks morts sont également évités).
Bon le problème, c’est lors de l’achat en magasin: cette clef USB ou cette Compact Flash supporte-t-elle cette fonctionnalité? Je parie que 98% des vendeurs ne sauront vous le dire, d’où l’importance de s’informer un peu avant l’achat.
Note pour les utilisateurs de portables voulant mettre en place la solution du SwapBoost: un adapteur pcmcia->Compact Flash une carte compact flash rapide >133X en mode fixed (= true IDE) (comme les cartes de la marque Trascend dans les modèles à 120X ou plus), c’est reconnu direct comme un disque dur IDE ordinaire (plus pratique et plus léger à gérer pour le système que l’USB) car à la fois les formats pcmcia et compact flash intègrent le standard IDE.
@pinaraf: Une part de vrai… D’ailleurs je me demande bien quelle peut être l’influence de la vente de Windows Vista sur le cours de la RAM…
@Thesa, tof: Pour le swap dans un fichier c’est évoqué dans “SwapBoost épisode II” (ici). J’indique aussi pourquoi ça peut ne pas le faire à 100% (comme remarqué par tof il faut de l’espace libre, j’évoque aussi un peu plus ce qu’est l’espace libre…).
@tof: Pour la gestion purement matérielle, j’ai juste évoqué l’existence en deux lignes, je peux difficilement faire plus… Je vais essayer cependant de jeter un coup d’oeil à l’article wikipédia indiqué…
Pour la solution de l’adaptateur pour les portables c’est pas une mauvaise idée… Cependant j’ai l’impression que le SwapBoost tout court n’est conseillable que sur un nombre restreint de machines (sur lesquelles il est dur d’avoir 1gb de ram ou en cas d’utilisation de logiciels spécifiques). Pour les adaptateurs je trouve que sinon il y a quand même beaucoup de progrès à faire, par exemple ça serait sympa si il y en avait permettant de faire une “sorte de RAID” avec 4/5 cartes et la taille d’un seul disque dur, histoire de prendre peu de place et surtout de cumuler les débits (en plus des capacités)
Nombre de gens utilisent, ou cherchent à ressusciter des portables assez anciens en y installant des distros linux légères (de l’époque des celeron et pentium 2 ou 3, avec une quantité de RAM maximum assez limitée), or ces portables sont majoritairement équipés d’un port PCMCIA alors qu’au niveau USB c’était de l’USB1 à l’époque. Donc ça peut être une bonne alternative pour booster ce genre de machines, avec un swap sur CF.
Et sinon des adaptateurs permettant de mettre 3 cartes CF en RAID 5 avec interface SATA ou IDE cela existe, le montage est communément appelé “pseudo-SSD” ou “DIY-SSD” et ça revient au final très cher.
ex: http://www.akihabaranews.com/fr/review-97-Le test du DIY SSD Drive… ou comment faire un HDD Raid5 avec 3 CF.html
EDIT par ddmdllt: ce lien devrait mieux marcher…
@tof: Merci pour l’info.
3 cartes en RAID5 ça me parait cependant peu… (Ça ne fait que 2*le débit de la carte la plus lente et 2*la capacité d’une carte si je ne me trompe pas?)
Mon avis est qu’en RAID5, il faut commencer à avoir un nombre de cartes conséquent (5 cartes me parait déjà beaucoup mieux, pourquoi pas plus?). 3 cartes ça devrait être bien en RAID0 (donc sans sécurité supplémentaire sur les données)…
Sinon pour le prix faut déjà voir le prix des cartes: en général il n’est que rarement plus cher d’acheter 2 carte de capacité C que d’acheter une carte de capacité 2*C. Après le surcout est peut être sur le montage…