# Niska prędkość dysku, wysoki loadavg

## manwe_

Witam. Mam słaby komp robiący za router/serwer [PIII 733MHz, 256MB RAM], wszystko działa bezproblemowo poza dostępem do dysków.

sda to karta CF pqi 8GB + adapter na ATA:

```
# hdparm -Tt /dev/sda

/dev/sda:

 Timing cached reads:   150 MB in  2.01 seconds =  74.56 MB/sec

 Timing buffered disk reads:   58 MB in  3.20 seconds =  18.15 MB/sec
```

Powiedzmy, że ujdzie. Gorzej jest natomiast z sdb, WDC WD2000JB:

```
 # hdparm -tT /dev/sdb

/dev/sdb:

 Timing cached reads:   178 MB in  2.01 seconds =  88.72 MB/sec

 Timing buffered disk reads:   18 MB in  3.56 seconds =   5.06 MB/sec
```

Jak na relatywnie nowy dysk, to jest tragedia. Do tego podczas intensywnego odczytu/zapisu zużycie CPU przez kernel sporo rośnie (z pikami sięgającymi nawet 100%), a loadavg winduje do 5~7. Typowe objawy nieobsługiwania DMA. Tylko, że w jajku używam libata, a hdparm pokazuje udma4 w użyciu:

```
# hdparm -I /dev/sdb

/dev/sdb:

ATA device, with non-removable media

        Model Number:       WDC WD2000JB-00GVA0

        Serial Number:      WD-WCALL1467981

        Firmware Revision:  08.02D08

Standards:

        Supported: 6 5 4

        Likely used: 8

Configuration:

        Logical         max     current

        cylinders       16383   16383

        heads           16      16

        sectors/track   63      63

        --

        CHS current addressable sectors:   16514064

        LBA    user addressable sectors:  268435455

        LBA48  user addressable sectors:  390721968

        Logical/Physical Sector size:           512 bytes

        device size with M = 1024*1024:      190782 MBytes

        device size with M = 1000*1000:      200049 MBytes (200 GB)

        cache/buffer size  = 8192 KBytes (type=DualPortCache)

Capabilities:

        LBA, IORDY(can be disabled)

        Standby timer values: spec'd by Standard, with device specific minimum

        R/W multiple sector transfer: Max = 16  Current = 8

        Recommended acoustic management value: 128, current value: 128

        DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 *udma4 udma5

             Cycle time: min=120ns recommended=120ns

        PIO: pio0 pio1 pio2 pio3 pio4

             Cycle time: no flow control=120ns  IORDY flow control=120ns

Commands/features:

        Enabled Supported:

           *    SMART feature set

                Security Mode feature set

           *    Power Management feature set

           *    Write cache

           *    Look-ahead

           *    Host Protected Area feature set

           *    WRITE_BUFFER command

           *    READ_BUFFER command

           *    DOWNLOAD_MICROCODE

                SET_MAX security extension

           *    Automatic Acoustic Management feature set

           *    48-bit Address feature set

           *    Device Configuration Overlay feature set

           *    Mandatory FLUSH_CACHE

           *    FLUSH_CACHE_EXT

           *    SMART error logging

           *    SMART self-test

           *    SMART Command Transport (SCT) feature set

           *    SCT Long Sector Access (AC1)

           *    SCT LBA Segment Access (AC2)

           *    SCT Error Recovery Control (AC3)

           *    SCT Features Control (AC4)

           *    SCT Data Tables (AC5)

Security:

                supported

        not     enabled

        not     locked

        not     frozen

        not     expired: security count

        not     supported: enhanced erase

HW reset results:

        CBLID- above Vih

        Device num = 0 determined by the jumper

Checksum: correct
```

Kontroler to "00:1f.1 IDE interface: Intel Corporation 82801AA IDE Controller (rev 02)", a używany sterownik "ata_piix". Jajko 2.6.28-hardened-r7. Jakieś pomysły co może być nie tak? Da się to rozwiązać, czy czeka mnie kupno kontrolera na PCI? Rozwiązanie nie takie złe o ile uda mi się prawie wyzerować zużycie CPU. Hashowanie torrentów to mordęga dla tego systemu.Last edited by manwe_ on Wed Oct 21, 2009 1:38 am; edited 2 times in total

