# Wydajnosc HDD

## dylon

Witam.

Mam problem z dyskiem WD 250GB na sata.

Niby jest ok - hdparm pokazuje:

```
dylon ~ # hdparm -tT /dev/sda

/dev/sda:

 Timing cached reads:   1808 MB in  2.00 seconds = 903.64 MB/sec

 Timing buffered disk reads:  182 MB in  3.02 seconds =  60.20 MB/sec

```

Ale przy "wiekszych" operacjach prawie zabija mi to kompa.

Jeden rdzen jest wykorzystany na 100% tak jakby dma nie dzialalo, ale znowu widze:

```
dylon ~ # hdparm -i /dev/sda

/dev/sda:

 Model=WDC WD2500KS-00MJB0                     , FwRev=02.01C03, SerialNo=     WD-WCANK6598376

 Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }

 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=50

 BuffType=unknown, BuffSize=16384kB, MaxMultSect=16, MultSect=?16?

 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=488397168

 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

```

Najbardziej uciazliwe jest to przy emerge duzych pakietow, gdzie na koncu jest takie obciazenie dyslu (i przez to systemu) ze mi sie kicker crashuje...

Co moge zrobic aby usprawnic dzialanie operacji dyskowych?

Pozdrawiam[/code]

----------

## SlashBeast

cat /sys/block/sda/queue/scheduler co zwraca?

I ogladaj dstat podczas emergowania.

----------

## Belliash

pokaz wynik:

```
for file in $(ls /proc/sys/vm/*dirty*) ; do echo -n "${file} : " ; cat ${file} ; done
```

poza tym 64bit? to zmien kernela na >= 2.6.30:

http://bugzilla.kernel.org/show_bug.cgi?id=12309#c360

http://kernelnewbies.org/Linux_2_6_30

http://lkml.org/lkml/2009/4/5/197

----------

## dylon

```
dylon ~ # cat /sys/block/sda/queue/scheduler

noop anticipatory deadline [cfq]

```

Za tym "dstat" musze jeszcze pogooglac bo nie wiem o co chodzi  :Smile: 

[EDIT]

Doczytalem  :Smile: 

wyniki mi nic nie mowia  :Sad: 

```
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--

usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw

 33  10  48   9   0   0| 248k    0 |9286B 6434B|   0     0 |2317  3058

 47   6  48   0   0   0|   0     0 |  28k   11k|   0     0 |2271  2876

 49   7  42   0   0   0| 400k   40k|  32k 8379B|   0     0 |2281  3156

 44   7  47   2   0   0| 336k 1352k|  17k 7680B|   0     0 |2330  2720

 52   5  16  28   0   1|1024k    0 |  25k 6244B|   0     0 |2381  3510

 70   8  13  10   0   0|2384k    0 |  35k 8744B|   0     0 |2506  3722

 68   9   3  20   0   0|2968k  184k|7127B 5707B|   0     0 |2567  7713  gdzies tu kicker crashuje

 73   8   0  19   0   0|1824k    0 |  16k 5911B|   0     0 |2360  4653

 24   9  36  33   0   0|2936k 2776k|  20k 8658B|   0     0 |2577  4846

 28   5  51  17   0   0| 504k  488k|  27k 6323B|   0     0 |2452  5610

  3   0  94   1   0   0| 192k    0 |4831B 6307B|   0     0 |2251  2753

```

[/EDIT]

```
dylon ~ # for file in $(ls /proc/sys/vm/*dirty*) ; do echo -n "${file} : " ; cat ${file} ; done

/proc/sys/vm/dirty_background_bytes : 0

/proc/sys/vm/dirty_background_ratio : 10

/proc/sys/vm/dirty_bytes : 0

/proc/sys/vm/dirty_expire_centisecs : 3000

/proc/sys/vm/dirty_ratio : 20

/proc/sys/vm/dirty_writeback_centisecs : 500

/proc/sys/vm/highmem_is_dirtyable : 0

```

Moge prosic o przyblizenie tych zmiennych?

----------

## dylon

Jeszcze dwa testy:

1. przy emerge --sync gdy na koncu robi: update portage cache

```
dylon ~ # dstat

----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--

usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw

 12   3  78   7   0   0|4300k  312k|   0     0 |  46B  246B|2322  3646

  8   2  44  45   0   0|3152k    0 |  16k 7618B|   0     0 |2542  3187

 11   4  35  50   0   1|2560k  488k|  14k 7275B|   0     0 |2547  3979

 11   4  47  38   0   1|5704k 8192B|  16k 6811B|   0     0 |2855  3963

  8   2  49  41   0   0|2992k    0 |7882B 6892B|   0     0 |2517  3160

```

Kicker nie robi problemow...

2. przy hash-owaniu torrenta (rtorrent)

```
dylon ~ # dstat

----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--

usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw

 12   3  77   7   0   0|4311k  311k|   0     0 |  45B  241B|2328  3650

 37  18  44   1   0   0| 200k    0 |  19k 5968B|   0     0 |2478  2949

 37  16  37  11   0   1|  11M  112k|  19k 5523B|   0     0 |2482  3225

 29  15  50   4   0   0|  22M    0 |  18k 8412B|   0     0 |2538  3725

  9   2  79  10   0   0|  78M    0 |  13k 7150B|   0     0 |2377  2906

  9   3  44  43   0   0|  71M  112k|  19k 8203B|   0     0 |2371  2905

  5   3  70  23   0   0|  34M   56k|  25k 5439B|   0     0 |2351  3368

```

kicker dalej dziala...

Ogolnie "responsywnosc" systemu jest lepsza mimo duzo wiekszego obciazenia dysku...

Nic juz nie rozumiem  :Sad: 

----------

## Belliash

1) Ciezko wyedytowac posta? Musiales pisac kolejnego?

2) Zadalem Ci wrecz kluczowe pytanie na ktore nie odpowiedziales...

----------

## dylon

1. myslalem, ze tak bedzie przejrzysciej...

2. faktycznie pytales o architekture... nie wiem jakim cudem przeoczylem.

arch. 32bit

```

dylon ~ # uname -a

Linux dylon 2.6.30-gentoo-r1-dylon #1 SMP Sun Jun 28 00:07:58 CEST 2009 i686 Intel(R) Pentium(R) D CPU 2.80GHz GenuineIntel GNU/Linux

```

Jeszcze to, moze bedzie pomocne...

```
CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"

CHOST="i686-pc-linux-gnu"

CXXFLAGS="-march=prescott -O2 -pipe"

LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--warn-once"

```

----------

## Belliash

A jaki(e) FS?

----------

## dylon

ext3 - sprawdzone i bez bledow.

```
dylon ~ # mount

rootfs on / type rootfs (rw)

/dev/root on / type ext3 (rw,noatime,nodiratime,errors=continue,data=ordered)

none on /proc type proc (rw,relatime)

rc-svcdir on /lib/rc/init.d type tmpfs (rw,nosuid,nodev,noexec,relatime,size=1024k,mode=755)

sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)

debugfs on /sys/kernel/debug type debugfs (rw,nosuid,nodev,noexec,relatime)

udev on /dev type tmpfs (rw,nosuid,relatime,size=10240k,mode=755)

none on /dev/pts type devpts (rw,relatime,mode=620)

none on /dev/shm type tmpfs (rw,relatime)

/dev/sda5 on /home type ext3 (rw,noatime,nodiratime)

/dev/sda1 on /mnt/fat2 type ext4dev (rw,noexec,nosuid,nodev,noatime,nodiratime)

/dev/sda6 on /mnt/fat type vfat (rw,uid=1000,umask=0,iocharset=utf8,codepage=852,quiet,showexec)

none on /proc/bus/usb type usbfs (rw,devgid=85,devmode=666)

binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)

```

Przy operacjach na fat-cie jest troszke lepiej, ale podejrzewam, ze tylko dlatego, ze brak obslugi praw...

----------

## Belliash

A ja podejrzewam ze ext3 jest najwolniejszym / jednym z najwolniejszych ...

Nie wierzysz? Zrobmy prosty test:

1) formatujemy* /

2) wrzucamy tarballa (np stage 3 gentoo)

3) time + tar i sprawdzamy ile czasu mu to zajmie

Calosc wykonac 2 krotnie, w pkt 1 formatowac raz jako ext3, raz jako inny (np reiserfs 3.6)

Sam uzywalem Reisera, bylo okey, ale sie strasznie fragmentowal. Przeszedlem na ext3. Wypakowanie stage1 (tak stage1!) trwalo wyarznie wolniej na ext3. Roznice widac golym okiem... Wkurzylem sie i wzialem ext4dev, dzis juz sobie go sknwertowalem do ext4. Roznice takze widac golym okiem...

