linux – ¿Cómo deshabilitar completamente el intercambio?

Pregunta:

Estoy usando Debian sid, disco duro formateado con ext4, ejecutándose en linux 3.1

Recuerdo que en versiones anteriores de Linux (tal vez antes de la 3.0), si me quedo sin memoria y el intercambio no está habilitado, los programas generalmente fallarán. Esto es perfecto para mi entorno: navegación web simple sin operaciones críticas. Es decir, si accidentalmente me encuentro con un sitio web defectuoso que consume demasiada memoria, simplemente se bloquea sin que mi terminal quede inutilizable.

Pero en mi configuración actual, la computadora se bloquea con un rendimiento de E / S violento en segundo plano. iotop revela que kswapd0 es el culpable, lo que significa que se debe al intercambio. Después de usar swapon -s para determinar los intercambios que estaban habilitados, usé swapoff -a para deshabilitar todos los intercambios y los swapon -s nuevamente para confirmar que todos los intercambios estaban deshabilitados.

Luego intenté maximizar el uso de mi memoria nuevamente. Por desgracia, el comportamiento que esperaba no sucedió. En cambio, kswapd0 intenta una y otra vez intercambiar la RAM y falla porque no hay espacio de intercambio. Debido a que nunca se rinde, mi computadora está bloqueada en una congelación intensa de E / S eterna, lo que es malo para la salud de mi disco.

¿Estoy haciendo algo mal al intentar swapoff -a ? ¿Por qué el comportamiento es diferente al que solía ser (probablemente antes del 3.0)?

Respuesta:

Deshabilitar el intercambio no hará lo que desea. Aún obtendrá un rendimiento de E / S violento, pero será de páginas limpias en lugar de sucias.

Sin intercambio, el sistema comprimirá el caché de páginas limpias (sin modificar) casi a cero, porque esas son las únicas páginas que puede expulsar de la memoria física. Solo puede desalojar las páginas sucias (modificadas) de la memoria escribiéndolas para intercambiar, sin intercambio, no tiene forma de desalojar las páginas sucias.

A medida que se quede sin memoria física, cada proceso tendrá que cargar sus páginas de códigos desde el disco mientras expulsa las páginas de códigos del proceso anterior. El resultado será una paliza violenta y un trabajo excesivo realizado por el subsistema de intercambio.

Este es un caso especial de un principio muy importante: para un sistema bien diseñado, no puede hacer que funcione mejor reduciendo sus opciones. Linux es un sistema bien diseñado. Eliminar el intercambio solo le da menos opciones, por lo que no es sorprendente que se comporte peor.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım