W jaki sposób instalator oblicza, jaki rozmiar partycji wymiany należy utworzyć? Prawdopodobnie opiera się na wielkości zainstalowanej pamięci RAM, ale czy zależy to od ilości pamięci RAM?
Nie ma wartości domyślnej, zależy to od ilości pamięci RAM.
Uri Herrera
1
No tak, ale szukałem trochę więcej szczegółów niż „to zależy”. Czy zawsze jest to wielokrotność wielkości pamięci RAM, czy zależy to od ilości pamięci RAM? Na przykład duże rozmiary pamięci RAM nigdy nie wymagałyby więcej niż wystarczającej ilości, aby umożliwić hibernację, ale bardzo małe rozmiary pamięci RAM mogłyby skorzystać z zamiany znacznie większej niż 1: 1.
Seret
Odpowiedzi:
5
W rzeczywistości dphys-swapfilena domyślnym instalacyjnym dysku CD z systemem Ubuntu nie ma programu i nie jest on używany do obliczania wielkości wymiany .
To, co się dzieje, polega na tym, że ubiquityinstalator używa partman-autoskryptów i plików konfiguracyjnych (zwanych przepisami ) do określania rozmiarów wszystkich partycji. Działa to tak:
Partman znajduje odpowiedni plik receptury zgodnie z typem komputera i opcją wybraną przez użytkownika.
Tam znajduje minimalny i maksymalny rozmiar partycji oraz jej priorytet. W przypadku wymiany może wynosić 96 (min - w MB) 512 (priorytet) 300% (maks.).
Potem dostaje rozmiar pamięci RAM (przez /proc/meminfo).
Interesująca debata: lepsza referencja niż dziwna strona debiana?
enzotib
Cóż, znalazłem to również, kiedy szukałem, ale pakiet ma „Ostrzeżenie: Ten pakiet jest przeznaczony do użytku tylko w budowaniu obrazów instalatora Debiana. Nie instaluj go w normalnym systemie Ubuntu.”. Założyłem, że to nie zostało użyte, więc poszukałem kodu dphys-swapfile>: - D Hmm, naprawdę interesujące.
Rinzwind
@enzotib: dlaczego dziwny?
umówić
@arrange: dziwne, ponieważ nie jest to oficjalna strona Ubuntu, a także jako strona debian nie wydaje się oficjalna.
enzotib
Znalazłem 2 kolejne metody obliczania wielkości wymiany D: Ta metoda używa grep ^ Mem: / proc / meminfo lub jeśli jest to 0 grep ^ MemTotal: / proc / meminfo, a następnie mnoży się przez 2 (domyślnie) lub 3 (większość jest ustawiona na 300%) z minimum na architekturę. Mipsel-sb1-bcm91250a używa stałej 512. i386-efi używa 200%.
Rinzwind
19
To będzie raczej techniczne, ale fajnie było się tego dowiedzieć, więc proszę ...
Znalazłem pakiet, dphys-swapfilea tutaj jest kod źródłowy . Opcja setupsłuży do konfiguracji:
setup - informuje dphys-swapfile, aby obliczył optymalny rozmiar pliku wymiany i
(ponownie) wygeneruj odpowiedni plik wymiany. Domyślnie jest to 2 razy rozmiar pamięci RAM.
Można to wywołać podczas uruchamiania, więc plik zawsze pozostaje
odpowiedni rozmiar dla bieżącej pamięci RAM lub uruchamiany ręcznie, gdy tylko rozmiar pamięci RAM ma
zmienione.
Wewnątrz dphys-swapfileznajduje się ustawienie conf_swapsizedla z góry określonego rozmiaru (w Natty jest to puste):
rozmiar, który chcemy wymusić, to domyślny (pusty) daje 2 * RAM
CONF_SWAPSIZE =
i ustawienie dla swapfactor...
this is what we want, 2 times RAM size
SWAPFACTOR=2
Rzeczywisty rozmiar jest obliczany nieco dalej na:
if ["$ {CONF_SWAPSIZE}" = ""]; następnie
# obliczyć automatyczny optymalny rozmiar
echo -n „rozmiar komputera”
# wydaje się, że jest to najbliższy rozmiar fizyczny RAM, brakuje około 60k
KCORESIZE = "` ls -l / proc / kcore | awk '{print 5 $}' '
# make MBytes, który w zaokrągleniu w dół będzie dokładnie o 1 za mało, więc dodaj 1
MEMSIZE = "` expr "$ {KCORESIZE}" / 1048576 + 1` "
# default, bez zastępowania pliku konfiguracyjnego, zamiana = 2 * RAM
CONF_SWAPSIZE = "` expr "$ {MEMSIZE}" '* * „$ {SWAPFACTOR}” „”
fi
Jak widać sposób ich obliczania w tym pakiecie zależy od wielkości /proc/kcore, a następnie jest dzielony przez 1048576, +1, aby zaokrąglić w górę, a następnie zostaje pomnożony przez współczynnik zamiany. Z mojej maszyny:
Domyślna wartość dla tego systemu to 1065349120/1048576 = 1015 + 1 = 1016 * 2 = 2032 MB.
Odpowiedzi:
W rzeczywistości
dphys-swapfile
na domyślnym instalacyjnym dysku CD z systemem Ubuntu nie ma programu i nie jest on używany do obliczania wielkości wymiany .To, co się dzieje, polega na tym, że
ubiquity
instalator używapartman-auto
skryptów i plików konfiguracyjnych (zwanych przepisami ) do określania rozmiarów wszystkich partycji. Działa to tak:/proc/meminfo
).Detale:
Plik przepisu może wyglądać następująco:
Algorytm do obliczania rozmiarów:
Więcej informacji:
partman-auto-recipe.txt Droga powrotna
http://dev.blankonlinux.or.id/browser/pattimura/ubiquity/di/source/partman-auto/lib/recipes.sh?rev=pattimura%2Cubiquity%2C261DEAD LINKźródło
To będzie raczej techniczne, ale fajnie było się tego dowiedzieć, więc proszę ...
dphys-swapfile
a tutaj jest kod źródłowy . Opcjasetup
służy do konfiguracji:dphys-swapfile
znajduje się ustawienieconf_swapsize
dla z góry określonego rozmiaru (w Natty jest to puste):i ustawienie dla
swapfactor
...Rzeczywisty rozmiar jest obliczany nieco dalej na:
Jak widać sposób ich obliczania w tym pakiecie zależy od wielkości
/proc/kcore
, a następnie jest dzielony przez 1048576, +1, aby zaokrąglić w górę, a następnie zostaje pomnożony przez współczynnik zamiany. Z mojej maszyny:Domyślna wartość dla tego systemu to 1065349120/1048576 = 1015 + 1 = 1016 * 2 = 2032 MB.
źródło