Apuesto a que el sistema en realidad no se "congeló" (en el sentido de que el núcleo se colgó), sino que simplemente no respondió. Lo más probable es que se intercambiara muy duro, lo que provocó que el rendimiento interactivo y el rendimiento del sistema cayeran como una piedra.
Usted podría desactivar el intercambio, sino que simplemente cambia el problema del bajo rendimiento de los procesos de OOM-muerto (y toda la diversión que las causas), junto con una disminución del rendimiento debido a la caché de disco menos disponibles.
Alternativamente, puede usar los límites de recursos por proceso (comúnmente conocidos como rlimit
y / o ulimit
) para eliminar la posibilidad de que un solo proceso tome una cantidad ridícula de memoria y cause un intercambio, pero eso simplemente lo empuja a un territorio entretenido con procesos que mueren en momentos incómodos porque querían un poco más de memoria de la que el sistema estaba dispuesto a darles.
Si sabía que iba a hacer algo que probablemente causaría un uso masivo de la memoria, probablemente podría escribir un programa contenedor que hiciera un mlockall()
y luego ejecutara su shell; eso lo mantendría en la memoria, y sería lo más parecido a "mantener un núcleo receptivo" que probablemente obtendrá (porque no es que la CPU esté siendo sobreutilizada, ese es el problema).
Personalmente, me suscribo al método de control de recursos "no hagas tonterías". Si tienes root, puedes hacer todo tipo de daños a un sistema, y hacer cualquier cosa de la que no conozcas los resultados probables es un negocio arriesgado.