Le VM Linux in VMware / ESX dovrebbero avere una partizione di swap?


18

In una configurazione VMware ESX qual è la differenza tra queste opzioni ?:

  • una VM Linux con 1 GB di RAM e 1 GB di partizione di swap e la VM utilizza 1,5 GB di RAM
  • una VM Linux con 1 GB di RAM e nessuna partizione di swap e la VM utilizza 1,5 GB di RAM

Voglio dire, in entrambi i casi viene utilizzato lo swap;

  • nel primo scambio viene fatto la partizione di swap di Linux
  • nel secondo caso, VMware cambierà 512 MB nel pool di archiviazione VMware.

Quindi ha senso dare una partizione di swap alle macchine virtuali Linux?


Stai chiedendo se l'host ESX deve essere scambiato o meno, o come viene gestito con la VM? Potrebbe voler approfondire la domanda per specificare cosa intendi.
Bart Silverstrim, il

Speriamo sia fatto ora.
Sandra,

Risposte:


15

Ignorando il fatto che le persone hanno a che fare con motivi specifici del sistema operativo, ho due ragioni per cui è una cattiva idea non funzionare con una partizione / file di scambio.

  1. Se si dispone di 1,5 GB di RAM allocati su una VM senza file di spazio / partizione e si desidera utilizzare 1,5 GB + 1 MB, verrà segnalato un errore di memoria insufficiente. Con lo spazio di swap sarà in grado di scambiare dati dalla memoria attiva e sul disco.
  2. Il sistema operativo guest svolge un lavoro molto migliore nella gestione della memoria rispetto all'host. Questo è il motivo per cui esiste una tecnologia come il ballooning della memoria perché l'host può fare congetture istruite su quale memoria non è necessaria in questo momento, ma l'ospite lo sa a un livello molto più intelligente (questo evita che la memoria del sistema operativo venga scambiata e ciò potrebbe compromettere le prestazioni).

10

Sì. È il modo Unix.

Unix (anche Linux) prevede di essere in grado di scambiare.
Le cose brutte accadono quando il sistema non può scambiare (o perché è stato configurato male senza una partizione di swap o perché lo spazio di swap è pieno). In Linux una di queste cose cattive è Out Of Memory Killer, che immergerà un coltello nel retro del programma che pensa stia utilizzando la maggior parte della RAM (i server di database sono un obiettivo preferito).


4

Cosa hai /proc/sys/vm/overcommit_memoryimpostato? Dalla documentazione del kernel:

0       -       Heuristic overcommit handling. Obvious overcommits of
                address space are refused. Used for a typical system. It
                ensures a seriously wild allocation fails while allowing
                overcommit to reduce swap usage.  root is allowed to
                allocate slightly more memory in this mode. This is the
                default.

1       -       Always overcommit. Appropriate for some scientific
                applications.

2       -       Don't overcommit. The total address space commit
                for the system is not permitted to exceed swap + a
                configurable percentage (default is 50) of physical RAM.
                Depending on the percentage you use, in most situations
                this means a process will not be killed while accessing
                pages but will receive errors on memory allocation as
                appropriate.

Quindi se stai usando 1 non c'è differenza. Se stai usando 2 e nessun file di swap di Linux, nessun processo sarà in grado di allocare 512 M di memoria (virtuale). Il risultato non è chiaro per 0.

Modifica: da http://utcc.utoronto.ca/~cks/space/blog/linux/LinuxVMOvercommit ecco come funziona 0:

Il sovraccarico euristico tenta di calcolare la quantità di memoria che il sistema potrebbe darti se recuperasse tutta la memoria che poteva e nessun altro processo utilizzava più RAM di quanto non sia attualmente; se stai chiedendo qualcosa di più, la tua assegnazione viene rifiutata. In particolare, il numero teorico di "memoria libera" viene calcolato aggiungendo spazio di swap libero, RAM libera (meno 1/32 se non si è root) e tutto lo spazio utilizzato dalla cache buffer unificata e dai dati del kernel etichettati come recuperabili (meno alcune pagine riservate).

Quindi utilizza anche lo swap nel calcolo. In generale seguirei la raccomandazione RHEL di:

M = Amount of RAM in GB, and S = Amount of swap in GB, then
If M < 2
    S = M *2
Else
    S = M + 2

1
cat /proc/sys/vm/overcommit_memoryritorna 0. Cosa mi consigliate in termini di overcommit_memoryvalore e swap / no swap?
Sandra,

3

Le partizioni di swap possono essere potenzialmente più veloci, specialmente in situazioni in cui il disco di root è quasi pieno e non è possibile creare un file di scambio in un unico pezzo senza frammentazione, per non parlare del sovraccarico che potrebbe essere creato dal filesystem e, se applicabile, cose come LVM.

Ma le prestazioni di entrambe le macchine risulteranno comunque buone se si mantiene il 33% dei requisiti di memoria sul disco.


Quando dici "disco root". Intendi sull'host ESX, dove ESX crea i suoi file di scambio?
Sandra,

No, intendo il disco di sistema della VM contenente il file system di root. Dopotutto, è qui che avverrà lo scambio in assenza di una partizione di scambio dedicata.
Sven

Nota, questa risposta sta discutendo tra partizione di swap e file di swap. Pensavo che la domanda fosse se avessi bisogno di uno scambio.
user606723

@ user606723: Se non si utilizza affatto lo swap, si verificherà un errore di memoria insufficiente se si tenta di allocare più memoria di quella della VM e l'utilizzo di 1,5 GB con una situazione fisica di 1 GB non può comunque verificarsi.
Sven

@SvenW, Sì, ma non è scontato che qualcosa del genere possa accadere. Spetta all'amministratore decidere.
user606723

0

Si prega di consultare il seguente link- https://help.ubuntu.com/community/SwapFaq

Fondamentalmente, a meno che non sia necessario ibernare o utilizzare più memoria di quella che si sta allocando alla VM, non vi è alcun vantaggio significativo in una partizione di swap.

Non uso una partizione / file di scambio su nessuna delle mie macchine linux da anni.


1
La domanda non riguarda swap / no swap. Si tratta di come VMware gestisce lo swap.
Sandra,

0

L'ovvio vantaggio dello scambio è che quando il computer si arresta in modo anomalo è comunque possibile creare un dump di arresto anomalo. Correggimi se sbaglio, ma questo non è possibile senza scambio. Questo non è specifico di VMWare ovviamente ma si applica ovunque. Mi è sembrato importante sottolineare.

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.