¿Cuánto cambio debo realizar para 1GB a 8TB de RAM en 14.04 o superior?

14

Voy a instalar 64 bit 14.04 en una nueva máquina con algo como 1 a quizás 128 GB de RAM e incluso más RAM más adelante. ¿Cuánto espacio debo asignar a la partición de intercambio?

Y especialmente: ¿POR QUÉ esas recomendaciones para estos números?

(Ninguna de las respuestas existentes aquí y aquí explican por qué y están un poco anticuadas si miramos 1GB o RAM y más)

Tim
fuente
66
Posible duplicado de tengo 16 GB de RAM. ¿Necesito un intercambio de 32 GB? Hay respuestas de 2017 (o actualizadas en 2017), por lo que actualmente contiene recomendaciones más recientes que esta.
Melebius
1
@Melebius: No estoy de acuerdo: aunque esta pregunta es más nueva, es más genérica que la que estás intentando duplicar. Este Q&A abarca el anterior, ¡ pero lo contrario no es cierto! ;-)
Fabby
1
@Fabby En ese caso, ¿no debería marcarse el otro como un duplicado de este?
Melebius
1
@Melebius Si los revisores pudieran usar ambas preguntas como preguntas duplicadas de otras preguntas en diferentes situaciones, entonces ambas preguntas podrían mantenerse abiertas para manejar estas diferentes situaciones, ya que ambas preguntas tienen respuestas altamente votadas.
karel
2
@Melebius Ya hemos tenido una discusión sobre este tema en meta y la comunidad decidió dejar que cada uno se mantenga como está.
Fabby

Respuestas:

30

La respuesta corta:

Establezca su archivo de intercambio en:

  • round(sqrt(RAM))si no usas hibernación
  • RAM+round(sqrt(RAM))si se hace uso de hibernación

¡Establezca su swappiness10 en un escritorio, pero no en un servidor!

La respuesta larga:

En el pasado:

La regla general en uso durante los últimos 25 años ha sido un mínimo de 1xRAM y un máximo de 2xRAM, así que eso es lo que verá citado todo el tiempo.

Ese mínimo se estableció en la edad de piedra cuando era un adolescente y los dinosaurios todavía deambulaban por la Tierra y porque la RAM era demasiado costosa y absolutamente necesitabas ese espacio de intercambio para poder lograr cualquier cosa.

El máximo se estableció en ese momento debido a los rendimientos decrecientes: es demasiado lento para tener que intercambiar tanta memoria, ya que el acceso al HDD es un factor de 1000 más lento que la RAM: ¡bueno en una emergencia, pero no es realmente bueno para el uso diario! En ese momento, cuando se quedó sin espacio de intercambio, ¡era hora de agregar más RAM! (que sigue siendo cierto hoy).

En el presente:

  1. Si no utiliza la hibernación y su memoria es superior a 1 GByte, la nueva regla general es round(sqrt(RAM))dónde RAMestá obviamente el tamaño de su RAM en GB y sqrtla raíz cuadrada. :-)

  2. Si usa la hibernación, debe poder intercambiar la cantidad total de RAM + RAM ya intercambiada al disco, por lo que la fórmula se convierte en: RAM+round(sqrt(RAM))

  3. La regla de rendimientos decrecientes aún se mantiene hoy en día para el máximo, pero a menos que pruebe su uso real, tomar 2xRAM es solo una pérdida de espacio en disco , así que no use el máximo A menos que se quede sin espacio de intercambio utilizando las otras metodologías .

Todos estos juntos le dan la siguiente tabla: (últimas 3 columnas que denotan espacio de intercambio)

    RAM   No hibernation    With Hibernation    Maximum
    1GB              1GB                 2GB        2GB
    2GB              1GB                 3GB        4GB
    3GB              2GB                 5GB        6GB
    4GB              2GB                 6GB        8GB
    5GB              2GB                 7GB       10GB
    6GB              2GB                 8GB       12GB
    8GB              3GB                11GB       16GB
   12GB              3GB                15GB       24GB
   16GB              4GB                20GB       32GB
   24GB              5GB                29GB       48GB
   32GB              6GB                38GB       64GB
   64GB              8GB                72GB      128GB
  128GB             11GB               139GB      256GB
  256GB             16GB               272GB      512GB
  512GB             23GB               535GB        1TB
    1TB             32GB              1056GB        2TB
    2TB             46GB              2094GB        4TB
    4TB             64GB              4160GB        8TB
    8TB             91GB              8283GB       16TB

Lo anterior es solo una regla general; ¡No es la ley de la gravedad!
¡ Puede romper esta regla (a diferencia de la ley de gravedad) si su caso de uso particular es diferente!

Consejo profesional: siempre asigne SWAP al comienzo de un HDD ya que los cabezales necesitan moverse menos en el interior del disco.
Sí: en los SSD, realmente ya no importa dónde ubique el área de intercambio, ya que usan túneles cuánticos en lugar de cabezas móviles y los SSD modernos usan todas sus celdas de memoria (incluso el espacio no asignado) para evitar la degradación cuántica.

Cómo probar si su uso de intercambio es diferente de la regla "genérica":

Solo ejecuta:

