¿Qué tan grande debe ser la partición de intercambio?

10

Durante algunos años, he leído que es una buena idea crear una partición de intercambio que tenga el doble espacio de mi RAM. ¿todavía se aplica hoy? o esto ya no es necesario?

Tengo un servidor con 8 GiB de RAM y necesito crear una partición de intercambio, y me preguntaba si 16 GiB era demasiado.

cd1
fuente

Respuestas:

11

En sistemas grandes, 8 GB de RAM física, generalmente asignamos 2 GB de intercambio. Estos son servidores de bases de datos cargados que ejecutan Oracle o PostgreSQL. Durante años, nunca he visto un golpe de intercambio incluso bajo una carga pesada. La carga pesada es de aproximadamente 100 a 150 usuarios que realizan alrededor de 10,000 lecturas SQL, y quizás 2,500 escrituras por minuto.

También ajustamos el nivel de intercambio para desalentar el intercambio y desactivamos los procesos innecesarios que sabemos que no necesitamos ejecutar. (Compilaciones de Linux personalizadas)

Como Eddie, dice anteriormente, 1x RAM física es una buena regla general para cualquier cosa por debajo de 4GB. Realizo compilaciones personalizadas de Linux para una gran empresa Fortune-500 y estas son las cosas que hacemos habitualmente, y no hemos tenido ningún problema en los últimos 5 años más o menos que he estado consultando para ellos.

En sistemas más grandes: Linux de 64 bits con 32 GB y 64 GB de RAM, estos son nuestros servidores de bases de datos Oracle, y generalmente mantenemos 2 GB de intercambio para cosas como Eddie señala arriba: los procesos inactivos se moverán para cambiar según la configuración de intercambio.

Kilo
fuente
5

Una pregunta aparentemente eterna. La buena gente de SlashDot discutió esto hace un tiempo. Comprueba lo que tienen que decir:

  • El espacio en disco no es un problema con los discos duros modernos, 16 GB sigue siendo una cantidad trivial para las unidades de TB modernas.
  • Sin embargo, un espacio de intercambio significativo puede ser un problema en caso de mala gestión de la memoria:

Si veo una película de 4 GB durante un período de 2 horas, muchos administradores de memoria decidirán que intentar almacenar en caché todos esos datos podría ser algo bueno. A mitad de la película, pensará que todos esos otros programas en ejecución no se han utilizado durante una hora y se pueden intercambiar de forma segura a favor de almacenar en caché más de ese archivo de 4 GB. El resultado final es que la mitad de sus programas se intercambian después de ver una película, lo que da como resultado un sistema lento que destruye todo el archivo de intercambio.

  • Al final, la decisión correcta debe provenir de los requisitos de memoria, no de fórmulas aproximadas:

Si tiene [suficiente RAM para ejecutar los programas que desea usar a diario], entonces no hay razón para usar swap.

KPWINC
fuente
3

Vea la respuesta ¿Cuánto espacio SWAP en un sistema de memoria alta? para alguna orientación, aunque su pregunta es más general. Las opiniones varían ampliamente sobre esto, pero en general las personas con 1 GiB de RAM o más parecen ejecutarse sin intercambio por completo, o con 1xmemory como intercambio.

Incluso si no planea usar tanta RAM que obligará a que ocurra el intercambio, hay algo de valor en tener al menos 1xmemory como intercambio: permite que el sistema operativo intercambie algunas cosas que no se espera que se usen inmediatamente para que pueda utilizar esa memoria para discos o memorias intermedias de E / S, por ejemplo.

Eddie
fuente
3

Si espera que su sistema pueda hibernar y luego reanudar con éxito :-), probablemente sea mejor asignar más espacio para la partición de intercambio que la cantidad de RAM física

dmityugov
fuente
3

Mi proveedor de VPS ni siquiera proporciona espacio de intercambio para los servidores, y el mío ha estado funcionando bien sin él.

La mayoría de los servidores que veo a diario en el trabajo también son intercambiables.

Editar

Sin embargo, si está ejecutando una JVM, asegúrese de tener al menos tanto espacio de intercambio como haya configurado -Xmxdebido a un problema conocido con la JVM.

