¿Por qué aparece este error "No se puede asignar memoria" con frecuencia?

29

Estoy usando Ubuntu 12.10 con Gnome-Classic. Recibo este error con frecuencia y con casi todos los programas, grandes y pequeños. Cuando trato de abrirlos, no se inician, y en su lugar recibo un mensaje de error que dice Could not launch 'Program' - Failed to fork child process (Cannot allocate memory). Esto no fue un problema hasta dentro de las últimas semanas.

No se puede asignar memoria

No puedo discernir ninguna similitud entre los programas que causan este error. Parece ser más una cuestión de tiempo. Después de que mi computadora ha estado funcionando por un tiempo, desde un día hasta algunos días, parece que no puedo iniciar ningún programa nuevo.

La única manera que sé para evitar este error es reiniciar la computadora.

¿Por qué recibo este error y qué hago para evitar que ocurra?


Ejecuté el memtest disponible desde el menú de GRUB, y no informa de ningún error, por lo que no creo que esto sea una falla de hardware.

También corrí sudo apt-get check, y no se encontraron errores.

Aquí hay algunos resultados de línea de comando solicitados:

$ free -m
             total       used       free     shared    buffers     cached
Mem:          3945       3753        191          0        181        475
-/+ buffers/cache:       3096        848
Swap:         3813         60       3753

$ swapon -s
Filename                Type        Size    Used    Priority
/dev/sda6                               partition   3905532 61648   -1

$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31421
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 31421
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Este es el resultado de ps --sort -rss -eo rss,pid,command | headdespués de que el error comienza a aparecer:

$ ps --sort -rss -eo rss,pid,command | head
  RSS   PID COMMAND
1963400 2953 gnome-panel
155496 4029 banshee /usr/lib/banshee/Banshee.exe --redirect-log --play-enqueued
104944 15765 /opt/google/chrome/chrome --type=renderer --lang=en-US --force-fieldtrials=ForceCompositingMode/disable/GlobalSdch/global_enable_sdch/InfiniteCache/No/OmniboxDisallowInlineHQP/Standard/OmniboxHUPCreateShorterMatch/Standard/OmniboxHUPCullRedirects/Standard/OmniboxSearchSuggestTrialStarted2012Q4/2/OneClickSignIn/Standard/Prerender/PrerenderEnabled/SBInterstitial/V2/SpdyCwnd/cwndMin10/SpeculativePrefetching/Disabled/Test0PercentDefault/group_01/UMA-Dynamic-Binary-Uniformity-Trial/default/UMA-Session-Randomized-Uniformity-Trial-5-Percent/default/UMA-Uniformity-Trial-1-Percent/group_09/UMA-Uniformity-Trial-10-Percent/group_08/UMA-Uniformity-Trial-20-Percent/group_03/UMA-Uniformity-Trial-5-Percent/group_06/UMA-Uniformity-Trial-50-Percent/group_01/WarmSocketImpact/last_accessed_socket/ --enable-crash-reporter=ECE9000094D279FD3B14B35A74BF72CC,Ubuntu 12.10 --renderer-print-preview --disable-accelerated-2d-canvas --disable-accelerated-video-decode --channel=15654.5.89177240
78164 15654 /opt/google/chrome/chrome       
74912 19890 /usr/bin/python /usr/share/oneconf/oneconf-service
65476 12419 /usr/bin/perl /usr/bin/shutter
61096 19626 /usr/bin/python3.2 /usr/sbin/aptd
57832 15708 /opt/google/chrome/chrome --type=renderer --lang=en-US --force-fieldtrials=ForceCompositingMode/disable/GlobalSdch/global_enable_sdch/InfiniteCache/No/OmniboxDisallowInlineHQP/Standard/OmniboxHUPCreateShorterMatch/Standard/OmniboxHUPCullRedirects/Standard/OmniboxSearchSuggestTrialStarted2012Q4/2/OneClickSignIn/Standard/Prerender/PrerenderEnabled/SBInterstitial/V2/SpdyCwnd/cwndMin10/SpeculativePrefetching/Disabled/Test0PercentDefault/group_01/UMA-Dynamic-Binary-Uniformity-Trial/default/UMA-Session-Randomized-Uniformity-Trial-5-Percent/default/UMA-Uniformity-Trial-1-Percent/group_09/UMA-Uniformity-Trial-10-Percent/group_08/UMA-Uniformity-Trial-20-Percent/group_03/UMA-Uniformity-Trial-5-Percent/group_06/UMA-Uniformity-Trial-50-Percent/group_01/WarmSocketImpact/last_accessed_socket/ --enable-crash-reporter=ECE9000094D279FD3B14B35A74BF72CC,Ubuntu 12.10 --extension-process --renderer-print-preview --disable-accelerated-2d-canvas --disable-accelerated-video-decode --channel=15654.2.1555888673
42108  3030 /var/lib/dropbox/.dropbox-dist/dropbox

