Path: ...!weretis.net!feeder8.news.weretis.net!news.imp.ch!news.alphanet.ch!alphanet.ch!.POSTED.localhost!not-for-mail From: Marc SCHAEFER Newsgroups: fr.comp.os.linux.configuration Subject: Re: configuration du swap Date: Sat, 2 Oct 2021 09:58:09 -0000 (UTC) Organization: Posted through ALPHANET (https://news.alphanet.ch/) Message-ID: References: <60a69788$0$27422$426a34cc@news.free.fr> <61556cc8$0$20245$426a34cc@news.free.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Injection-Date: Sat, 2 Oct 2021 09:58:09 -0000 (UTC) Injection-Info: shakotay.alphanet.ch; posting-host="localhost:127.0.0.1"; logging-data="5578"; mail-complaints-to="usenet@alphanet.ch" User-Agent: tin/2.4.3-20181224 ("Glen Mhor") (UNIX) (Linux/4.19.0-17-amd64 (x86_64)) Cancel-Lock: sha256:YrqBOyiogQlkl3pNJZdfekAPuFuMBA2E7KiNmodRwa8= Bytes: 4602 Lines: 88 Thomas wrote: > qu'appelle-t-on "swap dynamique" ? > > ce que j'en ai compris, c'est que ça fait des opérations d'augmentation > de la taille totale du swap, mais automatiquement en fonction du besoin Alors, sous Linux, il est facile d'ajouter des fichiers de swap, lorsque l'utilisateur perçoit un besoin, comme cela a été déjà dit. D'ailleurs, pourquoi ne pas créer un fichier de swap qui aurait des trous? (sparse file) $ dd if=/dev/zero of=/tmp/bla bs=1024k seek=100000 count=1 # on peut aussi utiliser truncate(1): truncate -s 100G /tmp/bla $ ls -lah /tmp/bla -rw-r--r-- 1 schaefer schaefer 98G Oct 2 11:39 /tmp/bla $ du -h /tmp/bla 1.0M /tmp/bla il s'agit d'un fichier qui apparaît comme environ 100 GB, mais qui en fait contient uniquement 1 méga-octet alloué. A chaque écriture à un endroit non encore alloué, le système allouera les blocs nécessaires. Toute lecture non allouée retournera des blocs de zéros (ASCII NUL). Evidemment, s'il n'y a pas de place sur le système de fichiers au moment de l'allocation, ça finira mal. Toutefois, `swapon /tmp/bla' ne va pas fonctionner sous root, car il estime que les fichiers à trous, c'est mal: forcer de l'allocation d'espace dans le filesystem au moment même où on est probablement bas dans la disponibilité de la mémoire vive n'est, à son avis, pas une bonne idée. Si l'on le veut vraiment, on peut le faire quand même: sous root: sw=$(losetup -f) losetup $sw /tmp/bla chmod 600 $sw mkswap $sw swapon $sw Il n'y a pas de contraction: pour faire cela, on peut imaginer de temps en temps un `swapoff $sw' puis `fallocate -d /tmp/bla', puis `swapon $sw'. Ou, peut-être mieux: un nouveau fichier à trou de swap, désactiver l'ancien et supprimer son fichier. Il y a d'autres solutions pour optimiser le swap sous Linux: 1) modifier certains paramètres, Linux swappe `trop' par défaut à mon avis et en particulier depuis certains kernels (il veut garantir qu'il y ait vraiment suffisamment de mémoire libre, ce qui est parfois exagéré) sur certains serveurs avec vraiment suffisamment de mémoire, je configure ainsi dans /etc/sysctl.conf: # swapper que si nécessaire vm.swappiness = 1 # en particulier en présence de disques lents vm.vfs_cache_pressure=150 toutefois, réduire l'envie de Linux de swapper peut réduire la performance, notamment si c'est aux dépens du cache disque, par exemple. Dans mon cas, après une analyse à long terme avec munin, ça a plutôt été extrêmement bénéfique. 2) compresser le swap Une solution intégrée pour 2 c'est: https://github.com/Nefelim4ag/systemd-swap Cela ajoute notamment le support des sparse files (fichiers à trous), de la compression du swap et d'un ram-disk compressé, et d'un système d'allocation dynamique. Il y a des instructions d'installation notamment pour Debian. Je n'ai pas testé, et il y a une mise en garde sur la qualité du code. Sauf erreur cela ne fait que d'utiliser des fonctions de Linux, de manière intégrée. Il semble même y avoir un script d'adaptation automatique du swap.