El sistema se bloquea cuando se usa demasiada RAM incluso con el intercambio desactivado

El sistema se bloquea cuando se usa demasiada RAM incluso con el intercambio desactivado

Cuando ejecuto un fragmento de código Python que usa demasiada RAM, mi computadora comenzaba a funcionar tan mal que tenía que reiniciar por completo. Para solucionar este problema, desactivé el intercambio asumiendo que el asesino OOM intervendría. Sin embargo, ¡sigo teniendo exactamente los mismos síntomas! Es decir, puedo escuchar el disco duro vibrar una vez que se usa toda la RAM, la computadora se congela y tengo que reiniciar por completo.

¿Qué podría estar pasando y cómo puedo solucionarlo?

Mi sistema ejecuta Ubuntu 14.04.2 LTS, 3.13.0-43-generic #72-Ubuntu SMP lunes 8 de diciembre 19:35:06 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux con 8 GB de RAM.

Mi /etc/fstab muestra

# / was on /dev/sda1 during installation
UUID=80919e96-e83b-4c88-b30e-8673e1faa3b4 /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda5 during installation
#UUID=68064725-c1bb-4293-b8d1-45b2a42fb7b4 none            swap    sw              0       0

Más detalles

tail -n+1 /proc/sys/vm/overcommit_*
==> /proc/sys/vm/overcommit_memory <==
0

==> /proc/sys/vm/overcommit_ratio <==
50

cat /proc/sys/vm/oom_kill_allocating_task
0

Código de ejemplo

Lamento decir que no sé cómo hacer un ejemplo minimalista de Python que muestre este problema. Sin embargo, este es un código no minimalista que definitivamente lo hace. http://paste.ubuntu.com/11621823/. Simplemente cambie el valor de "ruta" en el código y ejecútelo. En mi sistema, consume toda la RAM y luego congela completamente el sistema.

Respuesta1

Tu problema es tuyo python codey no tiene nada que ver swap.

SwapEl sistema operativo utiliza el espacio cuando aumenta la carga en la memoria. Luego, aquellos procesos que no se utilizan actualmente se mueven al espacio de intercambio, que es una partición. De esta manera se puede liberar más memoria para el proceso que se está ejecutando actualmente. Cuando se utilizan procesos movidos a swap, se mueven del área de swap a la memoria.

De esta manera, el intercambio es útil para abordar situaciones en las que se requiere más memoria para ejecutar algo que la cantidad de memoria libre disponible.

Dado que desactiva el intercambio, esto no resolverá su problema, solo lo aumentará. La única solución que se me ocurre para su problema es optimizar su código Python para usar menos memoria o aumentar la memoria en su máquina.

También sería mejor si pudieras poner tu código aquí para que la gente pueda ayudarte a optimizarlo.

información relacionada