Operações de disco congelam o Debian

12

Acabei de instalar o teste Debian na minha nova área de trabalho e não estou muito satisfeito com o desempenho - quando executo uma operação intensiva em disco, por exemplo, atualizar pacotes no sistema, tudo parece congelar, por exemplo, alterar as guias no Iceweasel leva 3 segundos. Eu corro o Debian no meu notebook ultraportátil Thinkpad X60 de 3 anos e não tenho esses problemas. (cada parâmetro do laptop é muito pior que o desktop).

Estou usando o kernel e scripts padrão do pacote.

eu corro

hdparm -t /dev/sda1

E consegui 96GB / s, o que é esperado. O que mais posso tentar para que funcione melhor?

EDIT :

grzes:/home/ga# hdparm -i /dev/sda

/dev/sda:

 Model=WDC WD15EARS-00Z5B1, FwRev=80.00A80, SerialNo=WD-WMAVU1362357
 Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=50
 BuffType=unknown, BuffSize=unknown, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=2930277168
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio3 pio4
 DMA modes:  mdma0 mdma1 mdma2
 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6
 AdvancedPM=no WriteCache=enabled
 Drive conforms to: Unspecified:  ATA/ATAPI-1,2,3,4,5,6,7

 * signifies the current active mode

EDIT2 : Até minha esposa disse "neste computador novo, não posso fazer nada quando copio as fotos da câmera e isso é muito pior do que no antigo". Então deve ser sério.

EDIT3 : atualizado para 2.6.32, mas ainda não há melhorias

EDIT4 : Esqueci de mencionar que o novo disco é ext4, o antigo era ext3.

EDIT5 : Ainda não resolvido. Eu tenho uma placa P43 ASUS P5QL-E. Linhas do dmesg que parecem relevantes:

[    0.370850] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)                              
[    0.370852] io scheduler noop registered                                                                      
[    0.370853] io scheduler anticipatory registered                                                              
[    0.370854] io scheduler deadline registered                                                                  
[    0.370876] io scheduler cfq registered (default)
...
[    0.908233] ata_piix 0000:00:1f.2: version 2.13                                                               
[    0.908243] ata_piix 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19                                 
[    0.908246] ata_piix 0000:00:1f.2: MAP [ P0 P2 P1 P3 ]                                                        
[    0.908275] ata_piix 0000:00:1f.2: setting latency timer to 64                                                
[    0.908316] scsi0 : ata_piix                                                                                  
[    0.908374] scsi1 : ata_piix                                                                                  
[    0.909180] ata1: SATA max UDMA/133 cmd 0xa000 ctl 0x9c00 bmdma 0x9480 irq 19                                 
[    0.909183] ata2: SATA max UDMA/133 cmd 0x9880 ctl 0x9800 bmdma 0x9488 irq 19                                 
[    0.909199] ata_piix 0000:00:1f.5: PCI INT B -> GSI 19 (level, low) -> IRQ 19                                 
[    0.909202] ata_piix 0000:00:1f.5: MAP [ P0 -- P1 -- ]                                                        
[    0.909228] ata_piix 0000:00:1f.5: setting latency timer to 64                                                
[    0.909279] scsi2 : ata_piix                                                                                  
[    0.909326] scsi3 : ata_piix                                                                                  
[    0.910021] ata3: SATA max UDMA/133 cmd 0xb000 ctl 0xac00 bmdma 0xa480 irq 19                       
Grzenio
fonte
1
Eu também tenho o mesmo problema. Eu uso o ubuntu 9.10 de 64 bits.
Abhijeet Rastogi
1
alguma atualização para isso? ainda está com o problema? Nesse caso, você pode nos dizer qual chipset a placa-mãe está usando? algo interessante em dmesgrelação ao chipset ou unidade? se você o corrigiu de alguma forma, considere postar um artigo como resposta para informar futuros leitores.
quack quixote
@ ~ charlatão, ainda não resolvido, consulte editar.
Grzenio 14/02

Respostas:

4