----------

## lsdudi

a coś przypadkiem nie rzeźbi po dysku cały czas?

```
#iotop
```

btw do dysków na libata chyba lepiej używać sdparm aby odczytać ich stan

----------

## manwe_

Nie licząc operacji wywołanych przez usera, z tego dysku korzysta praktycznie tylko rtorrent. Iotop pokazuje użycie na poziomie kilkuset kilo [150~300]. 

```
# sdparm -a -l /dev/sdb

    /dev/sdb: ATA       WDC WD2000JB-00G  08.0

    Direct access device specific parameters: WP=0  DPOFUA=0

Read write error recovery [rw] mode page:

  AWRE        1  Automatic write reallocation enabled

  ARRE        0  Automatic read reallocation enabled

  TB          0  Transfer block

  RC          0  Read continuous

  EER         0  Enable early recovery

  PER         0  Post error

  DTE         0  Data terminate on error

  DCR         0  Disable correction

  RRC         0  Read retry count

  COR_S       0  Correction span (obsolete)

  HOC         0  Head offset count (obsolete)

  DSOC        0  Data strobe offset count (obsolete)

  WRC         0  Write retry count

  RTL         0  Recovery time limit (ms)

Caching (SBC) [ca] mode page:

  IC          0  Initiator control

  ABPF        0  Abort pre-fetch

  CAP         0  Caching analysis permitted

  DISC        0  Discontinuity

  SIZE        0  Size enable

  WCE         1  Write cache enable

  MF          0  Multiplication factor

  RCD         0  Read cache disable

  DRRP        0  Demand read retention priority

  WRP         0  Write retention priority

  DPTL        0  Disable pre-fetch transfer length

  MIPF        0  Minimum pre-fetch

  MAPF        0  Maximum pre-fetch

  MAPFC       0  Maximum pre-fetch ceiling

  FSW         0  Force sequential write

  LBCSS       0  Logical block cache segment size

  DRA         0  Disable read ahead

  NV_DIS      0  Non-volatile cache disable

  NCS         0  Number of cache segments

  CSS         0  Cache segment size

Control [co] mode page:

  TST         0  Task set type

  TMF_ONLY    0  Task management functions only

  D_SENSE     0  Descriptor format sense data

  GLTSD       1  Global logging target save disable

  RLEC        0  Report log exception condition

  QAM         0  Queue algorithm modifier

  QERR        0  Queue error management

  RAC         0  Report a check

  UA_INTLCK   0  Unit attention interlocks control

  SWP         0  Software write protect

  ATO         0  Application tag owner

  TAS         0  Task aborted status

  AUTOLOAD    0  Autoload mode

  BTP        -1  Busy timeout period (100us)

  ESTCT      30  Extended self test completion time (sec)

```

----------

## lsdudi

Może to jest wskazówka : R/W multiple sector transfer: Max = 16  Current = 8 

Sprawdź co smart mówi na jego temat:

```
sys-apps/smartmontools 
```

Dobrze by było podłączyć pod inny komputer bo już miałem tak że na 4 dyski nowe jakie przyszły jeden nawet nie ruszył a inny od razu był jebnięty

----------

## manwe_

Nawet nie przeszło mi przez łeb, że to dysk może się już sypać  :Confused: 

```
SMART Attributes Data Structure revision number: 16

Vendor Specific SMART Attributes with Thresholds:

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE

  1 Raw_Read_Error_Rate     0x000b   200   200   051    Pre-fail  Always       -       0

  3 Spin_Up_Time            0x0007   127   123   021    Pre-fail  Always       -       6150

  4 Start_Stop_Count        0x0032   100   100   040    Old_age   Always       -       728

  5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0

  7 Seek_Error_Rate         0x000b   200   200   051    Pre-fail  Always       -       0

  9 Power_On_Hours          0x0032   052   052   000    Old_age   Always       -       35524

 10 Spin_Retry_Count        0x0013   100   100   051    Pre-fail  Always       -       0

 11 Calibration_Retry_Count 0x0013   100   100   051    Pre-fail  Always       -       0

 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       712

194 Temperature_Celsius     0x0022   109   087   000    Old_age   Always       -       41

196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0

197 Current_Pending_Sector  0x0012   200   200   000    Old_age   Always       -       0

198 Offline_Uncorrectable   0x0012   200   200   000    Old_age   Always       -       0

199 UDMA_CRC_Error_Count    0x000a   200   253   000    Old_age   Always       -       0

200 Multi_Zone_Error_Rate   0x0009   200   200   051    Pre-fail  Offline      -       0

```