Jezeli chodzi o szybkosc to:

ext3 < ext4 < reiserfs^1

ext3 < reiserfs^2 < ext4

^1 - przed fragmentacja

^2 - po fragmentacji  :Razz: 

A na fragmentacje wystarczy mu tydzien  :Wink:  Noo moze 2 ;P

Pociesze Cie - mozesz bezbolesnie migrowac z ext3 na ext4 jezeli uzywasz lilo lub gdy masz wydzielony /boot jezeli uzywasz gruba  :Wink: 

----------

## dylon

Myslisz, ze te moje problemy to wina ext3?

Przymierzam sie wstepnie do ext4 tyle, ze:

nie wiem co wybrac bo doczytalem, ze ext4dev jest szybszy od ext4 ale sa niekompatybilne.

teraz mi jeszcze piszesz o bezbolesnej migracji  :Smile: 

-nie mam osobnej part. /boot

-uzywam gruba 

czyli niedobrze - trzeba bedzie "normalnie" kopiowac  :Smile: 

----------

## Belliash

a nie wiem.. nie zaglebialem sie... moze da sie jakos wydzielic kilka mega na /boot  :Wink:  nie do mnie to pytanie

ext4dev i ext4 to to samo.. roznica? ext4dev to jakby beta ext4  :Wink: 

Uzywam odkad sie pojawilo jako ext4dev i aktualnie mam jako ext4... roznicy nie widze miedzy ext4dev a ext4... tzn nie zauwazylem w trakcie migracji ;P tak to nazwijmy na nasze potrzeby

----------

## canis_lupus

 *dylon wrote:*   

> 
> 
> ```
> dylon ~ # for file in $(ls /proc/sys/vm/*dirty*) ; do echo -n "${file} : " ; cat ${file} ; done
> 
> ...

 

Ja też bym prosił...

----------

## nUmer_inaczej

nawiązując do głównego wątku. Czy włączenie asynchronicznego zapisu w jądrze nie pomoże? ... tak tylko prorokuję

----------

## Belliash

 *nUmer_inaczej wrote:*   

> nawiązując do głównego wątku. Czy włączenie asynchronicznego zapisu w jądrze nie pomoże? ... tak tylko prorokuję

 

Byc moze. Na dluzsza mete balbym sie tego uzywac bez UPSa  :Wink: 

----------

## SlashBeast

 *Belliash wrote:*   

>  *nUmer_inaczej wrote:*   nawiązując do głównego wątku. Czy włączenie asynchronicznego zapisu w jądrze nie pomoże? ... tak tylko prorokuję 
> 
> Byc moze. Na dluzsza mete balbym sie tego uzywac bez UPSa 

 

Przeca async jest domyslnie, ew. przez mountopts mozna dac sync ale wtedy wydajnosc spada drastycznie.

----------

## Belliash

 *SlashBeast wrote:*   

>  *Belliash wrote:*    *nUmer_inaczej wrote:*   nawiązując do głównego wątku. Czy włączenie asynchronicznego zapisu w jądrze nie pomoże? ... tak tylko prorokuję 
> 
> Byc moze. Na dluzsza mete balbym sie tego uzywac bez UPSa  
> 
> Przeca async jest domyslnie, ew. przez mountopts mozna dac sync ale wtedy wydajnosc spada drastycznie.

 

czyzbym pomylil async z inna opcja? :>

----------

## SlashBeast

Moze z vm dirty writeback?

----------

## dylon

Od wczoraj wieczor mam / na ext4 (nowa partycja bez konwersji) i:

system jakos minimalnie szybciej dziala ale pierwotnych problemow to nie rozwiazalo...

Przy okazji:

init mnie informuje:

```
EXT3-fs: sda1: couldn't mount because of unsupported optional features (240).

EXT2-fs: sda1: couldn't mount because of unsupported optional features (240).

EXT4-fs: barriers enabled

```

Czy to znaczy, ze przy bootowaniu init probuje montowac najpierw jako ext3 potem ext2?

W fstab mam:

```
/dev/sda1        /       ext4    defaults,noatime,nodiratime             0 1

```

Mam sie przejmowac tymi ostrzezeniami? (nie widze na razie jakis problemow)...

----------

## Belliash

normalka...

tak ma poprostu byc...

pokaz tune2fs -l /dev/[]

----------

## dylon

```
dylon ~ # tune2fs -l /dev/sda1

