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?
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.
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.
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.
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:
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.
Odpowiedzi:
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
swapon
podręcznika :Sądzę, że ten sam problem dotyczyłby pliku wymiany o dynamicznym rozmiarze.
źródło
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.
źródło
Wiem, że jest późno, ale myślę, że najlepszym rozwiązaniem dla dynamicznej wymiany jest:
następnie ustawienie
CONF_SWAPFACTOR=2
się/etc/dphys-swapfile
wreszcieźródło
Przestrzeń wymiany można dodać do działającego systemu za pomocą
swapon
polecenia. Potrzebuje istniejącego (nieużywanego) pliku wymiany / partycji. Aby go utworzyć, użyjdd
polecenia, aby przydzielić ciągły plik, a następniemkswap
dodać 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
SwapSpace
robi 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.
źródło