Verifique o deslocamento da partição - precisa ser divisível por 4 para o EARS, pois eles têm a tecnologia 4096. Se não estiver - reparte-o novamente para obter problemas de alinhamento e desempenho (as unidades EARS desalinhadas farão muito mais gravações setoriais por operação).

Rachel
fonte
ooOOOOooo. Você pode estar no caminho certo. A saída dmesg indica que pode estar detectando a unidade como uma unidade do setor de 512 bytes: "[sda] 2930277168 blocos lógicos de 512 bytes" .. existe um "jumper XP" na unidade que definiria algum tipo de modo de compatibilidade? existe ... consulte o jumper "Advanced Format" aqui: wdc.custhelp.com/cgi-bin/wdc.cfg/php/enduser/… .. que provavelmente informa ao sistema operacional que possui setores de 512 bytes, verifique se não está conjunto.
quack quixote
obrigado pela resposta. Você poderia me dizer como verifico o deslocamento? Posso apenas mover a partição ou preciso recriá-la?
Grzenio 27/03
Existe uma maneira de verificar o deslocamento na partição? Um comando que pode ser executado?
22811 Warren P
Você pode usar gdisk para verificar deslocamentos partição - rodsbooks.com/gdisk
James Sumners
4

Eu tive um problema de congelamento semelhante ao fazer muitas E / S de disco. Durante um backup, a área de trabalho ficou congelada por alguns segundos repetidamente até que o backup foi concluído.

Não estava relacionado a nenhum alinhamento nem a qualquer ajuste do hdparm (embora eu concorde que isso ajude).

O bloqueio do sistema foi causado pelo agendador de E / S, que atrasa demais algumas E / S exigidas por aplicativos mais interativos (Firefox, KDE ou o que for). O planejador de E / S com defeito foi cfg .

Para resolver o problema, você precisa usar o planejador de E / S do prazo. Você o ativa em um disco com o seguinte comando que você pode adicionar no /etc/rc.local :

echo deadline >  /sys/block/sda/queue/scheduler

Verifique Solucionando o bloqueio do sistema Linux quando E / S de disco intensivas são executadas para obter mais informações.

ciceron
fonte
2

É um tiro no escuro, mas tive um problema como esse há um tempo atrás, e a causa acabou sendo que o kernel não suportava completamente o chipset e o DMA estava desativado. Verificar com

hdparm -i /dev/sda

se um dos modos de DMA está ativado.

(A solução nesse caso era obter um kernel mais recente.)

Peter Eisentraut
fonte
SAÍDA: - Modos DMA: mdma0 mdma1 mdma2 modos UDMA: udma0 udma1 udma2 udma3 udma4 udma5 * udma6 então, qual é o problema?
Abhijeet Rastogi
Eu tenho: Model=WDC, FwRev=80.00A80, SerialNo=WD-WMAVU1362357 Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq } RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=50 BuffType=unknown, BuffSize=0kB, MaxMultSect=16, MultSect=16 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=2930277168 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120} PIO modes: pio0 pio3 pio4 DMA modes: mdma0 mdma1 mdma2 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6 AdvancedPM=no WriteCache=enabled Drive conforms to: Unspecified: ATA/ATAPI-1,2,3,4,5,6,7
Grzenio 28/01
Nenhum modo dma parece ter uma estrela (é relevante). Isso importa? Como posso configurá-lo?
Grzenio 28/01
Também não tenho certeza se isso não é relevante apenas para dispositivos IDE, porque eu recebo: hdparm -d / dev / sda / dev / sda: HDIO_GET_DMA falhou: ioctl inadequado para o dispositivo
Grzenio
@Grzenio: o modo udma6 parece ter uma estrela, isso está incorreto? convém editar essas informações em sua postagem para poder formatá-las.
quack quixote
2

Eu encontrei problemas em que operações que executam muitas chamadas fsync (2) causam uma grande lentidão no sistema. No meu caso, estou executando com minha partição raiz contida no LVM contida no LUKS. Você está usando LVM ou LUKS?