tune2fs 1.41.7 (29-June-2009)

Filesystem volume name:   <none>

Last mounted on:          <not available>

Filesystem UUID:          4f9631e8-1643-494b-8017-c6ddb7a244a0

Filesystem magic number:  0xEF53

Filesystem revision #:    1 (dynamic)

Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize

Filesystem flags:         signed_directory_hash

Default mount options:    (none)

Filesystem state:         clean

Errors behavior:          Continue

Filesystem OS type:       Linux

Inode count:              1221600

Block count:              4883752

Reserved block count:     244187

Free blocks:              1345568

Free inodes:              446687

First block:              0

Block size:               4096

Fragment size:            4096

Reserved GDT blocks:      1022

Blocks per group:         32768

Fragments per group:      32768

Inodes per group:         8144

Inode blocks per group:   509

Flex block group size:    16

Filesystem created:       Tue Jun 30 22:02:20 2009

Last mount time:          Wed Jul  1 21:39:40 2009

Last write time:          Wed Jul  1 21:39:40 2009

Mount count:              6

Maximum mount count:      30

Last checked:             Tue Jun 30 22:02:20 2009

Check interval:           15552000 (6 months)

Next check after:         Sun Dec 27 21:02:20 2009

Lifetime writes:          16 GB

Reserved blocks uid:      0 (user root)

Reserved blocks gid:      0 (group root)

First inode:              11

Inode size:               256

Required extra isize:     28

Desired extra isize:      28

Journal inode:            8

First orphan inode:       661921

Default directory hash:   half_md4

Directory Hash Seed:      0ca6a40a-317f-4863-a384-4d2907f21deb

Journal backup:           inode blocks

```

----------

## Belliash

hmmmm..... mozesz jeszcze sprobowac tweakowac ext4...

----------

## SlashBeast

Sprawdz co dokladnie Ci zjada ten rdzen, odpal np. htop i kaz mu pokazywac watki jadra.

----------

## dylon

 *SlashBeast wrote:*   

> Sprawdz co dokladnie Ci zjada ten rdzen, odpal np. htop i kaz mu pokazywac watki jadra.

 

Nic ciekawego nie pokazuje.

W przypadku crashow kickera... przepraszam za zawracanie glowy. Winowajca byl aplet KBFX (a szkoda bo mi sie podoba).

Czyli zostalem z pierwotnym problemem, zbyt duzego obciazenia systemu przy operacjach dyskowych...

p.s. jednak ext4 daje odczuwalna poprawe - nie taka, aby dac solved  :Smile:  ale zawsze cos do przodu...

----------

## Belliash

Ile masz RAMu? moze brakuje i swapuje obciazajac dysk?

----------

## SlashBeast

 *dylon wrote:*   

>  *SlashBeast wrote:*   Sprawdz co dokladnie Ci zjada ten rdzen, odpal np. htop i kaz mu pokazywac watki jadra. 
> 
> Nic ciekawego nie pokazuje.
> 
> W przypadku crashow kickera... przepraszam za zawracanie glowy. Winowajca byl aplet KBFX (a szkoda bo mi sie podoba).
> ...

 

Jak to nic ciekawego nie pokazuje? Skoro COS zjada tego proca, to powiedz CO.

----------

## dylon

Ram-u 2GB. Fakt, ze po kilku dniach (lub kompilacji czegos wiekszego) jest cala zapelniona ale swapa zajetego wiecej niz 50MB to nie widzialem jeszcze...

A procka zajmuje:

-przy emergowaniu - emerge  :Razz: 

-przy kompiowaniu - np. mc czy cokolwiek czym kopiuje...

htop pokazuje mi ok 10-20% przy tych procesach (i to sa najbardziej wtedy zjadajace procka procesy - na pewno htop pokazuje wszystko)

a aplet superkaramby 100% jednego rdzenia. 

```
graph x=45 y=20 w=150 h=50 sensor=cpu cpu=0 points=100 color=225,35,0

graph x=45 y=20 w=150 h=50 sensor=cpu cpu=1 points=100 color=1,247,1

