Czy istnieje powód, aby dać maszynie wirtualnej okrągłą ilość pamięci base-2 (2048 MB, 4096 MB itp.)?

26

Tytuł mówi prawie wszystko, czy jest jakaś korzyść z dostarczenia VM 2048 MB pamięci zamiast zaokrąglania do base-10 i wykonywania 2000 MB?

Nate
źródło

Odpowiedzi:

10

Pamięć fizyczna na serwerze jest wielokrotnością potęgi dwóch, więc rozdzieli się równomiernie, jeśli użyjesz innych wielokrotności. Mogą być niewiarygodnie drobne ulepszenia w SLAT i takie, jeśli są również odpowiednio wyrównane. W przeciwnym razie nie.

Chris S.
źródło
Strony to w większości 4 KiB lub 2 MiB - nie ma prawdziwych problemów z nawet krojeniem nawet 1234 MiB, prawda?
poige
1
@poige Jak najlepiej wiem, tak, żadnych problemów ... Naprawdę potrzebowalibyśmy kogoś, kto zna SLAT (i in.) wewnątrz i na zewnątrz, aby uzyskać ostateczną odpowiedź.
Chris S,
13

Hyper-V wewnętrznie przydziela pamięć w 2 MB porcjach. Sam hiperwizor użyje 2 MB pozycji tabeli stron dla zwiększenia wydajności, jeśli to możliwe, jeśli twój procesor obsługuje translację adresów drugiego poziomu (SLAT). Będzie to możliwe dla praktycznie każdej maszyny wirtualnej z wyłączoną pamięcią dynamiczną.

Poza tym nie, nie ma to znaczenia.

Jake Oshins
źródło
7

Aby wyjaśnić, co powiedziały inne odpowiedzi; zdefiniowany tu limit dotyczy oprogramowania maszyny wirtualnej, a nie gościa. Oznacza to, że gdy system operacyjny gościa żąda strony pamięci, robi to w określonych przyrostach (tj. 4KB). Więc jeśli zdefiniowałeś maszynę wirtualną jako 4097 KB pamięci RAM, a maszyna wirtualna hosta używała rozmiaru strony 4KB, to prawdopodobnie przyznałaby maszynie wirtualnej łącznie 4100 KB pamięci RAM.

Gdyby jednak system operacyjny gościa używał rozmiaru strony 1 KB, a system operacyjny hosta używał rozmiaru strony 4KB, wówczas system operacyjny hosta zasadniczo przyznałby 4KB miejsca, z którego zostanie wykorzystany tylko 1 KB - ale to nie wszystko fragmenty pamięci. Więc tak naprawdę nigdy nie będziesz marnować zauważalnej ilości miejsca.

Należy zauważyć, że wyrównanie między systemem operacyjnym hosta a systemem operacyjnym gościa nie ma tutaj znaczenia, z wyjątkiem ostatnich „bitów wyłączonych”.

Andrew M.
źródło
Nie jest to prawdą w pewnych okolicznościach: na przykład oprogramowanie VM może zarezerwować całą wymaganą ilość pamięci RAM (plus wszystko, czego potrzebuje do karty graficznej i innych potrzeb) lub podczas korzystania ze sprzętowej obsługi stronicowania / rozszerzonych tabel stron - gość skutecznie zarządza fizycznymi stronami pamięci za pomocą sprzętu CPU. Również zarezerwowanie 4097 KB pamięci najprawdopodobniej przydzieli 4100 KB fizycznej pamięci RAM, chociaż tylko 4097 KB będzie faktycznie adresowalne przez system operacyjny gościa.
Goyuix,
2
Nie rozumiem, jak to, co powiedziałeś, jest sprzeczne z moją odpowiedzią. Czy mógłbyś opracować?
Andrew M.,
Być może taka była twoja intencja, jednak czytając twoją odpowiedź jako „zasadniczo nie byłbyś w stanie użyć tego dodatkowego 1 KB” - próbowałem wyjaśnić, że system operacyjny gościa mógłby (teoretycznie) korzystać z tej pamięci RAM, chociaż 3/4 fizyczna strona prawdopodobnie pozostanie nietknięta. Twoja odpowiedź nie jest dla mnie tak jasna. Próbowałem też podać słowa kluczowe / technologie, które miałyby wpływ na te decyzje. Problemy z wyrównaniem stron to tylko jedna z części kompromisów, które należy wziąć pod uwagę, i czułem, że odpowiedź można poprawić, podając konkretny wpływ.
Goyuix,
Ach, widzę, gdzie popełniłem błąd. Tak właściwie to sobie wyobrażałem, ale musiałem się tego pozbyć w różnych wersjach. Zaktualizowałem go, aby wyjaśnić tę kwestię. :)
Andrew M.
3

Podejrzewam, że jest to kwestia tradycji i dostosowanie jej do sposobu budowania systemów fizycznych. Systemy fizyczne mają pamięć w ilościach podstawowych 2 (a przynajmniej przy każdym wyprodukowanym x86, to prawda), a są szanse, jeśli nie wiele systemów operacyjnych spodziewałoby się tego w zarządzaniu pamięcią.

Krótko mówiąc, tak naprawdę dzieje się tak, ponieważ maszyna wirtualna odzwierciedla maszynę prawdziwą, a nie hipotetyczną. Niezbyt techniczna odpowiedź, ale myślę, że to jest prawdziwa

Journeyman Geek
źródło
1

Nie całkiem. Pamięć dynamiczna Hyper-v i tak przydzieli tylko to, czego używa system. Przypisana kwota to wartość początkowa. Jeśli nie używasz pamięci dynamicznej, jedyną korzyścią, jaką widzę, jest lepsze dopasowanie pamięci fizycznej do wirtualnej.

Jim B.
źródło
-1. Zobacz, Hyper-V nie ma pamięci dynamicznej, JEŚLI NIE JEST KONFIGUROWANY. I zgadnij, co - czasem nie ma sensu tego używać (alolokalizacja wymaga czasu, więc na przykład serwer bazy danych chce tego wszystkiego natychmiast). W związku z tym ogólna odpowiedź nie jest istotna i - właściwie - wcale nie jest zadawana.
TomTom,