Según las sugerencias de los comentarios y las respuestas, parece posible que el problema esté en el Panel Gnome o en sus applets. Aquí están los applets que tengo en ejecución:

Applets de panel

Los applets son Indicator Applet 12.10.1, System Monitor 3.5.92y un "Área de notificación". y "fecha y hora", ninguno de los cuales puedo acceder al número de versión.

Aquí hay algunos resultados de línea de comando más solicitados:

$ df -h
Filesystem                             Size  Used Avail Use% Mounted on
/dev/sda5                               19G   12G  6.4G  64% /
udev                                   2.0G  4.0K  2.0G   1% /dev
tmpfs                                  790M  1.1M  789M   1% /run
none                                   5.0M     0  5.0M   0% /run/lock
none                                   2.0G   84K  2.0G   1% /run/shm
none                                   100M     0  100M   0% /run/user
/dev/sda7                              384G  306G   59G  84% /home
[email protected]:/home/mythbuntu  437G  360G   55G  87% /home/dave/Mythbuntu
$ sudo du -csh /var/log
15M /var/log
15M total
Preguntador
fuente
Ok, he agregado mi respuesta a continuación con algunos "próximos pasos".
Leland Kristie
¿Cuánto tiempo corriste memtest? Los errores a menudo aparecen solo en las pruebas posteriores.
Guntbert
@ Guntbert: Dejé memtestcorrer hasta que hubo un mensaje en la parte inferior de la pantalla que decía que todas las pruebas estaban completas.
Interlocutor
Ok, he agregado mi respuesta a continuación una vez más con algunos "próximos pasos".
Leland Kristie
1
@AlistairBuxton: Hmmm ... después de siete horas, con el applet de hora / fecha nuevamente en el panel, parece que no hay aumento en la memoria. Sin embargo, una cosa que es diferente es que no hay visualización del clima. En el applet de hora / fecha, hay una opción para mostrar el clima, pero aunque lo haya seleccionado, no aparece el ícono del clima. Lo que parece extraño, y podría confirmar que el problema está específicamente relacionado con las funciones del clima dentro de la aplicación de hora / fecha / clima.
Interlocutor

Respuestas:

33

Algún proceso está perdiendo memoria. Para tener una idea de qué proceso podría ser, ejecute

ps --sort -rss -eo rss,pid,command | head
jdthood
fuente
He agregado el resultado al comando a mi pregunta. Capturé esta salida después de que comencé a recibir el error.
Interlocutor
Lo más probable es que el problema radique en uno de los indicadores que usa con menos frecuencia, por ejemplo, el de la izquierda que parece una hoja de sierra circular o el indicador meteorológico. Elimine cada uno de estos a su vez para ver si eso soluciona el problema.
jdthood
Resulta que era el indicador del clima. Ver la propia respuesta del OP.
jdthood
19

Le sugiero que comience el proceso de solución de problemas probando la RAM con la utilidad incorporada provista en el menú de arranque GRUB y elimine la "RAM defectuosa" como fuente del problema.

Test de memoria Test de memoria

Memtest86 + Memtest86 +

Luego, verifique si su sistema tiene dependencias rotas desde un terminal con sudo apt-get check y, si se encuentran errores, vuelva a ejecutar el comando como sudo apt-get check -f para intentar corregirlos.

Si lo desea, intente estos pasos e informe aquí con cualquier resultado.

Leland


Hola Dave,

De acuerdo, hemos descartado el hardware como fuente del problema.

A continuación, examinemos el uso de memoria y la configuración del proceso en su computadora; ejecuta estos comandos desde un indicador de terminal:

Muestra la cantidad de memoria libre y usada

libre -m

Mostrar resumen de uso de intercambio

swapon -s

Mostrar los límites de recursos del proceso del usuario

ulimit -a

La captura de pantalla a continuación es de una instalación limpia de 10.04LTS. Los detalles a tener en cuenta del primer y segundo elemento con un círculo amarillo se encuentran en la columna "usado", que muestra la memoria y el espacio de intercambio disponible para que el sistema operativo los use, es decir, no todos están agotados.

El elemento con un círculo amarillo inferior no muestra límites en el número de procesos de usuario, es decir, gFTP u otra aplicación, por ejemplo, que el sistema operativo permitirá que el usuario ejecute.

Si lo desea, intente estos pasos e informe aquí con cualquier resultado.

