skąd mam wiedzieć, czy moje serwery powinny wykorzystywać ogromne strony (rozmiar strony pamięci)


mamy wiele serwerów w klastrze i chcemy wiedzieć, w jakich w ogóle przypadkach potrzebujemy konfigurować ogromne strony?
Mam też kilka quasi
  • czy dawka „rozmiaru strony pamięci” jest równa ogromnej liczbie stron

na moim serwerze Linux wpisałem następujące polecenie, aby sprawdzić domyślny rozmiar strony pamięci
grep Hugepagesize/proc/meminfoHugepagesize: 2048 kBgetconf PAGESIZE4096

<ol start="2">
[*]
ale jak każdy może tutaj zobaczyć, otrzymujemy wyniki porównania, dlaczego?
[/*]
[*]
jakie są zagrożenia podczas korzystania z dużych stron?
[/*]
[*]
dawka Wyłączenie przezroczystej dużej strony oznacza wyłączenie opcji OGROMNE STRONY?
[/*]
[/list]
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Ogromne strony są interesujące, gdy aplikacje wymagają dużych mapowań, do których będą miały losowy dostęp, ponieważ jest to najgorszy przypadek dla alternatywnego bufora tłumaczenia (TLB). Poświęcasz szczegółowość wyświetlania dla wpisów TLB.
Strony, w tym duże, mogą być mapowane tylko do bloku pamięci fizycznej o tym samym rozmiarze i wyrównane do tego rozmiaru. Tak więc ogromna strona 2 MB musi zostać zmapowana do granicy 2 MB w fizycznej pamięci RAM, a ogromna strona 1 GB musi zostać zmapowana na granicę 1 GB, ponieważ dane LSB adresują się na stronie i nie można tutaj dodać przesunięcia.
Oznacza to, że ogromne strony są zwykle rezerwowane podczas uruchamiania systemu, gdy pamięć fizyczna nie jest jeszcze pofragmentowana. Mogą korzystać z aplikacji, które są świadome ogromnych stron
         hugetlbfs
wyróżnij je.
Musisz zdecydować za pomocą parametru jądra, czy duże strony powinny mieć 2 MB czy 1 GB, nie możesz ich mieszać. Zwykłe strony 4K są zawsze dostępne.
Najczęstszym przypadkiem użycia są maszyny wirtualne (qemu/kvm mogą używać ogromnych stron), gdzie pozwala to na przechowywanie całego mapowania pamięci maszyny wirtualnej w niewielkiej liczbie wpisów TLB, które w związku z tym nigdy nie są wywłaszczane, więc dostęp do pamięci wewnątrz maszyna wirtualna wymaga wyszukiwania strony według tabeli tylko w kontekście gościa.
Niektóre systemy baz danych obsługują również duże strony, ale jest to zwykle przydatne tylko podczas pracy z dużymi zestawami danych i indeksami.
Pytania:
  • Istnieją zwykłe (4 KB) strony i ogromne (2 MB lub 1 GB) strony. Kiedy pytasz o rozmiar strony, otrzymujesz rozmiar zwykłych stron, gdy pytasz o duży rozmiar strony, otrzymujesz ustawienie dla dużych stron. Równolegle można używać zarówno zwykłych, jak i dużych stron, ale nie można mieszać różnych dużych rozmiarów stron.
  • Otrzymujesz różne wyniki, ponieważ są to różne rzeczy. Rozmiar zwykłych stron jest ustalany sprzętowo, więc nie jest to ustawienie.
  • Ogromne strony muszą być wstępnie przydzielone i chociaż pamięć jest technicznie „wolna”, nie można jej używać do niczego innego niż aplikacje obsługujące ogromne strony, więc wszyscy oprócz tych aplikacji będą mieli mniej dostępnej pamięci. Zwykle nie stanowi to problemu, ponieważ będziesz używać ogromnych stron na maszynach zaprojektowanych dla aplikacji intensywnie korzystających z pamięci, takich jak maszyny wirtualne lub bazy danych.
  • Przezroczyste ogromne strony próbują udostępniać pamięć w postaci buforów i pamięci podręcznych (w przeciwieństwie do punktu 3) i starają się udostępniać ogromne strony aplikacjom, które mapują duże bloki pamięci, aby aplikacje, które nie są świadome ogromnych stron, mogły z nich skorzystać - w zasadzie w aplikacji, która żąda bloku pamięci 2 MB/1 GB, zostanie dostarczona ogromna strona, jeśli to możliwe. To, czy pomaga, czy obniża wydajność, zależy od aplikacji. Jeśli masz aplikację z obsługą ogromnych stron i chcesz ręcznie przypisywać pamięć, musisz wyłączyć THP, podczas gdy system z aplikacją bazy danych, która nie obsługuje dużych stron, prawdopodobnie przyniesie korzyści.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Oczywistymi przypadkami użycia dużych stron są sytuacje, gdy PageTables (widoczne w/proc/meminfo) zajmują dziesiątki GB. Oznacza to duże obciążenie pamięci i procesora ze względu na proste śledzenie pamięci. Dzieje się tak z gigantycznymi fragmentami pamięci, dużą liczbą procesów lub jednym i drugim. Często w aplikacjach bazodanowych.
Ogromne strony znacznie zmniejszają ten narzut, ponieważ pojedynczy wpis w tabeli stron adresuje teraz znacznie więcej pamięci, powiedzmy 2048 KB zamiast 4 KB. (Na innych platformach są różne rozmiary; na przykład AIX on POWER obsługuje strony 16 MB).
Ogromnych stron w systemie Linux nie można używać do buforowania plików, co jest irytujące i nieefektywne, gdy dla pamięci niewspółużytkowanej malloc () używa wielu megabajtów. W związku z tym administrator musi przydzielić ogromne pule stron, które mogą być używane tylko do niektórych celów. To jest wada korzystania z dużych stron.
Przezroczyste ogromne strony (THP) starają się zmniejszyć uciążliwość administracji, automatycznie defragmentując ciągłą pamięć na ogromne strony. Pomysł polegał na tym, aby wstępnie przydzielone ogromne strony były opcjonalne. Korzyści są w dużym stopniu zależne od obciążenia i może wymagać zbyt dużej mocy obliczeniowej procesora, aby było tego warte. Wyłączenie THP oznacza, że ​​nadal możesz używać ręcznego przydzielania dużych stron. Czasami warto wyłączyć THP i po prostu umieścić segmenty pamięci współdzielonej bazy danych na ogromnych stronach.
Ostatnia uwaga na ogromnych stronach Linuksa: uważam zarządzanie nimi irytujące.
  • Pamięć współdzielona używa jednego interfejsu, ale w przypadku innych korzystasz z biblioteki i systemu plików hugetlbfs.
  • Możesz „marnować” pamięć, przydzielając zbyt duże strony i nie konfigurując aplikacji do korzystania z nich.
  • Tę liczbę stron należy przeskalować dla każdego rozmiaru hosta, ponieważ jest to liczba stron, a nie procent pamięci.
  • Często możliwość przydzielania ogromnych stron jest ograniczona do jednej grupy, zmiana użytkowników bazy danych może prowadzić do nieoczekiwanego zużycia pamięci.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się