LVM / pomalé čtení z přimountovaného volume

Tomas Vondra tv na fuzzy.cz
Sobota Květen 19 18:41:48 CEST 2012


Ahoj,

při testování výkonu I/O na serveru jsem narazil na zajímavou anomálii
týkající se LVM - čtení přímo přimountovaného logického volume je daleko
pomalejší (cca 2x) než čtení pokud volume přimountovaný není.

Možná je to normální (a jenom jsem si toho předtím nevšiml), a asi to
ani není výkonnostní problém protože čtení z filesystému je zase rychlé.
Ale jistý si tím nejsem ...

Základní info o serveru:

- 2x CPU se 6 jádry (tj. celkem 12 resp. 24 s HT)
- 6x 15k SAS disky v HW RAIDu 10 (stripe 256kB)
- PERC 6/i, tj. vlastně řadič LSI s 256MB write cache
- Scientific Linux 6.2

LVM tam potřebujeme kvůli vytváření volumes za běhu (bez restartu).

Vytvoření logical volume nad devicem /dev/sda6:

pvcreate /dev/sda6
vgcreate -s 32MiB my-vg /dev/sda6
lvcreate -n my-lv -l 15359 my-vg
mkfs.xfs /dev/my-vg/my-lv

1) Před mountem:

# dd if=/dev/my-vg/my-lv of=/dev/null bs=8192 count=5000000
5000000+0 records in
5000000+0 records out
40960000000 bytes (41 GB) copied, 60.1156 s, 681 MB/s

Vytížení CPU je typicky takovéto:

Cpu0  :  0.7%us, 46.9%sy,  0.0%ni,  0.0%id, 47.2%wa,  0.0%hi,  5.3%si,
0.0%st

2) Po mountu /dev/my-vg/my-lv (do /mnt/my-lv):

# dd if=/dev/my-vg/my-lv of=/dev/null bs=8192 count=5000000
5000000+0 records in
5000000+0 records out
40960000000 bytes (41 GB) copied, 145.961 s, 281 MB/s

A vytížení CPU je typicky takovéto:

Cpu1  :  0.3%us, 66.1%sy,  0.0%ni,  0.0%id,  0.0%wa,  2.0%hi, 31.6%si,
0.0%st

A někdy až

Cpu3  :  0.3%us, 99.7%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,
0.0%st

Paradoxně zápis / čtení na přimountovaný filesystem je rychlé:

# dd if=/dev/zero of=/mnt/my-lv/dd.tmp bs=8192 count=5000000
5000000+0 records in
5000000+0 records out
40960000000 bytes (41 GB) copied, 67.5744 s, 606 MB/s

# dd if=/dev/zero of=/mnt/my-lv/dd.tmp bs=8192 count=5000000
5000000+0 records in
5000000+0 records out
40960000000 bytes (41 GB) copied, 53.2131 s, 770 MB/s

Sice mi není jasné díky čemu rychlost vzrostla dokonce až na 770MB/s
(jestli díky LVM nebo XFS nebo čemu), ale ten brutální pokles výkonu
čtení se nekoná. BTW page cache dropuji před každým testem, takže tím to
není (ale zajímalo by mne možné vysvětlení).

Napadá někoho čím ten pokles způsoben? Jediné co mne napadá je že LVM
nad přimountovanými devices musí provádět něco dalšího - tomu by
odpovídalo i to vyšší CPU vytížení (což by mohl být bottleneck).

Různé parametry LVM (hlavně alignment vůči RAIDu) jsem zkoušel tunit,
ale bez výsledku. Ono i to že přes filesystém to zapisuje rychleji
naznačuje že tady asi problém nebude.

Ono to asi žádné problémy působit nebude (přimountované volumes asi
přímo číst nepotřebujeme).

Tomáš


Další informace o konferenci Linux