C'è un motivo per dare a una VM una quantità di base 2 rotonda (2048 MB, 4096 MB, ecc.) Di memoria?


26

Il titolo dice praticamente tutto, c'è qualche vantaggio nel dare una VM 2048 MB di memoria invece di arrotondare alla base-10 e fare 2000 MB?

Risposte:


10

La memoria fisica nel server è un multiplo di una potenza di due, quindi si taglierà uniformemente se si utilizzano altri multipli. Potrebbero esserci dei miglioramenti incredibilmente minori con SLAT e simili se sono anche correttamente allineati. Altrimenti no.


Le pagine sono 4 KiB o 2 MiB, per lo più - non ci sono problemi reali anche con il taglio anche di 1234 MiB, vero?
poige

1
@poige Come meglio lo so, sì, nessun problema ... Avremmo davvero bisogno di qualcuno che conosca SLAT (et alii) dentro e fuori per una risposta definitiva.
Chris S,

13

Hyper-V alloca la memoria internamente in blocchi da 2 MB. L'hypervisor stesso utilizzerà le voci della tabella delle pagine da 2 MB per l'efficienza, se possibile, se il processore supporta la traduzione degli indirizzi di secondo livello (SLAT). Ciò sarà possibile per quasi tutte le macchine virtuali con memoria dinamica disattivata.

A parte questo, no, non importa.


7

Giusto per chiarire cosa hanno detto le altre risposte; il limite che viene definito qui è sostanzialmente per il software della tua macchina virtuale, non per il guest. Cioè, quando il tuo SO guest richiede una pagina di memoria, lo fa in incrementi definiti (cioè 4KB). Quindi, se hai definito la macchina virtuale con 4097 KB di RAM e la tua macchina virtuale host utilizzava una dimensione di pagina 4KB, probabilmente avrebbe concesso un totale di 4100 KB di RAM alla macchina virtuale.

Se il SO guest, tuttavia, dovesse utilizzare una dimensione di pagina di 1 KB e il sistema operativo host utilizzasse una dimensione di pagina 4KB, il sistema operativo host concederebbe essenzialmente 4KB di spazio di cui verrà utilizzato solo 1 KB, ma questo è fuori tutto pezzi di memoria. Quindi non sprecherai mai davvero alcuna quantità di spazio visibile.

Da notare, l'allineamento tra il sistema operativo host e il sistema operativo guest non è un fattore qui, tranne per gli ultimi "bit off".


Ciò non è vero in determinate circostanze: ad esempio il software VM può riservare l'intera quantità di RAM richiesta (più tutto ciò di cui ha bisogno per la scheda video e altre esigenze varie) o quando si utilizza il supporto hardware di paginazione nidificata / tabelle di pagine estese - il guest gestisce efficacemente le pagine fisiche della memoria utilizzando l'hardware della CPU. Inoltre, riservare 4097 KB di memoria molto probabilmente allocerebbe 4100 KB di RAM fisica, sebbene solo 4097 KB sarebbe effettivamente indirizzabile dal sistema operativo guest.
Goyuix,

2
Non vedo come ciò che hai detto sia in contrasto con la mia risposta. Potresti elaborare?
Andrew M.

Questo potrebbe essere stato il tuo intento, tuttavia nel leggere la tua risposta come "in pratica non saresti mai in grado di usare quel 1KB in più" - Ho provato a chiarire che il sistema operativo guest potrebbe (in teoria) usare quella RAM anche se 3/4 del la pagina fisica verrebbe probabilmente non toccata. La tua risposta non mi sembra molto chiara. Ho anche cercato di fornire alcune parole chiave / tecnologie che avrebbero avuto un impatto su tali decisioni. I problemi di allineamento delle pagine sono solo una parte dei compromessi che dovrebbero essere considerati e ho ritenuto che la risposta potesse essere migliorata menzionandone gli impatti rilevanti.
Goyuix,

Ah, vedo dove ho sbagliato. In realtà è così che lo stavo immaginando, ma devo essermene liberato nelle mie varie revisioni. L'ho aggiornato per chiarire questo punto. :)
Andrew M.

3

Sospetto che sia una questione di tradizione e che sia in linea con il modo in cui sono costruiti i sistemi fisici. I sistemi fisici hanno memoria in quantità di base 2 (e almeno con ogni x86 mai realizzato, questo è vero), e ci sono alcune possibilità se non molti OS si aspetteranno questo nella gestione della memoria.

In breve, è davvero perché una macchina virtuale riflette una macchina reale, piuttosto che ipotetica. Non è una risposta molto tecnica, ma penso che sia quella vera


1

Non proprio. La memoria dinamica Hyper-v alloca solo ciò che il sistema utilizza comunque. L'importo assegnato è il valore di avvio. Se non stai usando la memoria dinamica, l'unico vantaggio che posso vedere è di allineare meglio la memoria fisica a quella virtuale.



-1. Vedi, Hyper-V non ha memoria dinamica SE NESSUNO È CONFIGURATO. E indovinate un po '- a volte ha senso non usarlo (l'allocazione richiede tempo, quindi un server di database lo vuole immediatamente, per esempio). In quanto tale, la risposta generica non è pertinente e - in realtà - non è affatto ciò che è stato chiesto.
TomTom,
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.