Uma ferramenta que pode ajudar a identificar o que especificamente está mastigando seus discos (em vez de apenas "instalar pacotes") é chamada iotop. Eu sugiro executá-lo enquanto você executa uma dessas tarefas, e isso pode indicar outro processo em segundo plano que pode ser acionado ao mesmo tempo e consumir toda a sua taxa de transferência de E / S.

pioto
fonte
Olá, desculpe por uma resposta tardia: o iotop diz que [jbd2 / sda3-8] usa 80% -99% de IO, mas a leitura, gravação e troca de disco são 0,0 ao mesmo tempo. Alguma ideia?
Grzenio 20/02
Em geral, verificar se há excesso de fsync é um bom ponto para verificar. No entanto, nesse caso, o mesmo software tem um desempenho muito melhor em outro hardware (o antigo T60), portanto parece mais um problema com essa combinação específica de driver de hardware. Ainda assim, é bom ter isso em mente.
precisa saber é o seguinte
2

sudo fdisk -u / dev / sda

Isso deve lhe dar o deslocamento inicial. Eu acho que você pode criar a partição usando o fdisk -o 64 ou algo assim - eu teria que pesquisar no google para que eu faça o google no fdisk e defina manualmente o deslocamento da partição (o padrão é 63, então isso não é bom).

e sim, o disco será exibido com setores 512b, pois finge ser assim para o sistema operacional - o Vista / W7 lida com isso configurando o deslocamento correto, mas o XP e eu acho que perto de todas as distribuições linus não :( manualmente é a única maneira que parece (o meu é apenas uma unidade de armazenamento e criado em win7 / ntfs, portanto, não é problema para mim)

Edit: - Encontrei um bom post no wdc - isso deve ter você pronto e funcionando em pouco tempo :)

http://community.wdc.com/t5/Desktop/Problem-with-WD-Advanced-Format-drive-in-LINUX-WD15EARS/mp/10920#M631


