Czy Ubuntu obsługuje dynamiczne zmiany rozmiaru plików wymiany?

13

Nie mogę sobie wyobrazić, dlaczego plik wymiany musi mieć stały rozmiar. Dlaczego nie pozwolić, aby zmienił się dynamicznie, podobnie jak plik obrazu dysku twardego dla wirtualnego urządzenia?

Tom Mercer
źródło
Linux nie obsługuje dynamicznych rozmiarów przestrzeni wymiany, chyba że policzysz opcję dodawania i usuwania całych przestrzeni wymiany w czasie wykonywania. (Windows też nie działa, nawet ten ostatni.)
David Foerster,
Czy Mac obsługuje dynamiczną wymianę?
Tom Mercer,
Nie mam pojęcia. To zupełnie inne jądro, którego nie studiowałem. Szanse są podobne do zamiany przestrzeni w Linuksie. W każdym razie, czy mógłbyś otworzyć nowe pytanie Unix i Linux lub zapytać Inny, jeśli masz nowe lub dodatkowe pytanie dotyczące jądra Darwina w OS X? Sekcja komentarzy nie jest odpowiednia ani przeznaczona do nowych pytań lub rozszerzonej dyskusji. :-) Dzięki.
David Foerster,
@DavidFoerster w systemie Windows można ustawić minimalny i maksymalny rozmiar każdego pliku stronicowania, a system Windows w razie potrzeby zwiększy rozmiar pliku stronicowania. tomshardware.com/news/…
phuclv

Odpowiedzi:

11

Nie wygląda na to, że Linux obsługuje dynamiczne zmiany rozmiaru pliku wymiany (w każdym razie nie mogłem go wykryć, że rozmiar pliku wymiany zmienił się bez znaku swapoff/ swapon).

Przypuszczalnie łatwiej jest założyć, że plik wymiany nie zmienia dynamicznie rozmiaru pliku podczas pisania kodu do jego obsługi. Nie widzę też w tym wielkiego zastosowania. Ponieważ możesz używać wielu plików wymiany, nic nie stoi na przeszkodzie, aby utworzyć więcej plików wymiany w razie potrzeby.

Zwróć także uwagę na ten akapit ze strony swaponpodręcznika :

The  swap file implementation in the kernel expects to be able to write
to the file directly, without the assistance of the  filesystem.   This
is  a problem on preallocated files (e.g.  fallocate(1)) on filesystems
like XFS or ext4, and on copy-on-write filesystems like btrfs.

Sądzę, że ten sam problem dotyczyłby pliku wymiany o dynamicznym rozmiarze.

muru
źródło
Wygląda na to, że jest to prawda, a swapspace nawet nie zmienia dynamicznie swapu.
Tom Mercer
2

SwapSpace to narzędzie, które pozwoli ci na dynamiczne zamiany, jeśli tego właśnie szukasz. Wierzę, że jest dostępny w Ubuntu.

użytkownik231695
źródło
Choć miała nową wersję 2 lata temu , wszystkie wersje dla Ubuntu wydają się być starodawne. Jak dobrze to działa?
muru
Nie mogę sobie wyobrazić, że metoda zapisu pliku wymiany uległa zmianie, ale nie jestem pewien. Działa dobrze na Debianie.
user231695 17.04.17
Nadal głosuję za odpowiedzią, ponieważ równie łatwo jest stworzyć nową przestrzeń.
user231695 17.04.17
Spróbuję i zdam relację.
Tom Mercer
@ user231695, chociaż utworzenie nowej przestrzeni wymiany jest proste, jest strasznie niewygodne i być może całkowicie niewykonalne jako rozwiązanie. Jedynym momentem, w którym użytkownik chce dodać nową przestrzeń wymiany, jest moment, w którym istniejąca zamiana jest pełna. Stąd moje pytanie dotyczące dynamicznej zmiany rozmiaru pliku wymiany.
Tom Mercer
1

Wiem, że jest późno, ale myślę, że najlepszym rozwiązaniem dla dynamicznej wymiany jest:

sudo apt install dphys-swapfile
sudo update-rc.d dphys-swapfile enable

następnie ustawienie CONF_SWAPFACTOR=2się /etc/dphys-swapfilewreszcie

sudo service dphys-swapfile start
Denis Pitzalis
źródło
Wygląda na to, że dynamicznie nie zmienia rozmiaru zamiany. Wygląda jak skrypt inicjujący plik wymiany o określonym rozmiarze, który domyślnie ma pojemność 2x RAM.
Tom Mercer
Cześć @TomMercer ustawia swapfactor i maxswap, zgodnie z komentarzami w pliku: „# ustaw rozmiar na wartość obliczoną, tym razem rozmiar pamięci RAM, dynamicznie dostosowuje się, gwarantuje, że jest wystarczająca wymiana bez marnowania miejsca na dysku na nadmiar”. „dynamicznie dostosowuje się” wydaje się tym, czego szukasz. Najlepszy
Denis Pitzalis,
Czy powoduje to, że mój plik wymiany różni się między, powiedzmy, 1 KB a 16 GB, podczas gdy używam systemu operacyjnego i zapełniam pamięć RAM? To właśnie oznacza zamiana „dynamicznie zmieniająca rozmiar”. Tworzenie pliku wymiany wielokrotnego rozmiaru pamięci RAM nie jest dynamiczne. Nie ma sensu mieć pliku wymiany, dopóki pamięć RAM nie zostanie zapełniona, a wtedy chcesz, aby plik wymiany miał dokładnie taki sam rozmiar używanej pamięci VRAM. Jeśli zamkniesz karty lub duży obraz, nad którym pracujesz, plik wymiany powinien dynamicznie zmienić rozmiar z powrotem. Plik wymiany powinien zawsze być wypełniony dokładnie w 100% poprzez dynamiczną zmianę rozmiaru.
Tom Mercer,
0

Przestrzeń wymiany można dodać do działającego systemu za pomocą swaponpolecenia. Potrzebuje istniejącego (nieużywanego) pliku wymiany / partycji. Aby go utworzyć, użyj ddpolecenia, aby przydzielić ciągły plik, a następnie mkswapdodać poprawne informacje sterujące do pliku / partycji.

Aby usunąć plik wymiany, użyj swapoff; plik można następnie usunąć.

Podejrzewam, że to właśnie SwapSpacerobi dmemon wspomniany przez @ user231695.

Zauważ, że zamiana może być powolną operacją, jeśli plik wymiany jest używany; wszystkie dane należy przenieść do innego obszaru wymiany.

CSM
źródło