Leland

Uso de memoria y límites de recursos de proceso


Hola Dave,

Los resultados devueltos por ps --sort -rss -eo rss, pid, command | el encabezado que ha publicado muestra el proceso del panel de gnomos usando aproximadamente 1.8 GB de memoria, lo que parece un poco inusual, eso parece mucha memoria para el entorno de escritorio.

Puede obtener un desglose de la memoria que está utilizando el proceso del panel de gnomos ejecutando los comandos encerrados en un círculo en la captura de pantalla a continuación y ver a dónde va todo, eso puede revelar algo que se destaca.

A modo de comparación, el proceso de panel de gnomo en mi máquina virtual está utilizando 48 MB de RAM, aunque la máquina 10.04 en estas capturas de pantalla es una máquina virtual que estoy usando solo para pruebas y no para mi propio escritorio.

pmap del proceso gnome-panel

Dado eso, presentaré el siguiente paso es aislar el problema a "algo" en el entorno de escritorio Gnome.

Para probar esto, intente instalar el espacio de trabajo de plasma de KDE que encontrará en el Centro de software de Ubuntu.

entorno de escritorio kde-plasma

Una vez que esté instalado, reinicie su computadora e inicie sesión con una sesión de KDE en lugar de Gnome, ejecute sus aplicaciones lo mejor que pueda (el escritorio es completamente diferente) para ver si el error "No se puede asignar memoria" se repite aquí.

Para ser claros, podrá ejecutar las mismas "pruebas" de CLI en un entorno de KDE que hemos realizado en el entorno de Gnome y podrá comparar resultados al examinar el comportamiento de la computadora entre los dos.

En KDE, la aplicación de consola que buscará es xterm, que puede encontrar en el cuadro de diálogo Buscar en el menú principal.

xterm pid y pmap para plasma-desktop

Voy a poner un poco de confianza aquí y decir que creo que estamos colectivamente en el camino correcto para aislar el problema.

Leland

Leland Kristie
fuente
Gracias por responder. Ejecuté tanto el memtest como los apt-getcomandos que sugirió, y ambos no informaron ningún error. He actualizado mi pregunta en consecuencia.
Interlocutor
He agregado a mi pregunta la salida de los comandos que solicitó. Lo único que noto es que debajo max user processesno dice unlimitedcomo el tuyo. El mío tiene el número 31421.
Interlocutor
1
Hola Dave, una breve nota para hacerte saber que podré contactarte nuevamente el fin de semana. Mi trabajo diario me mantiene ocupado por las tardes, así que pensé en dejarle una nota de cortesía aquí para hacerle saber que no he desaparecido. Leland
Leland Kristie
Ah, por cierto, intenté cambiar la configuración máxima de procesos de usuario hasta 1024 y no pude reproducir el error de esta manera ... pensé en mencionar que lo intenté.
Leland Kristie
He instalado el escritorio de KDE, pero actualmente estoy esperando hasta que vuelva a ver el error, y luego ejecutaré el pmapcomando y publicaré esa salida aquí. También hice una pequeña búsqueda y descubrí que hay algunas menciones de pérdidas de memoria en el panel de gnomos, por lo que parece sospechoso.
Interlocutor
3

Después de experimentar con tenerlo encendido y apagado durante los últimos días, estoy seguro de decir que el problema era una pérdida de memoria en la parte del indicador del tiempo del applet de fecha y hora. Cuando se muestra el clima, el uso de la memoria aumenta con el tiempo. Cuando el clima no se muestra, la memoria no aumenta.

Supongo que este es un error con el indicador meteorológico que se debe informar, pero informar errores en Launchpad es un proceso demasiado complicado para que lo pueda emprender.

Preguntador
fuente
Abra una terminal en su máquina y ejecute "apport-bug" que solicitará información y archivará el informe de error por usted.
jdthood
2
@jdthood: Esa es la teoría de lo fácil que debería ser. La realidad es que la primera pantalla de opciones no describe mi problema, y ​​la opción "otro" simplemente me dice que necesito un nombre de paquete y luego se cierra. Similar a esto .
Interlocutor
Abra bugs.launchpad.net/ubuntu/+source/indicator-weather en un navegador, haga clic en "Informar un error" y siga las instrucciones. Una vez que sepa el número asignado al informe, ejecute "apport-collect <bugnumber>" para cargar información relevante sobre la máquina afectada.
jdthood
1

Si tiene este problema al usar Ruby on Rails con Digital Ocean , es probable que tenga muy poca RAM. Intente subir la RAM de 512 MB a 1 GB , eso me solucionó.

Glenn Dayton
fuente