Le operazioni del disco bloccano Debian


12

Ho appena installato i test Debian sul mio nuovo desktop e non sono molto soddisfatto delle prestazioni: quando eseguo un'operazione intensiva del disco, ad esempio pacchetti di aggiornamento nel sistema, tutto sembra bloccarsi, ad esempio cambiare scheda in Iceweasel richiede 3 secondi. Uso Debian sul mio Thinkpad X60 ultra-portatile di 3 anni e non ho questi problemi. (ogni singolo parametro del laptop è molto peggio del desktop).

Sto usando il kernel e gli script predefiniti.

io corro

hdparm -t /dev/sda1

E ho ottenuto circa 96 GB / s, che è previsto. Cos'altro posso provare per farlo funzionare meglio?

MODIFICA :

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 : Anche mia moglie ha detto "su questo nuovo computer non posso fare nulla quando copio le foto dalla fotocamera ed è molto peggio che su quello vecchio". Quindi deve essere serio.

EDIT3 : aggiornato alla 2.6.32, ma ancora nessun miglioramento

EDIT4 : ho dimenticato di dire che il nuovo disco è ext4, il vecchio era ext3.

EDIT5 : ancora non risolto. Ho una scheda P43 ASUS P5QL-E P43. Linee di dmesg che sembrano rilevanti:

