web-dev-qa-db-fra.com

Quelle est la taille d'une partition de swap nécessaire pour passer en hibernation?

J'ai lu cette question , mais cela ne répond pas définitivement à ma question.

Si je veux que mon ordinateur puisse passer en hibernation, dois-je disposer d'une partition de swap de la taille de la RAM ou Ubuntu pourra-t-il sagement mettre en veille si la partition de swap est compatible avec la partition actuelle -in-use RAM? Je suis sur le point d'installer Ubuntu sur un ordinateur disposant de beaucoup de RAM et d'un disque dur relativement petit. Je ne souhaite donc pas utiliser plus d'espace disque que nécessaire.

Je voulais éviter de donner mes spécifications actuelles afin de garder cette question plus générale, bien que je les donne si nécessaire.

11
Closure Cowboy

Difficile à prévoir: votre échange doit être adapté

  • ce qui est déjà dans l'échange lorsque vous hibernez
  • contenu de RAM lorsque vous veillez en veille prolongée, mais uniquement la partie qui n'est ni du cache disque ni des tampons; l'image RAM est compressée si vous utilisez uswsusp
  • quelques structures de données du noyau

Par conséquent, vous pouvez ne pas hiberner même si votre échange est plus volumineux que votre RAM, car la plupart de vos échanges sont déjà utilisés. Et convertly, vous pouvez hiberner avec succès avec un échange plus petit que la RAM, si vous n’en utilisez pas beaucoup à l’époque.

Si vous souhaitez éviter une partition d'échange de taille fixe car votre disque est très petit, vous pouvez utiliser un fichier d'échange à la place. Il est plus facile de redimensionner, et l'hibernation vers un fichier d'échange est supposée être prise en charge (je ne suis pas sûr que cela fonctionne actuellement, cela s'est fait de temps en temps entre les versions d'Ubuntu; IIRC l'a fait dans 9.10 mais cela devait être configuré en 10.10 ).

9
Gilles

Cette question continue de faire surface dans les requêtes courantes lors du dimensionnement d’un swap en vue de la mise en veille prolongée. La réponse initiale est correcte en ce sens que cela pourrait varier incroyablement en fonction de votre charge de travail, mais je ne pense pas que ce soit une réponse complète.

La réponse complète est que vous pouvez déterminer la quantité dont vous avez besoin en fonction de votre charge de travail spécifique, puis que vous pouvez dimensionner de manière appropriée.

L'outil de base est les messages du noyau pendant l'hibernation. Vous voulez voir combien de mémoire a été utilisée avec cette commande:

Sudo cat /var/log/syslog | grep 'PM:'|grep kbytes

Vous devriez obtenir un résultat comme:

Aug 14 11:03:20 mike-XPS-15-9570 kernel: [17594.823584] PM: Allocated 11809876 kbytes in 2.65 seconds (4456.55 MB/s)
Aug 14 11:03:20 mike-XPS-15-9570 kernel: [17605.365657] PM: Wrote 11787284 kbytes in 9.09 seconds (1296.73 MB/s)

Ensuite, la stratégie consiste à exécuter votre charge maximale et à déclencher une veille prolongée, voir quel espace de swap était requis, éventuellement ajouter une marge de sécurité, puis rendre votre espace de swap de cette taille.

2
Mike Hardy