Por que estou recebendo esse erro com frequência "Não é possível alocar memória"?

29

Estou usando o Ubuntu 12.10 com Gnome-Classic. Estou recebendo esse erro frequentemente e com quase todos os programas, grandes e pequenos. Quando tento abri-los, eles não iniciam e, em vez disso, recebo uma mensagem de erro informando Could not launch 'Program' - Failed to fork child process (Cannot allocate memory). Isso não foi um problema até nas últimas semanas.

Não é possível alocar memória

Não consigo discernir nenhuma semelhança entre os programas que causam esse erro. Parece ser mais uma questão de tempo. Depois que meu computador estiver em funcionamento por um tempo, de um dia a alguns dias, não consigo iniciar novos programas.

A única maneira que conheço de evitar esse erro é reiniciar o computador.

Por que estou recebendo esse erro e o que faço para impedir que isso aconteça?


Executei o memtest disponível no menu do GRUB e ele não reporta erros; portanto, não acho que seja uma falha de hardware.

Também executei sudo apt-get checke nenhum erro foi encontrado.

Aqui estão algumas saídas de linha de comando solicitadas:

$ 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

Esta é a saída de ps --sort -rss -eo rss,pid,command | headdepois que o erro começa 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

Com base nas sugestões dos comentários e respostas, parece possível que o problema esteja no painel do Gnome ou em seus applets. Aqui estão os applets que estou executando:

Applets de painel

Os applets são Indicator Applet 12.10.1, System Monitor 3.5.92e uma "área de notificação". e "data e hora", das quais não posso acessar o número da versão.

Aqui estão algumas saídas de linha de comando mais solicitadas:

$ 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
Questionador
fonte
Ok, anexei minha resposta abaixo com alguns "próximos passos".
Leland Kristie
Quanto tempo você correu memtest? Os erros costumam aparecer apenas nos testes posteriores.
guntbert
@ Guntbert: Deixei memtestcorrer até que houvesse uma mensagem na parte inferior da tela dizendo que todos os testes estavam completos.
Interrogante
Ok, acrescentei minha resposta abaixo mais uma vez com alguns "próximos passos".
Leland Kristie
1
@AlistairBuxton: Hmmm ... após sete horas, com o miniaplicativo de hora / data no painel, parece não haver aumento de memória. No entanto, uma coisa diferente é que não há exibição do tempo. No miniaplicativo de hora / data, há uma opção para exibir o clima, mas mesmo que eu o tenha selecionado, nenhum ícone de clima aparece. O que parece estranho e pode confirmar que o problema está especificamente relacionado às funções meteorológicas no aplicativo de hora / data / clima.
Interlocutor

Respostas:

33

Algum processo está vazando memória. Para ter uma idéia de qual processo pode ser esse, execute

ps --sort -rss -eo rss,pid,command | head
jdthood
fonte
Eu adicionei a saída ao comando na minha pergunta. Capturei essa saída depois que comecei a receber o erro.
Interlocutor
Provavelmente, o problema está em um dos indicadores menos usados ​​que você está usando, por exemplo, aquele à esquerda que se parece com uma lâmina de serra circular ou o indicador climático. Remova cada um deles para verificar se isso resolve o problema.
Jdthood
Acontece que era o indicador do tempo. Veja a resposta do próprio OP.
Jdthood
19

Sugiro que você inicie o processo de solução de problemas testando a RAM com o utilitário interno fornecido no menu de inicialização do GRUB e elimine a "RAM ruim" como fonte do problema.

Teste de memória Teste de memória

Memtest86 + Memtest86 +

Em seguida, verifique se há dependências quebradas no sistema com um sudo apt-get check e, se forem encontrados erros, execute novamente o comando como sudo apt-get check -f para tentar corrigi-las.

Se desejar, tente estas etapas e relate aqui todos os resultados.

Leland


Olá Dave,

Ok, então - descartamos o hardware como fonte do problema.

Em seguida, vamos examinar o uso da memória e as configurações do processo no seu computador; execute estes comandos a partir de um prompt de terminal:

Exibe a quantidade de memória livre e usada

livre -m

Exibir resumo do uso de swap

swapon -s

Exibir limites de recursos do processo do usuário

ulimit -a

A captura de tela abaixo é de uma instalação limpa do 10.04LTS. Os detalhes a serem observados no primeiro e no segundo itens com um círculo amarelo estão na coluna "usado", que exibe memória e espaço de troca disponível para o sistema operacional usar, ou seja, nem todos estão esgotados.

O item com um círculo amarelo inferior não exibe limites no número de processos do usuário, por exemplo, gFTP ou outro aplicativo, por exemplo, que o sistema operacional permitirá que o usuário execute.

