Hay un gran problema en Linux en este caso si te acercas a la condición de falta de memoria: notarás que todo tu sistema deja de responder porque comienza a intercambiarse mucho. Incluso el cursor del mouse puede volverse tan 'lento' que no puede iniciar un terminal y eliminar manualmente un proceso ofensivo de comedor de memoria. Esto se debe a la gran cantidad de operaciones de disco.
Para evitar esta situación, personalmente normalmente desactivo completamente el intercambio, por lo que el kernel de Linux siempre responde y, en el peor de los casos, el asesino de falta de memoria (OOM) matará algún proceso. La lógica de qué proceso es eliminado por OOM depende de la versión del kernel.
Entonces la respuesta es no: no habilite la asignación dinámica de intercambio. Te enfrentarás a la máquina se cuelga.
Es fácil probarlo con un programa que asigna constantemente algo de memoria en un bucle. Guarde este programa en un archivo de texto memeater.c
:
#include <stdlib.h>
int main() {
for (;;) {char* mem=malloc(4096); mem[0]=1;};
}
Luego compílalo:
$ gcc memeater.c -o memeater
y correr:
$ ./memeater
Pruébelo con swap, sin swap y con su asignación dinámica de swap.
Además, tenga en cuenta que, en la mayoría de los casos, esta condición de OOM se debe a un error en el software (pérdida de memoria) o ha hecho algo incorrecto como "cargar este archivo de 10 GB en el editor" o "ejecutar demasiados tamaños de archivos gráficos en paralelo" y hacer La conclusión: ¿Necesita intercambio o no?