Erro “Out of Memory” ao copiar arquivos grandes com o pcmanfm

1

Esta é uma máquina antiga rodando uma distro baseada no Debian com lxde e pcmanfm usado como gerenciador de arquivos. pcmanfm normalmente funciona muito bem, exceto quando se trata de copiar grandes arquivos muito (por exemplo, *.VOB s de um DVD descompactado). Bem, na verdade eu pensei que usaria meu swap (definido em 3.5 GB) mas infelizmente o swap sempre mostraria cerca de 12 MB . Então, é pcmanfm ignorando o arquivo de troca? Infelizmente, um dos módulos de RAM desta máquina mostrou erros e eu tive que removê-lo. Então eu estou atualmente com apenas 1 GB de RAM física :(. Ainda assim, isso não importa se a troca foi endereçada corretamente!

Exemplo de syslog :

[40398.719466] Out of memory: Kill process 21573 (compiz) score 2 or sacrifice child

Em vez disso, os processos que exigem a maioria dos recursos são mortos pelo kernel, coincidentemente dependendo do que é obtido a seguir (geralmente compiz , dbus etc.)

Existe uma maneira de "dizer" ao pcmanfm para usar o espaço de troca de qualquer maneira?

    
por syntaxerror 26.09.2013 / 14:24

2 respostas

2

Eu tentaria responder a você uma pergunta mais genérica:

Existe uma maneira de "contar" um processo para usar o espaço de troca de qualquer maneira?

O kernel do Linux fornece através da interface / proc / sys uma propriedade que define quão agressivamente as páginas de memória (anônimas apenas!) são trocadas para o disco.

A propriedade vm.swappiness é aplicada globalmente por sistema, mas não por processo. Defina este valor baixo se quiser evitar a troca o máximo possível. Se o processo do seu sistema for suspenso por muito tempo, você poderá se beneficiar com um comportamento agressivo de troca, aumentando esse valor. Esta propriedade global está disponível como /proc/sys/vm/swappiness e pode ser ajustada com a ferramenta sysctl .

Com a introdução de cgroups no kernel 2.6.24, é possível torná-lo mais granular com o subsistema memória . Vamos supor que você tenha disponível uma hierarquia de cgroups com memória subsistema anexado ( /cgroups/mem ) e um cgroup ( /cgroups/mem/your_cgroup ) com tarefas / processos definidos ( /cgroups/mem/your_cgroup/tasks ). Em seguida, você pode alterar o comportamento de swappiness para este grupo de tarefas da seguinte forma:

cd /cgroups/mem/your_cgroup
echo 90 > memory.swappiness

Como atribuir um processo a este cgroup automaticamente? Eu criaria uma regra simples no arquivo /etc/cgrules.conf

your_user:pcmanfm   memory  /your_cgroup

Este arquivo é então usado pelo daemon do mecanismo de regras cgroup ( cgred service) para a classificação automática de processos.

Para mais detalhes, consulte a documentação do cgroups do kernel Linux .

    
por 26.09.2013 / 14:57
-1

Eu tive o mesmo problema com o Lubuntu 14.04 quando iniciei meu computador (um laptop) com um segundo monitor.

Uma solução alternativa é desativar o segundo monitor automaticamente quando o computador é iniciado (em um arquivo de auto-inicialização em /home/user/.config/lxsession/Lubuntu) - usei xrandr --output VGA1 --off desde que eu estava usando um monitor VGA para o meu segundo monitor.

Em seguida, executei um arquivo da área de trabalho e, em seguida, chamei um arquivo bash (talvez exagero) que define xrandr da maneira que desejo.

Eu acho que a chave é que você tem que ir para um monitor (seu monitor principal) e, em seguida, iniciar o segundo monitor. Quando eu faço desta forma, ele usa o arquivo de imagem da área de trabalho corretamente, e meu pcmanfm cpu% nunca fica alto.

Phil

    
por 30.08.2014 / 07:35