Como posso evitar que [flush-8: 16] e [jbd2 / sdb2-8] causem falta de resposta da GUI? [fechadas]

11

Aproximadamente duas vezes por semana, toda a interface gráfica ficará bloqueada por cerca de 10 a 20 segundos sem aviso enquanto eu estiver fazendo tarefas simples, como navegar na Web ou escrever um papel. Quando isso acontece, os elementos GUI não respondem à entrada do mouse ou do teclado, e o miniaplicativo Monitor do sistema exibe 100% de uso do processador IOWait.

Hoje, finalmente achei que o Terminal GNOME já estava aberto quando o problema começou. Apesar de outros aplicativos, como o Google Chrome, o Firefox, o GNOME Do e o Painel do GNOME não responderem, o terminal era utilizável. Corri iotop e observei que os comandos chamados [flush-8:16] e [jbd2/sdb2-8] estavam alternadamente usando 99,99% IO.

O que são estes, e como posso evitar que eles causem falta de resposta da GUI?

Detalhes

$ mount | grep ^/dev
/dev/sda1 on / type ext4 (rw,noatime,discard,errors=remount-ro,commit=0)
/dev/sdb2 on /home type ext4 (rw,commit=0)
$ cat /proc/swaps 
Filename        Type        Size     Used    Priority
/dev/sdb3       partition   1052252  0       -1

/dev/sda é uma OCZ-VERTEX2 e /dev/sdb é um WD10EARS . Aqui está dumpe2fs /dev/sdb2 e smartctl /dev/sdb --all .

Não vejo nada incomum em dmesg ou /var/log/syslog .

    
por ændrük 13.03.2011 / 16:16

1 resposta

4

Eu arriscario uma teoria:

/dev/sdb1 talvez seja espaço de troca?

Se algo central na interface gráfica tiver sido transferido para o disco, a GUI não poderá continuar até receber esses dados. Se o disco de troca estiver em repouso, significa que ele está preso até que o disco responda.

Acho que isso daria um travamento temporário, e o período de 10 a 20 segundos se ajusta ao tempo que um disco para dormir demora para responder. O terminal é presumivelmente ainda responsivo porque tudo o que precisa já está na RAM.

Algumas ferramentas de terminal para explorar a teoria:

  • hdparm -C /dev/sdX informa se um disco está em repouso:

    $ sudo hdparm -C /dev/sdb
    /dev/sdb:
    drive state is:  standby
    

    active/idle significa que está sendo executado. No estado standby ou sleeping , ele parou de girar e levará algum tempo para iniciar novamente. Veja man hdparm .

  • free -m diz quanto espaço de troca é usado:

    $ free -m     
                 total       used       free     [...]
    Mem:          5973       4928       1045     [...]
    -/+ buffers/cache:       1091       4882
    Swap:         6234          0       6234
    

    "Trocar:" é a linha relevante, neste exemplo 6.2 GB de swap está disponível e nada é usado.

Se esse é o problema, você pode mover swap para sda ou desativar spindowns para sdb.

    
por j-g-faustus 13.03.2011 / 22:56