Quanto è grande una partizione di swap per andare in letargo?


11

Ho letto questa domanda , ma non risponde definitivamente alla mia domanda.

Se voglio che il mio computer sia in grado di ibernare, devo avere una partizione di swap grande quanto la mia RAM, oppure Ubuntu sarà saggiamente in grado di ibernare se la partizione di swap può adattarsi alla RAM attualmente in uso ? Sto per installare Ubuntu su un computer con molta RAM e un disco rigido relativamente piccolo, quindi non voglio usare più spazio sul disco rigido del necessario.

Volevo evitare di fornire le mie specifiche effettive per mantenere questa domanda più generale, anche se le darò se necessario.

Risposte:


9

È difficile da prevedere: lo swap deve adattarsi

  • cosa c'è già nello scambio quando sei in letargo
  • cosa c'è nella RAM quando sei in letargo, ma solo la parte che non è cache del disco o buffer; l'immagine RAM viene compressa se si utilizzauswsusp
  • alcune strutture di dati del kernel

Quindi non puoi ibernare anche se lo swap è più grande della RAM, perché la maggior parte dello swap è già in uso. E per converso puoi ibernare con successo con uno swap più piccolo della RAM, se non stai usando molto di nessuno dei due in quel momento.

Se vuoi evitare una partizione di swap di dimensioni fisse perché il tuo disco è molto piccolo, puoi invece scegliere un file di swap. È più facile ridimensionare e si suppone che sia supportato l'ibernazione a un file di scambio (non sono sicuro che funzioni correttamente, che va e viene tra le versioni di Ubuntu; IIRC lo ha fatto in 9.10 ma doveva essere impostato in 10.10 ).


1
La cache del disco non è compressa
psusi il

1
il modo in cui lo hai scritto ha fatto sembrare che stavi dicendo che la cache è compressa, non l'immagine di ibernazione. Per l'immagine di ibernazione da comprimere è necessario installare il pacchetto uswsusp. L'implementazione del kernel predefinita non viene compressa.
psusi,

2

Questa domanda continua a emergere nelle query più comuni durante il dimensionamento dello swap per impostare l'ibernazione. La risposta originale è corretta in quanto potrebbe variare incredibilmente in base al carico di lavoro, ma non credo sia una risposta completa.

La risposta completa è che puoi dire quanto ti serve in base al tuo carico di lavoro specifico, quindi puoi dimensionare in modo appropriato.

Lo strumento di base sono i messaggi del kernel durante l'ibernazione. Vuoi vedere quanta memoria è stata utilizzata con questo comando:

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

Dovresti ottenere un output come:

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)

Quindi la strategia è quella di eseguire il carico massimo e attivare un letargo, vedere quale spazio di swap era necessario, eventualmente aggiungere un margine di sicurezza, quindi rendere lo spazio di swap di quelle dimensioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.