El problema creo que es algo similar a este hilo.
No importa si he habilitado o deshabilitado el intercambio, cada vez que la cantidad de RAM utilizada real comienza a acercarse al máximo y casi no queda espacio para el caché de disco, el sistema deja de responder.
El disco está girando salvajemente y, a veces, después de largas esperas de 10 a 30 minutos, se descongelará, y a veces no (o se me acabó la paciencia). A veces, si actúo rápidamente, puedo abrir lentamente la consola y eliminar algunas de las aplicaciones que comen ram, como el navegador, y el sistema se descongela casi al instante.
Debido a este problema, casi nunca veo nada en el intercambio, solo a veces hay algunos MB allí, y poco después aparece este problema. Mi conjetura no tan educada sería que está conectado de alguna manera a que la memoria caché del disco es demasiado codiciosa o que la administración de memoria es demasiado indulgente, por lo que cuando se necesita la memoria no se libera lo suficientemente rápido y priva al sistema de hambre.
El problema se puede lograr realmente rápido si se trabaja con archivos de lagrge (500 MB +) que se cargan en la memoria caché del disco y, aparentemente, el sistema no puede descargarlos lo suficientemente rápido.
Cualquier ayuda o ideas serán muy apreciadas.
Por ahora tengo que vivir con miedo constante, cuando hacer algo la computadora puede congelarse y generalmente tengo que reiniciarlo, si realmente se está quedando sin RAM, me gustaría mucho más simplemente matar algunas de las aplicaciones de espacio de usuario, como broser ( preferiblemente si de alguna manera pudiera marcar cuál matar primero)
Aunque el misterio es por qué el intercambio no me salva en esta situación.
ACTUALIZACIÓN: No se colgó durante algún tiempo, pero ahora tengo varias ocurrencias nuevamente. Ahora mantengo el monitor de memoria ram en mi pantalla en todo momento y cuando se produjo el bloqueo, todavía mostraba ~ 30% libre (probablemente usado por la caché de disco). Síntomas adicionales: si en el momento que estoy viendo el video (reproductor VLC) el sonido se detiene primero, después de unos segundos la imagen se detiene. Si bien el sonido se detuvo, todavía tengo algo de control sobre la PC, pero cuando la imagen se detiene, ya ni siquiera puedo mover el mouse, así que lo reinicié después de esperar un poco. Por cierto, esto no sucedió cuando comencé a ver el video, pero en algún momento en (20 minutos) y no hice nada más activamente en ese momento, a pesar de que el navegador y la sobre escritura estaban abiertos en la segunda pantalla todo el tiempo. Básicamente algo simplemente decide suceder en un punto y bloquea el sistema.
Según lo solicitado en los comentarios, ejecuté dmesg justo después del bloqueo. No noté nada extraño, pero no sabía qué buscar, así que aquí está: https://docs.google.com/document/d/1iQih0Ee2DwsGd3VuQZu0bPbg0JGjSOCRZhu0B05CMYs/edit?hl=en_US&authkey=CPzF7bc
Respuestas:
Para solucionar este problema, descubrí que necesita establecer la siguiente configuración en algo alrededor del 5% -6% de su RAM física total, dividida por la cantidad de núcleos en la computadora:
Tenga en cuenta que esta es una configuración por núcleo, por lo que si tengo 2 GB de RAM y dos núcleos, calculé el 6% de solo 1 GB y agregué un poco más solo para estar seguro.
Esto obliga a la computadora a tratar de mantener esta cantidad de RAM libre y, al hacerlo, limita la capacidad de almacenar en caché los archivos de disco. Por supuesto, todavía intenta almacenarlos en caché e intercambiarlos de inmediato, por lo que probablemente también debería limitar su intercambio:
(100 = intercambio tan a menudo como sea posible, 0 = intercambio solo en caso de necesidad total)
El resultado es que Linux ya no decide cargar aleatoriamente un archivo de película completo de aproximadamente 1 GB en RAM mientras lo mira y mata la máquina al hacerlo.
Ahora hay suficiente espacio reservado para evitar la falta de memoria, lo que aparentemente fue el problema (ya que no hay más bloqueos como antes).
Después de probar durante un día: los bloqueos se han ido, a veces hay ralentizaciones menores, porque las cosas se almacenan en caché con más frecuencia, pero puedo vivir con eso si no tengo que reiniciar la computadora cada pocas horas.
La lección aquí es: la administración de memoria predeterminada es solo uno de los casos de uso y no siempre es la mejor, aunque algunas personas intentan sugerir lo contrario: ubuntu de entretenimiento en el hogar debe configurarse de manera diferente al servidor.
Probablemente desee hacer que estas configuraciones sean permanentes agregándolas a su
/etc/sysctl.conf
estilo de esta manera:fuente
vm.swappiness
supongo que la configuración no hará nada en ese caso.vm.min_free_kbytes
hace. Actúa como un bloque de páginas reservadas para facilitar las__GFP_WAIT
asignaciones atómicas (es decir, rellenar o eliminar / no ) cuando se encuentra bajo una alta contención de memoria del sistema. De hecho, podría tener sentido plantearlo aquí (ya que probablemente estas paradas están relacionadas con la contención de la memoria del sistema), pero ciertamente no sería por la razón descrita en esta respuesta.Esto me sucedió en una nueva instalación de Ubuntu 14.04.
En mi caso, no tenía nada que ver con los problemas de sysctl mencionados.
En cambio, el problema era que el UUID de la partición de intercambio era diferente durante la instalación que después de la instalación. Por lo tanto, mi intercambio nunca estuvo habilitado y mi máquina se bloqueó después de unas horas de uso.
La solución fue verificar el UUID actual de la partición de intercambio con
y luego
sudo nano /etc/fstab
reemplazar el valor de UUID del intercambio incorrecto con el reportado por blkid.Un simple reinicio para afectar los cambios, y listo.
fuente
Sé que esta pregunta es antigua, pero tuve este problema en Ubuntu (Chrubuntu) 14.04 en un Chromebook Acer C720. Intenté la solución de Krišjānis Nesenbergs, y funcionó un poco, pero a veces todavía fallaba.
Finalmente encontré una solución que funcionó instalando zram en lugar de usar el intercambio físico en el SSD. Para instalarlo, simplemente seguí las instrucciones aquí , así:
Luego pude configurar el tamaño del intercambio zram modificando
/etc/init/zram-config.conf
en la línea 21.Reemplacé el 2 con un 1 para hacer que el tamaño de zram sea del mismo tamaño que la cantidad de ram que tengo. Desde entonces, no he tenido más bloqueos o falta de respuesta del sistema.
fuente
zram
es una opción viable solo si no puede instalar más RAM. Si el sistema es demasiado lento al cambiar a SSD y se queda sin RAM sin intercambio, entonceszram
puede ayudar un poco hasta que intente hacer un poco más y el resultado sea el mismo que sin RAM sin intercambio.¡Nada funcionó para mí!
Entonces escribí un script para monitorear el uso de la memoria. Primero intentará borrar la memoria caché de RAM si el consumo de memoria aumenta un umbral. Puede configurar este umbral en el script. Si el consumo de memoria no llega por debajo del umbral, incluso entonces, comenzará a eliminar procesos por uno en orden decreciente de consumo de memoria hasta que el consumo de memoria esté por debajo del umbral. Lo configuré en 96% por defecto. Puede configurarlo cambiando el valor de la variable RAM_USAGE_THRESHOLD en el script.
Estoy de acuerdo en que matar procesos que consumen mucha memoria no es la solución perfecta, ¡pero es mejor matar UNA aplicación en lugar de perder TODO el trabajo! el script le enviará una notificación de escritorio si el uso de RAM aumenta el umbral. También le notificará si mata algún proceso.
Guarde el código en un archivo, diga save_hang.py. Ejecute el script como:
Tenga en cuenta que este script solo es compatible con Python 3 y requiere que instale el paquete tkinter. puedes instalarlo como:
Espero que esto ayude...
fuente
Supongo que ha configurado su
vm.swappiness
valor muy bajo, lo que hace que el kernel se intercambie demasiado tarde, dejando una RAM demasiado baja para que el sistema funcione.Puede mostrar su configuración de intercambio actual ejecutando:
Por defecto, esto está configurado en 60. Ubuntu Wiki recomienda configurarlo en 10, pero no dude en configurarlo en un valor más alto. Puedes cambiarlo ejecutando:
Esto lo cambiará solo para la sesión actual , para que sea persistente, debe agregarlo
vm.swappiness = 10
al/etc/sysctl.conf
archivo.Si su disco es lento, considere comprar uno nuevo.
fuente
dmesg
comando, debería ver alguna información (y el nombre del proceso + id) del proceso. Creo que sería mejor comprar un disco nuevo y más rápido. O actualice su RAM.He estado luchando con este problema durante mucho tiempo, pero ahora parece estar resuelto en mi computadora portátil.
Si ninguna de las otras respuestas funciona para usted (probé la mayoría de ellas), juegue con min_free_kbytes , para tener más espacio en la RAM cuando su computadora comience a intercambiar (justo antes de alcanzar este valor mínimo en su RAM libre).
Tengo 16 GB de RAM, pero más pronto que tarde la memoria se llenó y luego dejó de responder durante 10 a 30 minutos, hasta que algunas cosas se intercambiaron.
Al menos para mí, establecer el valor min_free_kbytes por encima de lo recomendado hace que el proceso de intercambio sea considerablemente más rápido.
Para 16 GB de RAM, intente esto:
Para establecer este valor, vea otras respuestas, o simplemente búsquelo en Google :)
fuente
Ejecuto una de mis computadoras portátiles desde una tarjeta SD de Ubuntu en vivo constantemente, con una pequeña partición de almacenamiento ext4 y un archivo de intercambio en el disco duro. Cuando se usa casi toda la RAM y el valor de intercambio es demasiado bajo (a veces prefiero mantener el disco duro completamente apagado si es posible, porque es ruidoso), el rendimiento de Linux tiende a caer por un precipicio para mí, de modo que simplemente llegar a TTY1 para matar a Firefox tarda 15 minutos.
El aumento
/proc/sys/vm/vfs_cache_pressure
del valor predeterminado de 100 a un valor de 6000 parece ayudar a prevenir esto. Sin embargo, la documentación del núcleo advierte contra hacerlo, diciendoNo estoy completamente seguro de los efectos secundarios de hacer esto, así que tendría cuidado al hacerlo.
fuente
vfs_cache_pressure
más cerca de 10 (es decir, mucho menos de 100) y una configuraciónmin_free_kbytes
más alta. Tenga en cuenta que si establecemin_free_kbytes
demasiado alto, ¡el asesino OOM de kernel matará a todos!min_free_kbytes
a 262144, y he observado que bajarvfs_cache_pressure
tiene el efecto contrario: bajarlo por debajo de 100 hace que el sistema deje de responder mucho más rápido. No estoy seguro de por qué exactamente.vfs_cache_pressure
provocará que se arrojen directorios antes del contenido del archivo en caché y, como resultado, el rendimiento general generalmente se verá afectado con valores superiores a 100. Si puede encontrar los pasos para reproducir para bloquear / bloquear el sistema, por ejemplo, Ubuntu Live CD entonces los desarrolladores del kernel pueden descubrir la causa raíz. Para mí, el bloqueo se produce sin previo aviso. Mi mejor suposición es que el núcleo se bloquea debido a OOM antes de que OOM Killer haya liberado suficiente RAM. Ahora estoy ejecutando min_free_kbytes = 100000, admin_reserve_kbytes = 250000 y user_reserve_kbytes = 500000.