En resumen, cuando la JVM necesita más memoria de la que está usando actualmente (pero aún no ha alcanzado su valor máximo Xmx):

  • se intercambia en el disco
  • asigna nueva memoria
  • se lee de nuevo en la RAM

Esto significa que si intercambias es menor que tu Xmx, puede fallar.

Para citar el informe de error

Lo mejor que puede hacer es aumentar el tamaño de intercambio en las máquinas que encuentran este error.

Intento ir a lo seguro cuando trabajo con JVM y configuro el intercambio a la misma memoria física.

madriguera
fuente
2

Dada la velocidad de las unidades de disco duro modernas, los grandes intercambios son solo una invitación a la paliza. Tal vez los SSD reviertan esta tendencia, pero con una velocidad de transferencia máxima de 300 MB / s para un disco, cambiar en 2-4 GB llevará un buen tiempo.

En los viejos tiempos (es decir: Linux 1.2, i386, SunOS 4.x), tenías entre 5 y 15 MB de procesos de daemon en ejecución y entre 4 y 32 MB de RAM y, por lo tanto, daemons que solo estaban bloqueados esperando I / O podría intercambiarse sin un impacto real en el rendimiento ... Y sería mejor ya que los programas de usuario podrían tener tan solo 2-3MB de RAM disponibles. El intercambio tenía mucho sentido.

Ahora, en mi entorno, la mayoría de los servidores tienen cargas de trabajo pesadas de memoria única y se puede estimar la RAM con bastante precisión ... Swap está ahí para emergencias, procesos de fuga, etc.

La excepción es para computadoras portátiles y estaciones de trabajo que podrían dormir. Muchos sistemas operativos utilizarán el área de intercambio para guardar la imagen suspendida y, en esos casos, el intercambio debe ser mayor que la memoria física. En Linux con suspend2 / tuxonice, debe tener 2xRAM en tamaño de intercambio para admitir la suspensión en disco.

Alexandre Carmel-Veilleux
fuente
En los viejos tiempos, System V 3.2 y versiones anteriores usaban un intercambio de RAM exactamente. Se rompió menos y se desperdició más, ya que no era un sistema de memoria virtual tan sofisticado como BSD.
kmarsh
2

En estos días, si está ejecutando un servidor de 32 GB o 64 GB, 4 GB de intercambio por defecto es una cantidad segura. Cualquier cosa más grande que eso es excesivo con tanta RAM física disponible.

Edward_178118
fuente
1

Idealmente, no usará el intercambio en absoluto, y la cosa de 2x RAM es realmente algo que queda de años anteriores.

Sin embargo, si le preocupa, haría algo como:

Max Memory Requirement - Physical Ram = Swap

Creo que 16GB suena demasiado grande, personalmente.

WerkkreW
fuente
1

En los viejos tiempos que quería tanto como podía obtener, el consumo de memoria en los núcleos * nix modernos es cosa del pasado. El viejo dicho era "2x tu memoria". Entre 2 GB o la cantidad de espacio que la máquina tiene en la memoria RAM hoy en día lo llevará cerca de donde necesita estar.

XTZ
fuente
1

El intercambio también se utiliza para almacenar volcados después del kernel panic. Si le interesa analizar estos volcados y no ha especificado otro destino de volcado, su intercambio debe ser al menos tan grande como su RAM.

Benoit
fuente
0

No existe un algoritmo único que le indique cuánto intercambio necesita. En la práctica, debe poner su sistema bajo la carga más grande que planea soportar, y descubrir cuántos recursos usa realmente. Configure su archivo de intercambio en consecuencia.

Para RAM física, debe colocar su sistema bajo la carga de "crucero" real que espera manejar, y comprar en consecuencia. Para los sistemas de baja latencia, no debe intercambiar nada dentro de su carga de crucero (esto no es lo mismo que no tener un intercambio asignado o incluso en uso). Puede ocurrir una pequeña cantidad de intercambio debido a las utilidades del sistema poco utilizadas que realizan el mantenimiento de la casa , pero en general deberías tener el menor intercambio posible.

Por supuesto, puede cambiar el rendimiento por un precio más bajo.

Christopher
fuente