Se desejar, tente estas etapas e relate aqui todos os resultados.

Leland

Limites de uso de memória e recursos de processo


Olá Dave,

Os resultados retornados de ps --sort -rss -eo rss, pid, command | O cabeçalho que você postou mostra o processo do painel gnomo usando aproximadamente 1,8 GB de memória, o que parece um pouco incomum - parece muita memória para o ambiente de área de trabalho.

Você pode obter uma análise detalhada da memória que o processo do painel do gnome está usando, executando os comandos circulados na captura de tela abaixo e ver para onde tudo está indo - isso pode revelar algo que se destaca.

Para comparação, o processo do painel gnome na minha máquina virtual está usando 48 MB de RAM - no entanto, a máquina 10.04 nessas capturas de tela é uma máquina virtual que estou usando apenas para testes e não na minha própria área de trabalho.

pmap do processo do painel gnome

Dado isso, apresentarei o próximo passo é isolar o problema de "algo" no ambiente de desktop do Gnome.

Para testar isso, tente instalar o espaço de trabalho de plasma do KDE, que você encontrará no Ubuntu Software Center.

ambiente de desktop kde-plasma

Depois de instalado, reinicie o computador e faça o login com uma sessão do KDE em vez do Gnome, execute seus aplicativos da melhor maneira possível (a área de trabalho é completamente diferente) para ver se o erro "Não é possível alocar memória" se repete aqui.

Para deixar claro, você poderá executar os mesmos "testes" da CLI no ambiente do KDE, como fizemos no ambiente do Gnome, e comparar os resultados ao examinar o comportamento do computador entre os dois.

No KDE, o aplicativo de console que você procura é o xterm, que pode ser encontrado na caixa de diálogo Pesquisar no menu principal.

xterm pid e pmap para plasma-desktop

Vou colocar um pouco de confiança aqui e dizer que acho que estamos coletivamente no caminho certo para isolar o problema.

Leland

Leland Kristie
fonte
Obrigado por responder. Eu executei o memtest e os apt-getcomandos que você sugeriu, e ambos não relataram erros. Atualizei minha pergunta de acordo.
Interrogante
Anexei à minha pergunta a saída dos comandos que você solicitou. A única coisa que noto é que, sob max user processesela, não diz unlimitedcomo a sua. O meu tem o número 31421.
lNTERROGANTE
1
Olá Dave, Uma breve nota para informar que poderei fazer o acompanhamento novamente no final de semana. Meu trabalho diário me mantém ocupado à noite, então pensei em simplesmente enviar uma nota de cortesia para você aqui para informar que não desapareci. Leland
Leland Kristie
Ah, a propósito, tentei alterar a configuração de processos máximos do usuário até 1024 e não consegui reproduzir o erro dessa maneira ... pensei em mencionar que tentei isso.
Leland Kristie
Instalei a área de trabalho do KDE, mas estou aguardando até começar a ver o erro novamente, e então executarei o pmapcomando e postarei essa saída aqui. Também fiz algumas pesquisas e descobri que há algumas menções a vazamentos de memória no painel do gnome, de modo que parece um provável suspeito.
Interrogante
3

Após experimentar ativá-lo e desativá-lo nos últimos dois dias, agora estou confiante em dizer que o problema foi um vazamento de memória na parte do indicador de clima do miniaplicativo de hora e data. Quando o tempo está sendo exibido, o uso da memória aumenta com o tempo. Quando o tempo não está sendo exibido, a memória não aumenta.

Acho que esse é um erro no indicador climático que deve ser relatado, mas relatar erros no Launchpad é um processo muito complicado para eu realizar.

Questionador
fonte
Abra um terminal na sua máquina e execute "apport-bug", que solicitará informações e enviará o relatório de erros para você.
Jdthood
2
@jdthood: Essa é a teoria de quão fácil deve ser. A realidade é que a primeira tela de opções não descreve o meu problema, e a opção "other" diz apenas que preciso de um nome de pacote e depois sai. Semelhante a isso .
Interlocutor
Abra o bugs.launchpad.net/ubuntu/+source/indicator-weather em um navegador, clique em "Relatar um bug" e siga as instruções. Depois de saber o número atribuído ao relatório, execute "apport-collect <bugnumber>" para fazer upload de informações relevantes sobre a máquina afetada.
Jdthood
1

Se você está tendo esse problema usando o Ruby on Rails com o Digital Ocean , é provável que tenha pouca memória RAM. Tente aumentar a RAM de 512 MB para 1 GB , que a corrigiu.

Glenn Dayton
fonte