Minha área de trabalho geralmente é muito responsiva, mesmo sob carga pesada. Mas quando eu copio arquivos para uma unidade USB, ela sempre trava depois de algum tempo. Por "travar", quero dizer:
- Mover o foco de uma janela para outra pode levar de 10 a 20s
- A mudança de desktops pode levar de 10 a 20s
- Os vídeos não são mais atualizados (no YouTube, o áudio continua sendo reproduzido, apenas o vídeo congela)
A carga do sistema não é excepcionalmente alta quando isso acontece. Às vezes, vejo muito branco no xosview indicando que o kernel está ocupado em algum lugar.
À primeira vista, parece que copiar arquivos para a unidade USB interferiria de alguma forma no compiz, mas não consigo imaginar qual poderia ser a conexão.
Aqui está a saída de htop
:
Aqui está a saída iostat -c -z -t -x -d 1
durante um travamento de 2 minutos:
19.07.2012 20:38:22
avg-cpu: %user %nice %system %iowait %steal %idle
1,27 0,00 0,38 37,52 0,00 60,84
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sdg 0,00 2,00 0,00 216,00 0,00 109248,00 1011,56 247,75 677,69 0,00 677,69 4,63 100,00
Como você pode ver, apenas o disco rígido externo está ativo. Aqui está o log completo: http://pastebin.com/YNWTAkh4
O travamento começou às 20:38:01 e terminou às 20:40:19.
Informação do software:
- openSUSE 12.1
- KDE 4.7.x
- Sistemas de arquivos: reiserfs e btrfs no meu disco rígido interno, btrfs na unidade USB
sync
para ver que efeito (se houver) isso tem?grep name /proc/cpuinfo
sua pergunta, por favor.cp
na linha de comando para excluir possíveis erros de golfinhos.rsync
na linha de comando.iostat -c -z -d 1
Respostas:
Meu primeiro palpite foi
btrfs
que, às vezes, os processos de E / S desse sistema de arquivos assumem o controle. Mas isso não explica por que o X trava.Observando as interrupções, vejo o seguinte:
Bem, duh. O driver USB usa o mesmo IRQ da placa de vídeo e é o primeiro da cadeia. Se ele travar (porque o sistema de arquivos faz algo caro), a placa gráfica passa fome (e a rede também).
fonte
Eu tinha visto problemas semelhantes com o kernel do linux-3.1 do openSUSE 12.1 e descobri que desabilitar páginas enormes transparentes ajudava:
O problema subjacente é que, se um aplicativo alocar 4 MB ou mais, o kernel tentará fornecer uma página enorme, para a qual precisa de toda uma RAM contígua de 4 MB. Agora, se houver muitas páginas sujas por aí, que ainda precisem ser gravadas em um dispositivo USB lento, ele aguardará a conclusão do IO antes de continuar com a alocação de memória.
fonte
Como mencionado, isso provavelmente tem a ver com a configuração de páginas enormes do kernel. Conheço várias pessoas com esse problema. Você pode encontrar várias documentações sobre isso na web, por exemplo
Corrigi completamente o problema na minha instalação, fazendo o seguinte. Observe o YMMV, nem todas as correções abaixo podem ser necessárias e talvez não sejam suficientes. Eu posso ter esquecido algo para ser honesto. De qualquer forma, essa é a minha configuração e funciona.
echo madvise > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fonte
Mude o cabo. Remova a oxidação da porta / cabos USB.
fonte