chmem - konfiguruje pamięć
chmem [-h] [-V*] [-v]
[-c|-e|-d|-g]
[ROZMIAR|ZAKRES|-b ZAKRES-BLOKÓW]
[-z STREFA] [-m
MAPA-PAMIĘCI-W-PAMIĘCI]
Polecenie chmem może ustawić dany rozmiar lub
zakres pamięci jako aktywną lub nieaktywną.
•ROZMIAR należy podać jako
<rozmiar>[m|M|g|G]. Z przyrostkiem m lub M, <rozmiar>
określa rozmiar pamięci w MiB (1024 x 1024 bajtów). Z
przyrostkiem g lub G, <rozmiar> określa rozmiar pamięci w
GiB (1024 x 1024 x 1024 bajtów). Domyślną
jednostką są MiB.
•
ZAKRES należy podać w
postaci 0x<początek>-0x<koniec>, tak jak wyświetla
go wynik polecenia
lsmem(1). <Początek> jest szesnastkowym
adresem pierwszego bajtu, a <koniec> jest szesnastkowym adresem
ostatniego bajtu w danym zakresie pamięci.
•
ZAKRES-BLOKÓW należy
podać w postaci <pierwszy>-<ostatni> lub <blok>, tak
jak wyświetla go polecenie
lsmem(1). <Pierwszy> to numer
pierwszego bloku pamięci, a <ostatni> to numer ostatniego bloku
pamięci w danym zakresie pamięci. Alternatywnie można
podać pojedynczy <blok>.
ZAKRES-BLOKÓW wymaga opcji
--blocks.
•STREFĘ należy podać
jako nazwę strefy pamięci, tak jak wyświetla ją
polecenie lsmem -o +ZONES. Wyjście pokaże jedną
lub więcej prawidłowych stref dla każdego zakresu
pamięci. Jeśli wyświetli się kilka stref, to dany
zakres pamięci obecnie należy do pierwszej strefy.
Domyślnie, chmem ustawi pamięć online do strefy
Movable, jeśli taka istnieje wśród prawidłowych
stref. To domyślne zachowanie można zmienić
podając opcję --zone z inną
prawidłową strefą. Przy balonikowaniu pamięci,
zaleca się wybierać strefę Movable dla pamięci
aktywnej i nieaktywnej, jeśli tylko jest dostępna.
Pamięć w tej strefie ma znacznie większe
prawdopodobieństwo ponownego zdezaktywowania, lecz nie może
być stosowana do dowolnych przydziałów jądra,
tylko dla migrowalnych stron (np. stron buforowanych i anonimowych). Wszystkie
dostępne strefy pokaże opcja --help.
•MAPA-PAMIĘCI-W-PAMIĘCI
podaje się jako 1 lub 0. Wartość 1 przydziela metadane
pamięci typu hotplug (takie jak struktura tablicy stron)
niezależnie od samej pamięci podlegającej
podłączaniu w trybie hotplug, co pozwala na dokonywanie
dołączania pamięci nawet w sytuacjach jej niedoboru, nie
wymagając do tego dodatkowej pamięci. Wartość 0
przechowuje metadane pamięci typu hotplug w zwykłej
pamięci systemowej, co pozwala uniknąć problemów
wynikających z fragmentacji ciągłej pamięci
fizycznej na przestrzeni bloków pamięci. Wartość
można ustawić tylko, jeśli bloki pamięci są
w stanie zdekonfigurowanym, a --memmap-on-memory jest prawidłowe
tylko z opcją --configure. Jeśli się jej nie poda,
a jest obsługiwana, chmem użyje wartości
domyślnej pokazanej w wyjściu lsmem.
Opcja --enable konfiguruje pamięć,
jeśli jest to obsługiwane przez architekturę.
Jeśli konfigurowanie pamięci nie jest obsługiwane przez
architekturę, --enable wciąż dokona aktywacji
pamięci.
Opcja --disable dezaktywuje pamięć i dokonuje
opcjonalnego kroku dekonfiguracji, jeśli jest to obsługiwane
przez architekturę.
Opcja --configure żąda pamięci od
nadzorcy bez aktywowania jej, gdy jest to obsługiwane przez
architekturę, pozwalając na jawne sterowanie i stosowanie
opcji --memmap-on-memory.
Opcja --deconfigure zwraca zasoby pamięci nadzorcy,
jeśli jest to obsługiwane przez architekturę.
ROZMIAR i ZAKRES muszą być
wyrównane do rozmiaru bloku pamięci Linuksa, zgodnie z
wynikiem polecenia lsmem(1).
Ustawienie pamięci jako aktywnej może się nie
powieść z wielu powodów. W systemach wirtualizowanych
może się tak zdarzyć, gdy nadzorca nie będzie
miał odpowiednio dużo pamięci, np. z powodu
przydziału ponad stan faktyczny (overcommit). Ustawienie
pamięci jako nieaktywnej może zawieść, gdy Linux
nie może zwolnić pamięci. Jeśli jedynie
część żądanej pamięci może
zostać aktywowana lub zdezaktywowana, odpowiedni komunikat
poinformuje, jak wiele z żądanej wielkości udało
się aktywować lub zdezaktywować.
Przy aktywowaniu lub konfigurowaniu pamięci, chmem
rozpoczyna od najniższych numerów bloków
pamięci. Przy dezaktywowaniu lub dekonfigurowaniu pamięci,
chmem rozpoczyna od najwyższych numerów bloków
pamięci.
•Architektura s390:
MAPA-PAMIĘCI-W-PAMIĘCI: W przypadku
bloków pamięci skonfigurowanych i aktywowanych przy rozruchu,
domyślna wartość wynosi 0, ponieważ są
one dodawane bez obsługi memmap-on-memory. Pamięć
dodawana dynamicznie w czasie uruchomienia korzysta z domyślnej
wartości wyświetlanej w wyjściu lsmem.
-b, --blocks
Korzysta z parametru ZAKRES-BLOKÓW zamiast
z ZAKRESU lub ROZMIARU przy opcjach --enable i
--disable.
-c, --configure
Ustawia podany ZAKRES, ROZMIAR, lub
ZAKRES-BLOKÓW pamięci do skonfigurowania.
-d, --disable
Ustawia podany ZAKRES, ROZMIAR, lub
ZAKRES-BLOKÓW pamięci jako nieaktywny.
-e, --enable
Ustawia podany ZAKRES, ROZMIAR, lub
ZAKRES-BLOKÓW pamięci jako aktywny.
-g, --deconfigure
Ustawia podany ZAKRES, ROZMIAR, lub
ZAKRES-BLOKÓW pamięci do zdekonfigurowania.
-m, --memmap-on-memory
Ustawia memmap-on-memory podanego ZAKRESU,
ROZMIARU, lub ZAKRESU-BLOKÓW pamięci. Opcja ta
jest prawidłowa tylko łącznie z --configure.
-z, --zone
Wybiera STREFĘ, w której aktywowany
lub dezaktywowany ma być podany ZAKRES, ROZMIAR lub
ZAKRES-BLOKÓW pamięci. Domyślnie
pamięć będzie aktywowana w strefie Movable, jeśli
to tylko możliwe.
-v, --verbose
Tryb szczegółowy. Powoduje, że
chmem wypisuje komunikaty diagnostyczne o swoim działaniu.
-h, --help
Wyświetla ten tekst i wychodzi.
-V, --version
Wyświetla wersję i wychodzi.
chmem ma następujące wartości statusu
zakończenia:
0
sukces
1
niepowodzenie
64
częściowy sukces
chmem --enable 1024
Polecenie żąda aktywowania 1024 MiB
pamięci.
chmem -e 2g
Polecenie żąda aktywowania 2 GB
pamięci oraz, jeśli jest to obsługiwane przez
architekturę, uprzedniego skonfigurowania pamięci.
chmem --disable 0x00000000e4000000-0x00000000f3ffffff
Polecenie dezaktywuje pamięć z zakresu od
0x00000000e4000000 do 0x00000000f3ffffff i dekonfiguruje ją,
jeśli jest to obsługiwane przez architekturę.
chmem -b -d 10
Polecenie dezaktywuje blok pamięci o numerze
10.
chmem -b -c 10 -m 1
Polecenie konfiguruje blok pamięci o numerze 10 z
ustawioną MAPĄ-PAMIĘCI-W-PAMIĘCI. Blok musi
być w stanie zdekonfigurowanym.
chmem -b -c 10
Polecenie konfiguruje blok pamięci o numerze 10 z
domyślnym ustawieniem MAPY-PAMIĘCI-W-PAMIĘCI.
Domyślna wartość jest wyświetlana w lsmem
--output-all. Blok musi być w stanie zdekonfigurowanym.
chmem -b -g 10
Polecenie dekonfiguruje blok pamięci o numerze 10.
Blok musi być nieaktywny.
chmem -d 5g
Polecenie dezaktywuje 5 GB pamięci i dekonfiguruje
ją, jeśli jest to obsługiwane przez architekturę.
Bloki już zdezaktywowane ale wciąż skonfigurowane
są pomijane i muszą być zdekonfigurowane
bezpośrednio opcją --deconfigure.