¿Cómo calcula el instalador qué tamaño de partición de intercambio crear? Presumiblemente se basa en el tamaño de RAM instalado, pero ¿eso depende de la cantidad de RAM?
No hay un valor predeterminado, depende de la cantidad de RAM que tenga.
Uri Herrera
1
Bueno, sí, pero estaba buscando un poco más de detalle que "depende". ¿Es siempre un múltiplo del tamaño de RAM o depende de la cantidad de RAM que hay? Por ejemplo, los tamaños de RAM grandes nunca necesitarían más que suficiente para permitir la hibernación, pero los tamaños de RAM muy pequeños podrían beneficiarse de un intercambio considerablemente mayor que 1: 1.
Seret
Respuestas:
5
En realidad, no hay ningún dphys-swapfileprograma en un CD de instalación de Ubuntu predeterminado y no se usa para calcular el tamaño de intercambio .
Lo que sucede es que el ubiquityinstalador usa los partman-autoscripts y los archivos de configuración (llamados recetas ) para determinar los tamaños de todas las particiones. Funciona así:
Partman encuentra el archivo de receta correcto según el tipo de computadora y la opción que el usuario haya elegido.
Allí encuentra el tamaño mínimo y máximo de la partición y su prioridad. Para el intercambio puede ser 96 (min - en MB) 512 (prioridad) 300% (max).
Luego obtiene el tamaño de RAM (vía /proc/meminfo).
Utiliza su propio algoritmo para calcular los tamaños.
Interesante debate: ¿una mejor referencia que un extraño sitio web de Debian?
enzotib
Bueno, eso también lo encontré cuando lo busqué, pero el paquete tiene una "Advertencia: este paquete está destinado para el uso en la construcción de imágenes de Debian-Installer únicamente. No lo instale en un sistema Ubuntu normal". Supuse que esto no se usaba, así que busqué y encontré el código para dphys-swapfile>: - D Hmm realmente interesante.
Rinzwind
@enzotib: ¿por qué extraño?
organizar el
@arrange: extraño porque no es un sitio oficial de ubuntu, y también como sitio de debian no parece oficial.
enzotib
Encontré 2 métodos más para calcular el tamaño de intercambio D: este método usa grep ^ Mem: / proc / meminfo o si es 0 grep ^ MemTotal: / proc / meminfo y luego se multiplica por 2 (predeterminado) o 3 (la mayoría están configurados en 300%) con un mínimo por arquitectura. Un mipsel-sb1-bcm91250a usa un 512 fijo. I386-efi usa 200%.
Rinzwind
19
Esto va a ser bastante técnico, pero fue divertido descubrirlo, así que aquí va ...
Encontré un paquete dphys-swapfiley aquí está el código fuente . La opción setupse usa para configurarlo:
setup: le dice a dphys-swapfile que calcule el tamaño óptimo del archivo de intercambio y
(re) generar un archivo de intercambio apropiado. Predeterminado 2 veces el tamaño de RAM.
Esto se puede llamar en el momento del arranque, por lo que el archivo siempre permanece
tamaño correcto para la RAM actual, o ejecutar a mano siempre que el tamaño de RAM tenga
cambiado
Dentro dphys-swapfilehay una configuración conf_swapsizepara un tamaño predefinido (en Natty esto está vacío):
tamaño que queremos forzar a que sea, por defecto (vacío) da 2 * RAM
CONF_SWAPSIZE =
y un escenario para swapfactor...
this is what we want, 2 times RAM size
SWAPFACTOR=2
El tamaño real se calcula un poco más adelante:
if ["$ {CONF_SWAPSIZE}" = ""]; luego
# calcular tamaño óptimo automático
echo -n "tamaño informático"
# este parece ser el más cercano al tamaño de RAM física, carece de aproximadamente 60k
KCORESIZE = "` ls -l / proc / kcore | awk '{print $ 5}' `"
# hacer MBytes que redondeado hacia abajo será exactamente 1 muy pocos, así que agregue 1
MEMSIZE = "` expr "$ {KCORESIZE}" / 1048576 + 1` "
# predeterminado, sin sobrescritura del archivo de configuración, intercambio = 2 * RAM
CONF_SWAPSIZE = "` expr "$ {MEMSIZE}" '*' "$ {SWAPFACTOR}" `"
fi
Como puede ver, la forma en que lo calculan en este paquete depende del tamaño de /proc/kcore, luego se divide por 1048576, +1 para redondearlo y luego se multiplica por factor de intercambio. De mi maquina:
Entonces, el valor predeterminado para este sistema sería 1065349120/1048576 = 1015 + 1 = 1016 * 2 = 2032 MBytes.
Respuestas:
En realidad, no hay ningún
dphys-swapfile
programa en un CD de instalación de Ubuntu predeterminado y no se usa para calcular el tamaño de intercambio .Lo que sucede es que el
ubiquity
instalador usa lospartman-auto
scripts y los archivos de configuración (llamados recetas ) para determinar los tamaños de todas las particiones. Funciona así:/proc/meminfo
).Detalles:
Un archivo de receta puede verse así:
El algoritmo para calcular los tamaños:
Para más ver:
partman-auto -cipe.txt Way Back Machine
http://dev.blankonlinux.or.id/browser/pattimura/ubiquity/di/source/partman-auto/lib/recipes.sh?rev=pattimura%2Cubiquity%2C261ENAD LINKfuente
Esto va a ser bastante técnico, pero fue divertido descubrirlo, así que aquí va ...
dphys-swapfile
y aquí está el código fuente . La opciónsetup
se usa para configurarlo:dphys-swapfile
hay una configuraciónconf_swapsize
para un tamaño predefinido (en Natty esto está vacío):y un escenario para
swapfactor
...El tamaño real se calcula un poco más adelante:
Como puede ver, la forma en que lo calculan en este paquete depende del tamaño de
/proc/kcore
, luego se divide por 1048576, +1 para redondearlo y luego se multiplica por factor de intercambio. De mi maquina:Entonces, el valor predeterminado para este sistema sería 1065349120/1048576 = 1015 + 1 = 1016 * 2 = 2032 MBytes.
fuente