Ubuntu prend-il en charge le dimensionnement dynamique des fichiers d'échange?


13

Je ne peux pas imaginer pourquoi un fichier d'échange doit être de taille fixe. Pourquoi ne pas le laisser redimensionner dynamiquement, comme le fichier image du disque dur pour une boîte virtuelle?


Linux ne prend pas en charge les tailles d'espace d'échange dynamique, sauf si vous comptez l'option d'ajouter et de supprimer des espaces d'échange entiers au moment de l'exécution. (Windows non plus, pas même ce dernier.)
David Foerster

Mac prend-il en charge l'échange dynamique?
Tom Mercer

Je n'ai aucune idée. C'est un noyau entièrement différent que je n'ai pas étudié. Il est probable que cela ressemble à un espace d'échange sous Linux. Quoi qu'il en soit, pourriez-vous s'il vous plaît ouvrir une nouvelle question Unix & Linux ou Ask Different si vous avez une nouvelle question ou une question complémentaire sur le noyau Darwin d'OS X? La section des commentaires ne convient pas ou n'est pas destinée aux nouvelles questions ou aux discussions prolongées. :-) Merci.
David Foerster

@DavidFoerster sous Windows, vous pouvez définir les tailles minimale et maximale pour chaque fichier d'échange et Windows augmentera la taille du fichier d'échange si nécessaire. tomshardware.com/news/...
phuclv

Réponses:


11

Il ne semble pas que Linux prenne en charge le dimensionnement dynamique des fichiers d'échange (en tout cas, je n'ai pas pu le détecter qu'un fichier d'échange avait changé de taille sans swapoff/ swapon).

Vraisemblablement, il est plus facile de supposer qu'un fichier d'échange ne change pas la taille du fichier dynamiquement lors de l'écriture du code pour le prendre en charge. Je ne vois pas non plus une grande utilité pour cela. Puisque vous pouvez utiliser plusieurs fichiers d'échange, rien ne vous empêche de créer plus de fichiers d'échange au besoin.

Notez également ce paragraphe de la swaponpage de manuel :

The  swap file implementation in the kernel expects to be able to write
to the file directly, without the assistance of the  filesystem.   This
is  a problem on preallocated files (e.g.  fallocate(1)) on filesystems
like XFS or ext4, and on copy-on-write filesystems like btrfs.

Je pense que le même problème s'appliquerait à un fichier d'échange de taille dynamique.


Il semble que cela soit vrai et swapspace ne redimensionne même pas dynamiquement le swap.
Tom Mercer

2

SwapSpace est un utilitaire qui vous permettra de faire un swap de taille dynamique si c'est ce que vous recherchez. Je pense qu'il est disponible dans Ubuntu.


Bien qu'il y ait eu une nouvelle version il y a 2 ans , les versions emballées pour Ubuntu semblent toutes anciennes. Comment ça marche?
muru

Je ne peux pas imaginer que la méthode utilisée pour écrire le fichier d'échange a changé mais je ne pourrais pas le dire avec certitude. Fonctionne très bien sur debian.
user231695

Je vote toujours votre réponse car il est tout aussi simple de créer un nouvel espace.
user231695

Je vais essayer ceci et faire rapport.
Tom Mercer

@ user231695 bien qu'il soit simple de créer un nouvel espace de swap, c'est horriblement gênant, et peut-être complètement irréalisable comme solution. Le seul moment où un utilisateur souhaite ajouter un nouvel espace de swap est le moment même où le swap existant est plein. D'où ma question pour le dimensionnement dynamique du fichier d'échange.
Tom Mercer

1

Je sais qu'il est tard, mais je pense que la meilleure solution pour le swap dynamique est de:

sudo apt install dphys-swapfile
sudo update-rc.d dphys-swapfile enable

puis mise CONF_SWAPFACTOR=2en place /etc/dphys-swapfileet enfin

sudo service dphys-swapfile start

Il ne semble pas redimensionner dynamiquement le swap. Ressemble à un script pour initialiser un fichier d'échange d'une certaine taille qui prend par défaut une capacité de 2x RAM.
Tom Mercer

Salut @TomMercer paramètre swapfactor et maxswap, selon les commentaires dans le fichier: "# définir la taille à la valeur calculée, cette fois la taille de la RAM, s'adapte dynamiquement, garantit qu'il y a suffisamment de swap sans gaspiller d'espace disque en excès". "s'adapte dynamiquement" semble ce que vous cherchez. Meilleur
Denis Pitzalis

Est-ce que la taille de mon fichier d'échange varie entre, disons, 1 Ko et 16 Go, pendant que j'utilise le système d'exploitation et que je remplis de RAM? C'est ce que signifie l'échange de «redimensionnement dynamique». La création d'un fichier d'échange qui est un multiple de la taille de la RAM n'est pas dynamique. Il n'y a aucun intérêt à avoir un fichier d'échange du tout jusqu'à ce que la RAM soit pleine, puis vous voulez que le fichier d'échange soit exactement de la taille de la VRAM que vous utilisez. Si vous fermez les onglets ou l'image énorme sur laquelle vous travaillez, le fichier d'échange devrait redimensionner dynamiquement vers le bas. Le fichier d'échange doit toujours être rempli à 100% en se redimensionnant dynamiquement.
Tom Mercer

0

L'espace d'échange peut être ajouté à un système en cours d'exécution à l'aide de la swaponcommande. Il a besoin d'un fichier d'échange / partition existant (inutilisé). Pour en créer un, utilisez la ddcommande pour allouer un fichier contigu, puis mkswappour ajouter les informations de contrôle correctes au fichier / partition.

Pour supprimer un fichier d'échange, utilisez swapoff; le fichier peut ensuite être supprimé.

Je soupçonne que c'est ce SwapSpaceque fait Dæmon @ user231695.

Notez que swapoff peut être une opération lente si le fichier d'échange est utilisé; toutes les données doivent être transférées vers une autre zone de swap.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.