fonte
Oi, eu recebi: grzes: / home / ga # fdisk -u / dev / sda O número de cilindros para este disco está definido como 182401. Não há nada de errado nisso, mas é maior que 1024 e, em determinadas configurações causar problemas com: 1) software que é executado no momento da inicialização (por exemplo, versões antigas do LILO) 2) software de inicialização e particionamento de outros sistemas operacionais (por exemplo, DOS FDISK, OS / 2 FDISK) Comando (m para obter ajuda):
Grzenio
Finalmente consegui fazê-lo, mas isso realmente não ajudou :( O problema real deve estar em outro lugar.
Grzenio
1

Apenas uma foto aleatória, o que parece estúpido, pois você usa o Debian ... mas descobri que isso ajudou alguém com o mesmo modelo de disco rígido: você tentou atualizar o BIOS?

liori
fonte
Não, não tenho. Vale a pena tentar embora provavelmente
Grzenio 10/06
1

Como regra geral, se você pode usar o hdparm no dispositivo, é a interface ATA "antiga", em comparação com a interface SATA / SCSI mais recente. Se for esse o caso, provavelmente o problema é que as operações de disco durante as interrupções não estão ativadas por padrão. Esse é um problema comum em algumas máquinas que usam a interface ATA mais antiga e prejudicará o desempenho do disco ou do sistema durante operações pesadas de E / S.

Você realmente deve tentar o seguinte:

sudo hdparm -t -T /dev/sda
sudo hdparm -a8 -c3 -u1 /dev/sda
sudo hdparm -t -T /dev/sda

Se você não vir uma melhoria no desempenho na segunda execução de tempo (o terceiro comando), então há outra coisa acontecendo.

Outro fator é esperar que o modo UDMA6 funcione em um cabo não UDMA (supondo que não seja uma interface SATA). Se você estiver usando um cabo ATA de 80 pinos, está bem; se você estiver usando uma pin de 40 pinos mais antiga, terá todo tipo de sofrimento. Se o cabo for o antigo de 40 pinos, será necessário reduzir a taxa de transferência para algo que possa ser suportado "com segurança". AVISO: o ajuste da interface IDE pode travar a unidade e / ou a interface e, se a unidade for o seu sistema de arquivos raiz, todo o sistema ficará travado!

Se você precisar diminuir a taxa de transferência para corresponder ao hardware, tente o seguinte:

sudo hdparm -t -T /dev/sda
sudo sync; sleep 3 ; sync    
sudo hdparm -d 1 -X mdma2 /dev/sda
sudo hdparm -t -T /dev/sda

Novamente, o segundo momento (terceiro comando emitido) deve mostrar uma melhoria.

Por fim, a própria unidade pode ser marginal, mas sem os relatórios SMART, você pode não perceber o problema (até que seja tarde demais). Eu realmente recomendo instalar o smartmontoolspacote para ajudá-lo, especialmente se você tiver uma unidade antiga que precisará de um pouco de TLC de vez em quando.

sudo apt-get update && apt-get install smartmontools

Se tudo mais falhar, procure /var/log/messageserros de E / S no disco.


Atualizar:

Parece que você não está sozinho. Existem quadros de mensagens em toda a rede relatando todos os tipos de mágoa com essas unidades.

Também há menção à unidade usando um tamanho de setor de 4k versus o tamanho "tradicional" de 512 bytes. Só posso imaginar que tipo de problema isso deve estar causando.

Por fim, olhando sua saída novamente, parece que o encadeamento de diário está praticamente amarrando o sistema. Um sistema de arquivos não registrado em diário pode aliviar temporariamente o problema, mas é profilático na melhor das hipóteses e não soluciona o problema na pior das hipóteses.

Avery Payne
fonte
Oi, obrigado pela sua resposta. (1) Esta é uma unidade SATA e é conectada usando um cabo SATA fino à interface SATA na placa principal. (2) Tentei o primeiro teste e o desempenho diminuiu de 90,93 MB / s para 52,50 MB / s. O desempenho de leitura raw não parece ser o problema (90MB é o que eu esperaria de esta unidade), é só que algumas operações menores congelar o sistema
Grzenio
O segundo teste também não melhorou nada. No primeiro caso e no segundo, a maioria dos parâmetros falha ao ser definida: hdparm -d 1 -X mdma2 / dev / sda / dev / sda: configuração using_dma como 1 (ativado) HDIO_SET_DMA falhou: ioctl inadequado para o dispositivo xfermode de configuração do dispositivo como 34 (modo DMA com várias palavras2) HDIO_DRIVE_CMD (setxfermode) falhou: Falha na troca inválida HDIO_GET_DMA: falha no ioctl inadequado para o dispositivo
Grzenio
Instalei o smartmontools ontem, mas não sei como usá-los. Você poderia dar um pouco mais de detalhes?
Grzenio 10/06/10
Ai. Portanto, um novo disco rígido seria uma boa ideia.
21711 Warren P
1

Isto está finalmente consertado! Como a @Rachel apontou, o problema realmente estava no alinhamento com os setores de 4kb, mas infelizmente o artigo vinculado estava incorreto :(

A maneira correta de alinhar partições está aqui: http://www.linuxconfig.org/linux-wd-ears-advanced-format

E este artigo fornece uma boa referência para que você possa verificar se a tabela de partição está correta: http://article.gmane.org/gmane.linux.utilities.util-linux-ng/2955

Em uma nota lateral, se você tiver esta unidade e usar Linux, você também deverá aumentar um dos cronômetros de inatividade, conforme descrito aqui: http://wdc.custhelp.com/cgi-bin/wdc.cfg/php/enduser/std_adp .php? p_faqid = 5357 & p_created = 1266947046 & p_sid = Os7DQL2k & p_accessibility = 0 & p_redirect = & p_srch = 1 & p_lva = & p_sp = cF9zcmNoPTEmcF9zb3J0X2J5PSZwX2dyaWRzb3J0PSZwX3Jvd19jbnQ9NTEsNTEmcF9wcm9kcz0yMjcsMjk0JnBfY2F0cz0xMzAmcF9wdj0yLjI5NCZwX2N2PTEuMTMwJnBfcGFnZT0x & p_li = & p_topview = 1

Grzenio
fonte
O segundo link não funciona em substituição?
Xliiv