for szFile in /proc/*/status ; do 
  awk '/VmSwap|Name/{printf $2 "\t" $3}END{ print "" }' $szFile 
done | sort --key 2 --numeric --reverse | more

que le dará una lista de todos los programas en ejecución que se intercambian (con el que usa más espacio de intercambio en la parte superior)

Si está utilizando más de unos pocos KB: cambie el tamaño a más del mínimo, de lo contrario, no se moleste ...

Si estás en un servidor, deja de leer ahora: ¡estás listo!


Si está en un cliente de escritorio / portátil (no servidor), desea que su GUI sea lo más receptiva posible y solo se intercambie cuando realmente lo necesite . Ubuntu ha sido optimizado para intercambiarse temprano para el uso del servidor, pero en su cliente desea editar esa enorme imagen en bruto de 250 megapíxeles gimppara que sea rápida , por lo que establecer su valor swappinessen 10 evitará que el kernel se intercambie demasiado pronto, al tiempo que se asegura de que no t cambiar demasiado tarde:

Si tienes un sysctl.confarchivo,

sudo nano /etc/sysctl.conf

O

Si tiene un sysctl.ddirectorio pero no tiene un sysctl.confarchivo, cree un nuevo archivo:

sudo nano /etc/sysctl.d/35_swap.conf 

y en ambos casos agregue:

# change "swappiness" from default 60 to 10 
# (theoretically only swap when RAM usage reaches around 80 or 90 percent)
vm.swappiness = 10

al final del archivo, guarde el archivo ( Ctrl+ XY+ Enteren nano) y ejecute un:

sysctl --system

para recargar el parámetro o tomar el enfoque Window $ y reiniciar ... :-)

Fabby
fuente
1
Gracias. ¿Qué quiere decir con "rendimiento decreciente"? Si tanto la RAM como el intercambio se usan por completo, entonces es imposible hibernar incluso si el intercambio es del tamaño de 2 * RAM, ¿no es así? (Debido a que la hibernación necesitará que el tamaño del intercambio sea RAM + intercambio, ¿qué es imposible?)
Tim
Sí, pero nunca me ha sucedido esto ... (¡y soy viejo!, Por lo tanto, 2 * RAM: cuando se intercambia toda la RAM, aún puede hibernar ...
Fabby
2
"Retornos decrecientes" solo significa que el acceso al HDD es un factor de 1000 más lento que la RAM, por lo que si necesita cambiar el doble de su RAM, habrá muerto de vejez antes de que se complete ... Simplemente está ahí para hibernar cuando usted ' ya
estás
1
@Fabby Es hora de revisar el CV sobre la pregunta original nuevamente: askubuntu.com/review/close/889454 . Vea el comentario de Yufenyuy Veyeh Dider debajo de la pregunta.
karel
1
@mrkskwsnck: Es del mismo autor ... ;-)
Fabby el
6

Necesidad de intercambio

El intercambio es útil por 3 razones:

  1. Eliminando el desorden de la RAM. Del artículo en kernel.org:

    "Un número significativo de las páginas a las que hace referencia un proceso en una etapa temprana de su vida solo puede usarse para la inicialización y nunca más volver a usarse. Es mejor cambiar esas páginas y crear más memorias intermedias de disco que dejarlas residentes y sin usar".

    En otras palabras, los datos almacenados en la RAM solo pueden ser útiles cuando se ha iniciado un proceso (como el proceso de inicio), y luego simplemente residen allí en la RAM, abarrotando el espacio que se puede utilizar para mejores propósitos.

  2. Expande la cantidad de memoria que los procesos pueden usar. Esto se entiende bien. No desea que el sistema se quede sin memoria y se bloquee por falta de él. Por esta razón específica, el intercambio debe existir, sirviendo como una característica de protección.

  3. Hibernación: cuando una computadora hiberna, el contenido de la RAM va al disco.

Cantidad de intercambio

Conociendo el propósito del intercambio y dependiendo de la cantidad de RAM de su máquina, puede elegir un tamaño de intercambio que se adapte a su propósito. No hay pautas específicas, solo reglas generales que puede usar para adaptar el tamaño de su intercambio para que se ajuste a su sistema .

Por ejemplo, linux.com recomienda:

Una regla general es la siguiente: 1) para un sistema de escritorio, use un espacio de intercambio de memoria doble del sistema, ya que le permitirá ejecutar una gran cantidad de aplicaciones (muchas de las cuales pueden estar inactivas e intercambiarse fácilmente), haciendo más RAM disponible para las aplicaciones activas; 2) para un servidor, tenga una cantidad menor de intercambio disponible (digamos la mitad de la memoria física) para que tenga cierta flexibilidad para el intercambio cuando sea necesario, pero controle la cantidad de espacio de intercambio utilizado y actualice su RAM si es necesario; 3) para máquinas de escritorio más antiguas (con digamos solo 128 MB), use tanto espacio de intercambio como pueda, incluso hasta 1 GB.

Por experiencia personal, esto es lo que haría:

Considerando una máquina con 1 - 2 GB que no necesita hibernar y para uso casual, puede tener espacio de intercambio de 1GB a 2GB. Mi PC con Ubuntu 14.04 tiene 1GB de RAM y 2GB de intercambio. La cantidad de intercambio nunca cruza el límite de 800 MB, y uso mi PC solo para navegar por la web y crear secuencias de comandos.

Con una PC que tiene más de 2 GB y no necesita hibernar, puede cambiar de 512 MB a 1 GB. Tengo una computadora portátil con 15.04 que nunca hiberna y que tiene un archivo de intercambio ( no una partición ) de 512 MB. La RAM en sí es de 6 GB pero nunca cruza 2-3 GB. De nuevo: uso casual.

Cosmoscalibur y Fabby ya abordaron el intercambio en caso de que necesite hibernar, por lo que no lo abordaré demasiado. Mi humilde opinión es esta:

Si planea hibernar, deberá intercambiar el contenido de RAM, por lo tanto, necesitará al menos el mismo tamaño que su RAM.

Sergiy Kolodyazhnyy
fuente
:-) Solo noté que ahora publicaste algo. Editado y votado! (¡Como ahora es una buena respuesta después de mi edición!: D: D: D)
Fabby el