Existe um motivo para atribuir à VM uma quantidade de base 2 redonda (2048 MB, 4096 MB, etc) de memória?

26

O título já diz tudo: há alguma vantagem em fornecer uma VM com 2048 MB de memória em vez de arredondar para a base 10 e fazer 2000 MB?

Nate
fonte

Respostas:

10

A memória física no servidor é um múltiplo de dois, portanto será reduzida se você usar outros múltiplos. Pode haver algumas melhorias incrivelmente pequenas com o SLAT e outras, se estiverem alinhadas corretamente também. Caso contrário, não.

Chris S
fonte
As páginas são de 4 KiB ou 2 MiB, principalmente - não há problemas reais com fatias de até 1234 MiB, existem?
poige
1
@poige Como eu sei, sim, sem problemas ... Nós realmente precisamos de alguém que conheça SLAT (et alii) por dentro e por fora para obter uma resposta definitiva.
Chris S
13

O Hyper-V aloca memória internamente em pedaços de 2 MB. O próprio hipervisor usará entradas de tabela de página de 2 MB para obter eficiência, se possível, se o seu processador oferecer suporte à tradução de endereço de segundo nível (SLAT). Isso será possível para praticamente qualquer VM com a memória dinâmica desativada.

Fora isso, não, não importa.

Jake Oshins
fonte
7

Apenas para esclarecer o que as outras respostas disseram; o limite que está sendo definido aqui é basicamente para o software da sua máquina virtual, não para o convidado. Ou seja, quando o sistema operacional convidado solicita uma página de memória, é feito em incrementos definidos (ou seja, 4KB). Portanto, se você definisse a máquina virtual como 4097 KB de RAM e a VM do host estivesse usando um tamanho de página de 4KB, provavelmente concederia um total de 4100 KB de RAM à máquina virtual.

No entanto, se o sistema operacional convidado usasse um tamanho de página de 1 KB e o sistema operacional host usasse um tamanho de página de 4KB, o sistema operacional principal concederia essencialmente 4KB de espaço, dos quais apenas 1 KB será usado - mas isso é tudo pedaços de memória. Portanto, você nunca estará realmente desperdiçando uma quantidade discernível de espaço.

Observe que o alinhamento entre o sistema operacional host e o sistema operacional convidado não é um fator aqui, exceto pelos últimos "bits desativados".

Andrew M.
fonte
Isso não é verdade em certas circunstâncias: por exemplo, o software da VM pode reservar toda a quantidade de RAM solicitada (mais o que for necessário para a placa de vídeo e outras necessidades diversas) ou ao usar o suporte de hardware de paginação aninhada / tabelas de páginas estendidas - o convidado efetivamente gerencia as páginas físicas da memória usando o hardware da CPU. Além disso, a reserva de 4097 KB de memória provavelmente alocaria 4100 KB de RAM física, embora apenas 4097 KB sejam realmente endereçáveis ​​pelo sistema operacional convidado.
Goyuix
2
Não vejo como o que você disse está em desacordo com a minha resposta. Você poderia elaborar?
Andrew M.
Essa pode ter sido sua intenção, no entanto, ao ler sua resposta como "você nunca seria capaz de usar esse 1 KB extra" - tentei esclarecer que o sistema operacional convidado poderia (em teoria) usar essa RAM mesmo que 3/4 da a página física provavelmente não foi tocada. Sua resposta não me parece muito clara. Também tentei fornecer algumas palavras-chave / tecnologias que teriam impacto nessas decisões. As questões de alinhamento de página são apenas uma parte das compensações que precisam ser consideradas e eu senti que a resposta poderia ser melhorada mencionando especificamente os impactos relevantes a ela.
Goyuix
Ah, eu vejo onde errei. Na verdade, era assim que eu a imaginava, mas devo ter me livrado dela em minhas várias revisões. Eu atualizei para esclarecer esse ponto. :)
Andrew M.
3

Suspeito que seja uma questão de tradição e alinhe-a com a forma como os sistemas físicos são construídos. Os sistemas físicos têm memória em quantidades de base 2 (e menos com todos os x86 já feitos, isso é verdade), e as chances são de alguns, se não muitos SOs esperassem isso no gerenciamento de memória.

Em resumo, é porque uma máquina virtual reflete uma máquina real, e não hipotética. Não é uma resposta muito técnica, mas acho que é a verdadeira

Journeyman Geek
fonte
1

Na verdade não. A memória dinâmica Hyper-v alocará apenas o que o sistema usa de qualquer maneira. A quantidade que você atribui é o valor de inicialização. Se você não estiver usando memória dinâmica, a única vantagem que posso ver é alinhar melhor a memória física com a virtual.

Jim B
fonte
-1. Veja, o Hyper-V não possui memória dinâmica SE NENHUMA CONFIGURAÇÃO. E adivinhe - algumas vezes faz sentido não usá-lo (alocação leva tempo, portanto, um servidor de banco de dados deseja tudo imediatamente, por exemplo). Como tal, a resposta genérica não é relevante e, na verdade, não é o que foi perguntado.
TomTom