SwapBoost épisode II : Et si on utilisait un simple fichier?
Introduction
Cet article est comme son nom le laisse supposer, un article qui prolonge SwapBoost épisode I : Les méthodes simples. Il est donc plus que préférable que vous lisiez cet article ainsi que Windows’s ReadyBoost vs Linux’s SwapBoost : Quelques détails pour pouvoir comprendre la suite…
Cet article s’intéresse à l’utilisation d’un fichier pour stocker le swap sur votre support flash à la place d’une partition swap dédiée.
Avertissement
Le même avertissement que dans l’article SwapBoost épisode I : Les méthodes simples s’applique: vous devez comprendre les risques des méthodes (ou liées à l’application des idées), et vous agissez de votre propre initiative. L’auteur du post décline toute responsabilité quant à l’utilisation…
Swapper dans un fichier: rappels succincts
Bien que sous Linux la mode soit à l’usage de partition de swap (contrairement à Windows où la mode est plutôt un fichier de taille dynamique ce qui peut souvent faciliter la non performance du système de fichier), il est également possible de créer un fichier de taille fixe pour “swapper” dedans.
Pour créer le fichier, la commande dd est habituellement d’un grand recours et il suffit de passer ensuite le nom du fichier (attention à ne pas tapper seulement le nom de la partition qui le contient!) en paramètre à la commande swapon.
Bref, rien de compliqué et la méthode se transpose aussi sur clé…
Swapper dans un fichier: les raisons
La question que vous pouvez à juste titre vous poser est “pourquoi donc dans un fichier et non dans une partition?“.
Une première réponse possible à cette question est la souplesse que cela procure (quitte à perdre un peu en performances): il est souvent plus facile de manipuler de simples fichiers que des partitions. Cet argument n’est pas spécifique aux supports externes flash, cependant sur un disque dur interne dans le cas le plus usuel, il est souvent facile de prévoir une quantité minimale de swap attribuée sous forme de partition lors de l’installation (puis en cas de besoin, même si beaucoup l’ignorent, on peut en rajouter en plus en utilisant un fichier).
Une seconde réponse peut s’intéresser plus au fait que l’on a affaire à un support flash. Comme cela a déjà été évoqué, les supports flash s’usent au fur et à mesure des écritures. Plus exactement le support est assez souvent constitué de blocs (au niveau physique) ayant chacun un nombre d’écritures limité, d’où l’intérêt de répartir les écritures. On peut ainsi envisager de déléguer cette gestion améliorée des écritures à un système de fichier fait pour cela, d’où l’intérêt de swapper dans un fichier plutôt que dans une partition.
Quels sont donc ces systèmes de fichier spécialisés?
Ce post sur DLFP qui avait attiré mon attention il y a quelque temps vous présentera mieux que moi ces différents systèmes de fichiers particulièrement adaptés aux supports flash: JFFS(2), YAFFS, LOGFS ou UBIFS par exemple…
Pour en savoir plus à ce sujet, je vous laisse utiliser les armes bien connues que vous avez pour satisfaire votre curiosité…
Petite note au passage
Il se peut aussi que l’électronique de votre support flash gère (plus ou moins bien) la répartition des écritures. Malheureusement ce n’est pas toujours le genre d’informations qu’il est aisé d’obtenir…
Retour à la répartition des écritures
Comme indiqué, je n’ai pas prévu (tout du moins pour l’instant) de vous faire une présentation détaillée de chaque système de fichier évoqué. Néanmoins je vais essayer d’apporter quelques précisions générales utiles pour celui qui aurait envie d’expérimenter…
Tout d’abord, pour répartir les écritures sans engendrer d’écriture supplémentaire, il convient en général d’avoir de l’espace libre. Cet élément mérite un point de détail qui peut facilement échapper: il faut que le système de fichier puisse détecter qu’il y a de l’espace libre.
Par exemple, si vous avez un seul fichier qui occupe la quasi totalité de la partition, vous risquez d’avoir tout faux! Y compris si l’utilisation actuelle de ce fichier pour les besoins du swap est très faible (c’est là que me parait être un piège): il suffit par exemple d’avoir utilisé une fois le swap à un fort pourcentage pour qu’il soit très difficile de savoir (du point de vue du système de fichier) que des données présentes sont inutiles à stocker…
Pour récapituler, si vous souhaitez utiliser un fichier de swap dans une partition utilisant un système de fichier spécialisé, il parait quasi indispensable de laisser une quantité non négligeable d’espace libre qui ne sera pas utilisée par le swap… Tout du moins si vous souhaitez prolonger au mieux la durée de vie du support flash…
Pour aller plus loin…
Il y a divers moyens d’améliorer un peu la situation et de faire face aux quelques “obstacles” qui se présentent: deamon pour créer des fichiers swap supplémentaires “à la volée” en cas d’utilisation mémoire intensive, modification de la gestion du swap, recréation d’un système de fichier intermédiaire encore plus adapté (qui tient compte du fait qu’il s’agit de swap), etc…
Merci pour cette série d’articles, c’est très intéressant (enfin je trouve ^^)
Continue comme ça ;-)