Minha área de trabalho geralmente responde muito bem, mesmo sob carga pesada. Mas quando copio arquivos para uma unidade USB, ele sempre trava depois de algum tempo. Por "travar", quero dizer:
- Mover o foco de uma janela para outra pode levar de 10 a 20 segundos
- A troca de desktops pode levar de 10 a 20 segundos
- 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á o resultado de iostat -c -z -t -x -d 1
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 registro completo:http://pastebin.com/YNWTAkh4
O hangar começou às 20:38:01 e terminou às 20:40:19.
Informações de software:
- openSUSE 12.1
- KDE 4.7.x
- Sistemas de arquivos: reiserfs e btrfs no meu disco rígido interno, btrfs na unidade USB
Responder1
Meu primeiro palpite foi btrfs
que os processos de E/S desse sistema de arquivos às vezes assumem o controle. Mas isso não explicaria por que X trava.
Olhando para as interrupções, vejo o seguinte:
# cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
0: 179 0 0 0 0 0 0 0 IR-IO-APIC-edge timer
1: 6 0 0 0 0 0 0 0 IR-IO-APIC-edge i8042
8: 1 0 0 0 0 0 0 0 IR-IO-APIC-edge rtc0
9: 0 0 0 0 0 0 0 0 IR-IO-APIC-fasteoi acpi
12: 10 0 0 0 0 0 0 0 IR-IO-APIC-edge i8042
16: 3306384 0 0 0 0 0 0 0 IR-IO-APIC-fasteoi ehci_hcd:usb1, nvidia, mei, eth1
Bem, duh. O driver USB usa o mesmo IRQ da placa gráfica e é o primeiro da cadeia. Se travar (porque o sistema de arquivos faz algo caro), a placa gráfica morre de fome (e a rede também).
Responder2
Eu já tinha visto problemas semelhantes comopenSUSEKernel Linux-3.1 do 12.1 e descobri que desabilitar páginas enormes e transparentes ajudou:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
O problema subjacente é que se um aplicativo alocar 4 MB ou mais, o kernel tentará fornecer a ele uma página enorme, para a qual precisará de 4 MB de RAM contíguos. Agora, se houver muitas páginas sujas por aí, que ainda precisam ser gravadas em um dispositivo USB lento, ele espera que esse IO termine antes de continuar com a alocação de memória.
Responder3
Como mencionado, isso provavelmente tem a ver com a configuração do kernel Hugepages. Conheço várias pessoas com esse problema. Você pode encontrar diversas documentações sobre isso na web, por exemplo
- https://bbs.archlinux.org/viewtopic.php?id=112846&p=1
- http://lwn.net/Articles/467328/
- http://forum.manjaro.org/index.php?topic=2062.0
- Desempenho lento ao copiar arquivos de e para dispositivos USB
Resolvi completamente o problema em minha configuração fazendo o seguinte. Observe YMMV, nem todas as correções abaixo podem ser necessárias e talvez não sejam suficientes. Posso ter esquecido algo para ser honesto. De qualquer forma, essa é a minha configuração e funciona.
- Use o kernel linux-ck
echo madvise > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
Responder4
Troque o cabo. Remova a oxidação das portas/cabos USB.