Wie berechnet das Installationsprogramm die Größe der zu erstellenden Swap-Partition? Vermutlich basiert es auf der installierten RAM-Größe. Aber hängt das davon ab, wie viel RAM vorhanden ist?
Es gibt keinen Standardwert. Dies hängt davon ab, wie viel RAM Sie haben.
Uri Herrera
1
Nun ja, aber ich habe nach etwas mehr Details gesucht als "es kommt darauf an". Ist es immer ein festes Vielfaches der RAM-Größe oder hängt es davon ab, wie viel RAM vorhanden ist? Beispielsweise würden große RAM-Größen niemals mehr als genug benötigen, um den Ruhezustand zu ermöglichen, aber sehr kleine RAM-Größen könnten von einem Swap profitieren, der beträchtlich größer als 1: 1 ist.
Seret
Antworten:
5
Tatsächlich befindet sich kein dphys-swapfileProgramm auf einer Ubuntu-Standardinstallations-CD, und es wird nicht zur Berechnung der Swap- Größe verwendet.
Das ubiquityInstallationsprogramm verwendet die partman-autoSkripts und Konfigurationsdateien (so genannte Rezepte ), um die Größe aller Partitionen zu bestimmen. Das funktioniert so:
Partman findet die richtige Rezeptdatei entsprechend dem Computertyp und der vom Benutzer gewählten Option.
Dort findet es die minimale und maximale Größe der Partition und deren Priorität. Für den Tausch kann er 96 (min - in MB) 512 (Priorität) 300% (max) betragen.
Dann erhält es die RAM-Größe (via /proc/meminfo).
Es verwendet einen eigenen Algorithmus, um die Größen zu berechnen.
Interessante Debatte: Eine bessere Referenz als eine fremde Debian-Website?
Enzotib
Nun, ich habe das auch gefunden, als ich danach gesucht habe, aber das Paket hat eine "Warnung: Dieses Paket ist nur für die Erstellung von Debian-Installer-Images gedacht. Installieren Sie es nicht auf einem normalen Ubuntu-System." Ich nahm an, dass dies nicht verwendet wurde, also suchte ich weiter und fand den Code für dphys-swapfile>: - D Hmm in der Tat interessant.
Rinzwind
@enzotib: warum seltsam?
vereinbaren Sie den
@arrange: seltsam, weil keine offizielle Ubuntu-Site und auch als Debian-Site keine offizielle zu sein scheint.
Enzotib
Ich habe 2 weitere Methoden zur Berechnung der Swap-Größe D gefunden: Diese Methode verwendet grep ^ Mem: / proc / meminfo oder wenn das 0 ist grep ^ MemTotal: / proc / meminfo und multipliziert dann mit 2 (Standard) oder 3 (die meisten sind auf gesetzt) 300%) mit einem Minimum pro Architektur. Ein mipsel-sb1-bcm91250a verwendet eine feste 512. i386-efi verwendet 200%.
Rinzwind
19
Dies wird eher technisch sein, aber es hat Spaß gemacht, es herauszufinden, und so geht es weiter ...
Ich habe ein Paket gefunden dphys-swapfileund hier ist der Quellcode . Option setupwird verwendet, um es einzurichten:
setup - weist dphys-swapfile an, die optimale Größe der Auslagerungsdatei zu berechnen und
Eine passende Auslagerungsdatei (neu) generieren. Standardmäßig 2-fache RAM-Größe.
Dies kann beim Booten aufgerufen werden, so dass die Datei immer die
Die richtige Größe für den aktuellen Arbeitsspeicher oder die Ausführung von Hand, wann immer dies der Fall ist
geändert.
Darin dphys-swapfilebefindet sich eine Einstellung conf_swapsizefür eine vordefinierte Größe (in Natty ist diese leer):
Größe, die erzwungen werden soll, Standard (leer) ergibt 2 * RAM
CONF_SWAPSIZE =
und eine Einstellung für eine swapfactor...
this is what we want, 2 times RAM size
SWAPFACTOR=2
Die tatsächliche Größe wird etwas weiter unten berechnet:
if ["$ {CONF_SWAPSIZE}" = ""]; dann
# Automatische optimale Größe berechnen
echo -n "Rechengröße"
# Dies scheint der physischen RAM-Größe am nächsten zu sein, es fehlen etwa 60 KB
KCORESIZE = "` ls -l / proc / kcore | awk '{print $ 5}' `"
# mache MByte, die abgerundet sind, genau 1 zu wenig, also addiere 1
MEMSIZE = "` expr "$ {KCORESIZE}" / 1048576 + 1 "
# Standard, ohne dass die Konfigurationsdatei überschrieben wird, swap = 2 * RAM
CONF_SWAPSIZE = "` expr "$ {MEMSIZE}" '*' "$ {SWAPFACTOR}" `"
fi
Wie Sie sehen können, hängt die Art und Weise, wie sie in diesem Paket berechnet wird, von der Größe von ab /proc/kcore, wird dann durch 1048576, +1 geteilt, um es aufzurunden, und wird dann mit dem Swap-Faktor multipliziert. Von meiner Maschine:
Die Standardeinstellung für dieses System wäre 1065349120/1048576 = 1015 + 1 = 1016 * 2 = 2032 MByte.
Antworten:
Tatsächlich befindet sich kein
dphys-swapfile
Programm auf einer Ubuntu-Standardinstallations-CD, und es wird nicht zur Berechnung der Swap- Größe verwendet.Das
ubiquity
Installationsprogramm verwendet diepartman-auto
Skripts und Konfigurationsdateien (so genannte Rezepte ), um die Größe aller Partitionen zu bestimmen. Das funktioniert so:/proc/meminfo
).Einzelheiten:
Eine Rezeptdatei kann folgendermaßen aussehen:
Der Algorithmus zur Berechnung der Größen:
Für mehr sehen Sie:
partman-auto-recipe.txt Way Back - Maschine
http://dev.blankonlinux.or.id/browser/pattimura/ubiquity/di/source/partman-auto/lib/recipes.sh?rev=pattimura%2Cubiquity%2C261DEAD LINKquelle
Dies wird eher technisch sein, aber es hat Spaß gemacht, es herauszufinden, und so geht es weiter ...
dphys-swapfile
und hier ist der Quellcode . Optionsetup
wird verwendet, um es einzurichten:dphys-swapfile
befindet sich eine Einstellungconf_swapsize
für eine vordefinierte Größe (in Natty ist diese leer):und eine Einstellung für eine
swapfactor
...Die tatsächliche Größe wird etwas weiter unten berechnet:
Wie Sie sehen können, hängt die Art und Weise, wie sie in diesem Paket berechnet wird, von der Größe von ab
/proc/kcore
, wird dann durch 1048576, +1 geteilt, um es aufzurunden, und wird dann mit dem Swap-Faktor multipliziert. Von meiner Maschine:Die Standardeinstellung für dieses System wäre 1065349120/1048576 = 1015 + 1 = 1016 * 2 = 2032 MByte.
quelle