[    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                       

1
Ho anche lo stesso problema. Uso Ubuntu 9.10 a 64 bit.
Abhijeet Rastogi,

1
eventuali aggiornamenti a questo? hai ancora il problema? in tal caso, puoi dirci quale chipset utilizza la scheda madre? qualcosa di interessante dmesgriguardo al chipset o all'unità? se lo hai risolto in qualche modo, considera di pubblicare un writeup come una risposta per far sapere ai futuri lettori.
Quack Quixote,

@ ~ ciarlatano, non ancora risolto, vedi modifica.
Grzenio,

Risposte:


4

Controlla l'offset per la partizione - deve essere divisibile per 4 per le orecchie poiché hanno la tecnologia 4096. In caso contrario, ripartizionarlo per ottenere problemi di allineamento e prestazioni dovrebbe andare via (le unità EARS disallineate eseguiranno molte più scritture di settore per operazione).


ooooooooo. potresti essere su qualcosa. dmesg output indica che potrebbe rilevare l'unità come unità settoriale da 512 byte: "[sda] 2930277168 blocchi logici da 512 byte" .. esiste un "jumper XP" sull'unità che imposta una sorta di modalità di compatibilità? c'è ... vedi il jumper "Advanced Format" qui: wdc.custhelp.com/cgi-bin/wdc.cfg/php/enduser/… .. che probabilmente dice al sistema operativo che ha settori a 512 byte, assicurati che non lo sia impostato.
Quack Quixote

grazie per la risposta. Potresti dirmi come posso controllare l'offset? Posso semplicemente spostare la partizione o devo ricrearla?
Grzenio,

C'è un modo per controllare l'offset sulla partizione? Un comando che potrebbe essere eseguito?
Warren P

Puoi usare gdisk per controllare gli offset delle partizioni - rodsbooks.com/gdisk
James Sumners

4

Ho avuto un simile problema di congelamento quando facevo molti IO del disco. Durante un backup il desktop si è bloccato per alcuni secondi ancora e ancora fino al termine del backup.

Non era correlato ad alcun allineamento né a nessuna sintonizzazione di hdparm (anche se concordo che aiuterà).

Il blocco del sistema è stato causato dallo scheduler IO che ritarda troppo alcuni IO richiesti da più applicazioni interattive (Firefox, KDE o altro). Lo scheduler IO difettoso era cfg .

Per risolvere il problema, è necessario utilizzare lo scheduler IO scadenza. Lo si attiva su un disco con il seguente comando che è possibile aggiungere in /etc/rc.local :

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

Controllare Risolvere il blocco del sistema Linux quando si eseguono operazioni di I / O su disco intensivo per ulteriori informazioni.


2

È un colpo al buio, ma ho avuto un problema del genere qualche tempo fa, e la causa è risultata che il kernel non supportava completamente il chipset e DMA era spento. Controllare con

hdparm -i /dev/sda

se una delle modalità DMA è abilitata.

(La soluzione in quel caso era quella di ottenere un kernel più recente.)


USCITA: - Modalità DMA: mdma0 mdma1 mdma2 Modalità UDMA: udma0 udma1 udma2 udma3 udma4 udma5 * udma6 quindi, qual è il problema ??
Abhijeet Rastogi,

Ho ottenuto: 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,

Nessuna modalità dma sembra avere una stella (è rilevante). Importa? Come posso configurarlo?
Grzenio,

Inoltre non sono sicuro che non sia rilevante solo per i dispositivi IDE, perché ottengo: hdparm -d / dev / sda / dev / sda: HDIO_GET_DMA fallito: ioctl inappropriato per il dispositivo
Grzenio

@Grzenio: la modalità udma6 sembra avere una stella, non è corretto? potresti voler modificare queste informazioni nel tuo post in modo da poterle formattare.
Quack Quixote

2

Ho riscontrato problemi in cui operazioni che eseguono molte chiamate fsync (2) causeranno un grave rallentamento del sistema. Nel mio caso, sto correndo con la mia partizione di root contenuta in LVM contenuta in LUKS. Stai usando LVM o LUKS?

Viene chiamato uno strumento che può aiutare a individuare ciò che specificamente sta masticando i tuoi dischi (piuttosto che semplicemente "installare pacchetti") iotop. Suggerirei di eseguirlo mentre esegui una di queste attività e potrebbe indicare qualche altro processo in background che potrebbe essere innesco allo stesso tempo e risucchiare tutto il tuo throughput I / O.


Ciao, scusa per una risposta tardiva: iotop afferma che [jbd2 / sda3-8] utilizza l'80% -99% di I / O, ma lettura, scrittura e scambio del disco sono 0,0 allo stesso tempo. Qualche idea?
Grzenio,

In generale, verificare un eccesso di fsync è un buon punto da verificare. Tuttavia, in questo caso lo stesso software funziona molto meglio su altri hardware (il vecchio T60), quindi sembra più un problema con questa particolare combinazione hardware-driver. Comunque, è bene tenerlo a mente.
sleske,

2

sudo fdisk -u / dev / sda

Questo dovrebbe darti l'offset iniziale. "Penso" che puoi creare la partizione usando fdisk -o 64 o qualcosa del genere - dovrei cercarlo su Google così ti lascerò fare il googling su fdisk e impostare manualmente l'offset della partizione (il valore predefinito è 63 quindi non va bene).

e sì, il disco mostrerà i settori 512b in quanto finge di essere tale per il sistema operativo - Vista / W7 gestirà questo impostando l'offset corretto, ma XP e penso che vicino a tutte le distro linus non :( manualmente è l'unico modo in cui sembra (il mio è solo un'unità di archiviazione e creato in win7 / ntfs quindi non è un problema per me)

Modifica: - Ho trovato un bel post su wdc - questo dovrebbe farti funzionare in pochissimo tempo :)

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


Ciao, ho: grzes: / home / ga # fdisk -u / dev / sda Il numero di cilindri per questo disco è impostato su 182401. Non c'è nulla di sbagliato in questo, ma questo è maggiore di 1024 e potrebbe in alcune configurazioni causa problemi con: 1) software che viene eseguito all'avvio (ad es. vecchie versioni di LILO) 2) avvio e partizionamento di software da altri sistemi operativi (ad es. DOS FDISK, OS / 2 FDISK) Comando (m per aiuto):
Grzenio

Finalmente sono riuscito a farlo, ma non mi è stato di grande aiuto :( Il vero problema deve essere altrove.
Grzenio,

1

Solo uno scatto casuale, che sembra stupido dato che usi Debian ... ma ho scoperto che ha aiutato qualcuno con lo stesso modello di HDD: hai provato ad aggiornare il tuo BIOS?


No, non l'ho fatto. Vale la pena provare probabilmente
Grzenio il

1

Come regola generale, se è possibile utilizzare hdparm sul dispositivo, si tratta della "vecchia" interfaccia ATA, rispetto alla più recente interfaccia SATA / SCSI. In tal caso, probabilmente il problema è che le operazioni del disco durante gli interrupt non sono abilitate per impostazione predefinita. Questo è un problema comune su alcune macchine che utilizzano l'interfaccia ATA precedente e peggiorerà le prestazioni del disco o del sistema durante le operazioni di I / O pesanti.

Dovresti davvero provare questo:

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

Se non vedi un miglioramento delle prestazioni nella seconda corsa di cronometraggio (il terzo comando), c'è qualcos'altro in corso.

Un altro fattore si aspetta che la modalità UDMA6 funzioni su un cavo non UDMA (supponendo che non sia un'interfaccia SATA). Se stai usando un cavo ATA a 80 pin, stai bene; se stai usando un vecchio 40 pin, otterrai tutti i tipi di dolore. Se il cavo è il vecchio 40 pin, è necessario ridurre la velocità di trasferimento a qualcosa che può essere supportato "in modo sicuro". ATTENZIONE: la regolazione dell'interfaccia IDE può bloccare l'unità e / o l'interfaccia e se l'unità è il tuo filesystem di root, l'intero sistema si bloccherà!

Se è necessario ridurre la velocità di trasferimento in base all'hardware, provare quanto segue:

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

Ancora una volta, il secondo timing (terzo comando emesso) dovrebbe mostrare un miglioramento.

Infine, l'unità stessa potrebbe essere marginale, ma senza la segnalazione SMART, potresti non notare il problema (fino a quando non è troppo tardi). Consiglio vivamente di installare il smartmontoolspacchetto per aiutarti, specialmente se hai un disco più vecchio che avrà bisogno di un po 'di TLC di tanto in tanto.

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

Se tutto il resto fallisce, cerca gli /var/log/messageserrori I / O del disco.


Aggiornare:

Sembra che non sei solo. Ci sono bacheche in tutto il mondo che riportano ogni tipo di angoscia con queste unità.

Si menziona anche l'unità che utilizza una dimensione del settore 4k rispetto alla dimensione "tradizionale" di 512 byte. Posso solo immaginare che tipo di guai debba causare.

Infine, guardando di nuovo l'output, sembra che il thread di journaling stia praticamente legando il sistema. Un file system senza journal potrebbe alleviare temporaneamente il problema, ma nella migliore delle ipotesi è profilattico e non risolve il problema nel peggiore dei casi.


Ciao, grazie per la tua risposta. (1) Questa è un'unità SATA ed è collegata tramite un cavo sata sottile all'interfaccia sata sulla scheda madre. (2) Ho provato il primo test e le prestazioni sono diminuite notevolmente da 90,93 MB / sec a 52,50 MB / sec. Le prestazioni di lettura non sembrano essere il problema (90 MB è quello che mi aspetto da questa unità), è solo che alcune operazioni minori bloccano il sistema
Grzenio,

Anche il secondo test non ha migliorato nulla. Sia nel primo che nel secondo caso la maggior parte dei parametri non può essere impostata: hdparm -d 1 -X mdma2 / dev / sda / dev / sda: impostazione using_dma su 1 (on) HDIO_SET_DMA non riuscita: Ictl inappropriato per l'impostazione del dispositivo xfermode su 34 (modalità DMA multiword2) HDIO_DRIVE_CMD (setxfermode) non riuscito: scambio non valido HDIO_GET_DMA non riuscito: ioctl inappropriato per il dispositivo
Grzenio

Ieri ho installato smartmontools, ma non so come usarli. Potresti dare qualche dettaglio in più?
Grzenio,

Ahia. Quindi un nuovo disco rigido sarebbe una buona idea.
Warren P

1

Questo è finalmente risolto! Come sottolineato da @Rachel, il problema era in effetti con l'allineamento ai settori a 4kb, ma sfortunatamente l'articolo collegato era errato :(

Il modo corretto di allineare le partizioni è qui: http://www.linuxconfig.org/linux-wd-ears-advanced-format

E questo articolo fornisce un benchmark abbastanza buono in modo da poter verificare se la tabella delle partizioni è corretta: http://article.gmane.org/gmane.linux.utilities.util-linux-ng/2955

In una nota a margine, se si dispone di questa unità e si utilizza Linux, DOVREBBE anche aumentare uno dei timer di inattività come descritto qui: http://wdc.custhelp.com/cgi-bin/wdc.cfg/php/enduser/std_adp .php? p_faqid = 5357 & p_created = 1.266.947,046 mila & p_sid = Os7DQL2k & p_accessibility = 0 & p_redirect = & p_srch = 1 & p_lva = & p_sp = cF9zcmNoPTEmcF9zb3J0X2J5PSZwX2dyaWRzb3J0PSZwX3Jvd19jbnQ9NTEsNTEmcF9wcm9kcz0yMjcsMjk0JnBfY2F0cz0xMzAmcF9wdj0yLjI5NCZwX2N2PTEuMTMwJnBfcGFnZT0x & p_li = & p_topview = 1


Il secondo link non funziona in sostituzione?
xliiv,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.