```

----------

## Belliash

to cos nie tak z ta superkaramba... u mnie nie zjadala nigdy tak procka, sprobuj ja wylaczyc

----------

## dylon

 *Belliash wrote:*   

> to cos nie tak z ta superkaramba... u mnie nie zjadala nigdy tak procka, sprobuj ja wylaczyc

 

Alez nie. Superkaramba nie "zjada" procesora. Przedstawilem ja, bo to ona mi pokazuje w jakim stanie sa rdzenie. Dolaczylem linijki jej configa, aby byla pewnosc, ze nie przeklamuje wynikow.

----------

## kneczaj

U mnie jest to samo i zawsze tak było. Takie już uroki Linuksa  :Wink: . Jest ktoś na tym forum komu nie zżera całego procka przy kopiowaniu/przenoszeniu/usuwaniu? Mam identyczne obserwacje w przeróżnych programach monitorujących użycie procesora przy tych operacjach to 100%, lecz nie jest to użycie procesora przez żaden z uruchomionych programów. Ja bym to wytłumaczył w ten sposób, że jest to użycie procesora przez kernel, a jego nigdy nie ma na liście.

----------

## SlashBeast

Mi przy kopiowaniu 11G obrazu dysku maszyny wirtualnej core0 jest zjadane w 40-60% gdzie 20% to proces cp a 40% to kcryptd (szyfowanie partycji), uzycie core1 jest w 15-20%. planista IO to deadline a podczas takiej operacji system jest prawie-respowalny. (otwarcie nowej kopii urxvt trwa do 6 sekund gdzie normalnie otwiera sie natychmiast.) - wam ktorym tak meczy proca - nie uzywacie czasem ext3/4 a watek jadra ktory zjadam wam proca to nie jest pdflush? Reiserfs ftw!

----------

## dylon

 *kneczaj wrote:*   

> U mnie jest to samo i zawsze tak było. 

 

A wlasnie ze nie zawsze  :Razz:  Na pewno nie mialem tego problemu na starych kernelach bez obslugi sata. 

Ale, byc moze, wtedy dyski byly na tyle wolne, ze problemu nie bylo widac...

Top mi podaje te procesy na 2 i 3 miejscu: (sytuacja przy kopiowaniu)

```

  282 root      15  -5     0    0    0 S    1  0.0   0:01.44 kswapd0

 1575 root      15  -5     0    0    0 D    1  0.0   0:02.27 kjournald

 
```

Czemu one sa tak "wysoko" skoro %cpu maja 1 ?

----------

## Belliash

@SlashBeast: ja mam EXT4

```
belliash@LAPEK ~ $ uname -a

Linux LAPEK 2.6.28-zen7 #7 SMP Wed Feb 11 13:23:30 CET 2009 x86_64 Intel(R) Core(TM)2 CPU T5500 @ 1.66GHz GenuineIntel GNU/Linux

belliash@LAPEK /proc $ cat /usr/src/linux/.config | grep IOSCHED

CONFIG_IOSCHED_NOOP=y

CONFIG_IOSCHED_FIFO=y

# CONFIG_IOSCHED_AS is not set

# CONFIG_IOSCHED_DEADLINE is not set

# CONFIG_IOSCHED_CFQ is not set

CONFIG_IOSCHED_BFQ=y

# CONFIG_IOSCHED_VR is not set

CONFIG_DEFAULT_IOSCHED="bfq"
```

KLIK! :]

----------

## SlashBeast

Pora sie przeprosic z Budget Fair Queueing.

----------

## Belliash

 *SlashBeast wrote:*   

> Pora sie przeprosic z Budget Fair Queueing.

 

poklucili sie?  :Smile: 

----------

## SlashBeast

tak, z zenem, ale juz spatchowalem sobie 2.6.30.1 na BFQ i testuje jak to teraz dziala.

----------

## dylon

 *SlashBeast wrote:*   

> Pora sie przeprosic z Budget Fair Queueing.

 

hmmm ja tam nie widze "optycznej" roznicy miedzy bfq a cfq.... (2.6.30-gentoo-r2)

----------

## Belliash

 *dylon wrote:*   

>  *SlashBeast wrote:*   Pora sie przeprosic z Budget Fair Queueing. 
> 
> hmmm ja tam nie widze "optycznej" roznicy miedzy bfq a cfq.... (2.6.30-gentoo-r2)

 

a ja tak...na krzyst BFQ... racz wziasc pod uwage fakt iz pracujemy na innych architekturach  :Wink: 

----------