Raw_Read_Error_Rate, Multi_Zone_Error_Rate -- tragedia. No nic, czyli dysk do śmieci. Dzięki za naprowadzenie.

Zastanawia mnie tylko jedno. OK, dysk pada i sporo mieli głowicą żeby cokolwiek odczytać/zapisać, ale co to ma do użycia CPU?

----------

## dylon

 *manwe_ wrote:*   

> 
> 
> Raw_Read_Error_Rate, Multi_Zone_Error_Rate -- tragedia. No nic, czyli dysk do śmieci. Dzięki za naprowadzenie.
> 
> 

 

0 to dla Ciebie tragedia?  :Smile: 

wg wskazan, masz calkowicie sprawny dysk...

----------

## canis_lupus

Z dyskiem wszystko jest ok!

----------

## Mroq

 *manwe_ wrote:*   

> Nawet nie przeszło mi przez łeb, że to dysk może się już sypać 
> 
> ```
> SMART Attributes Data Structure revision number: 16
> 
> ...

 

Według tego powyżej dysk jest w porządku w stopniu zaskakującym jak mi się zdaje... zwłaszcza patrząc na Power_On_Hours. Ja mam połowę z tego i error-raty mam czterocyfrowe...

Przeprowadź extended test

```
#smartctl -t long /dev/hda
```

Jeżeli error-raty i ReallocatedSector_Ct będą takie same jak teraz, to proponowałbym wysłać producentowi kosz kwiatów.  :Laughing: 

----------

## lsdudi

e tam te parametry nie sa tragiczne powinien jescze smigać

pisałes że to nowy dysk a czas pracy ma naprawdę spory 1480 dni?

czasem ci nie wcisneli dysku z odzysku jako nowego ?

----------

## canis_lupus

Czytaj ze zrozumieniem. relatywnie nowy != nowy. Poza tym dane w smarcie pokazują, że dysk jest w znakomitej kondycji.

----------

## lsdudi

 *canis_lupus wrote:*   

> Czytaj ze zrozumieniem. relatywnie nowy != nowy. Poza tym dane w smarcie pokazują, że dysk jest w znakomitej kondycji.

 

relatywnie nowy to nie jest 4 lata :] biorąc pod uwagę że dyski robione są na 3 lata

----------

## SlashBeast

 *lsdudi wrote:*   

> biorąc pod uwagę że dyski robione są na 3 lata

 Gdzie Ty takie bzdury wyczytałeś?

----------

## canis_lupus

 *SlashBeast wrote:*   

>  *lsdudi wrote:*   biorąc pod uwagę że dyski robione są na 3 lata Gdzie Ty takie bzdury wyczytałeś?

 

Gdzie On takie dyski kupuje!   :Twisted Evil: 

----------

## Bialy

 *SlashBeast wrote:*   

>  *lsdudi wrote:*   biorąc pod uwagę że dyski robione są na 3 lata Gdzie Ty takie bzdury wyczytałeś?

 

Może na gwarancji  :Laughing: 

----------

## canis_lupus

Raczej nie, bo gwarancji zwykle jest 5 lat.

----------

## lazy_bum

 *canis_lupus wrote:*   

> Raczej nie, bo gwarancji zwykle jest 5 lat.

 

To ciekawe, bo ostatnio gwarancję na 5 lat dawał tylko Seagate (dyski 2.5" i 3.5", wewnętrzne) i… z niej zrezygnował (bo, wg ich informacji, 95% nośników i tak trafiało do nich w pierwszych 3 latach okresu gwarancyjnego).

W każdym razie, ciekawe co z autorem wątku. Wymiana dysku pomogła? (;

----------

## lsdudi

 *SlashBeast wrote:*   

>  *lsdudi wrote:*   biorąc pod uwagę że dyski robione są na 3 lata Gdzie Ty takie bzdury wyczytałeś?

 

Ryzyko padnięcia dysku po 3 latach od zakupienia (uruchomienia) wzrasta kilkakrotnie.

Na usenecie ze 2 lata temu spotkałem się z ciekawą historią, koleś miał 200 dysków z jednej serii dokładnie po 3 latach w ciągu 2 tygodni padło mu 25% stanu.

Nie przeczę że często wynika to z farta czy nie farta, taka jest elektronika (kto się bawił w overclocking to wie) ale tak czy siak, fart gwałtownie spada po trzech latach :] co nie znaczy że nie ma dysków kilkunastoletnich które działają i mają się całkiem dobrze.

Jeśli posiadasz jakieś opracowania co do częstości fakupów dysków magnetycznych w zależności od wieku chętnie poczytam jeśli nie ... spadaj.

----------

## manwe_

Ups  :Rolling Eyes:  Z tabeli odczytałem wartości VALUE i WORST jako bieżące, a THRESH jako próg awaryjności. Przeoczyłem zupełnie RAW_VALUE. No ale dobrze wiedzieć, że dysk jest ok. Ad. "relatywnie nowy" myślałem o <3 latach [dysponuję sporo starszymi], mała rozbieżność - dziury w pamięci  :Wink:  Zapuściłem -t long, za 75min ma skończyć.

No to w takim razie wracamy do problemu. Skąd takie obciążenie CPU i niskie prędkości? hdparm -t przed chwilą pokazał całe 9.5MB/sec.

----------

## dylon

Jesli to jest dysk ATA to zobacz, czy czasem nie skrzywila sie jedna z nozek i nie zwiera sie z druga jesli nie, to jedyna sensowna opcja to uszkodzona elektronika.

----------

## lazy_bum

Wklej jeszcze fstab (może jakieś dziwne opcje przy montowaniu?). Jak możesz, to sprawdź na jajku nie-hardened i sprawdź na nie-libata (tutaj czy z hardened czy bez, to już jak chcesz ;).

Kiedyś, za czasów „testowego” libata bawiłem się w porównanie wydajności (libata ponoć miało być szybsze). O ile pamiętam, to owszem — było szybsze — na nowym komputerze. Na starszym zaobserwowałem odwrotne działanie — spadek wydajności. Stąd też sugestia z testem nie-libata.

Kolejna sprawa — czy oba urządzenia są na jednej taśmie? Może warto je rozdzielić, bo np. adapter coś bruździ.

----------

## manwe_

Po testach nic się nie zmieniło:

```
SMART Attributes Data Structure revision number: 16

Vendor Specific SMART Attributes with Thresholds:

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE

  1 Raw_Read_Error_Rate     0x000b   200   200   051    Pre-fail  Always       -       0

  3 Spin_Up_Time            0x0007   127   123   021    Pre-fail  Always       -       6150

  4 Start_Stop_Count        0x0032   100   100   040    Old_age   Always       -       728

  5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0

  7 Seek_Error_Rate         0x000b   200   200   051    Pre-fail  Always       -       0

  9 Power_On_Hours          0x0032   052   052   000    Old_age   Always       -       35556

 10 Spin_Retry_Count        0x0013   100   100   051    Pre-fail  Always       -       0

 11 Calibration_Retry_Count 0x0013   100   100   051    Pre-fail  Always       -       0

 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       712

194 Temperature_Celsius     0x0022   109   087   000    Old_age   Always       -       41

196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0

197 Current_Pending_Sector  0x0012   200   200   000    Old_age   Always       -       0

198 Offline_Uncorrectable   0x0012   200   200   000    Old_age   Always       -       0

199 UDMA_CRC_Error_Count    0x000a   200   253   000    Old_age   Always       -       0

200 Multi_Zone_Error_Rate   0x0009   200   200   051    Pre-fail  Offline      -       0

```

Są na osobnych taśmach i od niepamiętnych czasów go nie wypinałem z taśmy, więc nic się "samo" raczej nie skrzywiło. Niestandardowych opcji w fstabie też brak, są tylko noatime i nodiratime. O reszcie już sobie xfs sam decyduje. Popatrzę w takim razie na nie-libata przy okazji najbliższej zmiany jajka, może to coś da [system serwuje kilka usług, więc nie bardzo idzie go tak po prostu odciąć od świata].

----------

