ReiserFS och LVM -- benchmarks


Maskin: 466 Celeron, BX chipset, 128Mb ram
Diskar (en på var IDE-kedja): 
  hda: EIDE IBM-DTTA-350840, 8.4Gb
  hdc: IDE QUANTUM LPS420A, 0.4Gb

OS: GNU/Linux, RedHat 6.0, kärna 2.2.13 med diverse patchar:
  - ReiserFS: 3.5.13-BETA 
  - LVM: 0.7 
  - ext3: 0.0.2c 

Diskpartitionering:
  hda: 1Gb (nära slutet av disken) avsatt för logiska volymer
  hdc: 0,3Gb (i slutet av disken) avsatt för logiska volymer

Logiska volymer:
  stripelv: 600Mb stripe:ad över hda och hdc med stripesize 16Kb
  linlv: 500Mb linjär, i sin helhet på hda


Test 1: Bonnie på linjär resp. stripe:ad logisk volym
-----------------------------------------------------
Bonnie kördes med testfilstorlek 128Mb på 'scratchlv' och 'testlv',
vilka försetts med Reiser-filsystem. Journalling var påslagen.

linlv:
    -------Sequential Output-------- ---Sequential Input-- --Random--
    -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --Seeks---
 MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU  /sec %CPU
128  5714 40.8  6336 18.8  2698  7.5  5642 20.2  6970  4.5 118.9  1.4 

stripelv:
    -------Sequential Output-------- ---Sequential Input-- --Random--
    -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --Seeks---
 MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU  /sec %CPU
128  4554 33.6  3963 11.5  1475  4.7  2340  8.6  2983  2.4  89.8  0.8

Den linjära logiska volymen var alltså (oväntat) betydligt snabbare.

Maskinen var under hela testet väldigt icke-responsiv, så jag slog på
inrådan från reiserfs-mailinglistan av dma på båda diskarna och
gjorde ett nytt test:


Test 2: Avstängd DMA
--------------------
DMA slogs av mha 'hdparm -d 0' på båda diskarna.

stripelv:
   -------Sequential Output-------- ---Sequential Input-- --Random--
   -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --Seeks---
 MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU  /sec %CPU
128  2884 81.3   737  9.9  1397 56.6  2148 59.9  2410 52.9  81.0  3.9

Inte oväntat blev alltså prestandan nu _helt_ katastrofal. Faktiskt i
klass med min gamla Seagate 1Gb EIDE-disk, som jag benchmark:ade för
ett par år sedan, då med en pentium-120 eller nått sånt..

gammal seagate-disk, ext2:
    -------Sequential Output-------- ---Sequential Input-- --Random--
    -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --Seeks---
 MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU  /sec %CPU
 50  2850 83.8  3292 24.3  1456 24.0  2701 71.3  3554 19.3  49.3  2.5


Test 3: DMA påslagen enbart på hdc
---------------------------
För att balansera prestandaskillnaden på de olika diskarna beslöt jag
att slå på DMA igen på den långsammare disken, hdc, och det visade sig
vara en rätt god idé.

stripelv:
    -------Sequential Output-------- ---Sequential Input-- --Random--
    -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --Seeks---
 MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU  /sec %CPU
128  4806 87.1  4447 25.6  1593 35.7  2641 45.9  3346 39.4  86.2  4.1

Stor förbättring. T.o.m bättre än med DMA påslaget på _båda_ diskarna.
Ökad cpu-användning, javisst, men nu var maskinen responsiv, till
skillnad från i Test 1.

Benchmarks i all ära, men hur påverkas något intressant, som t.ex.
kompilering, jämfört med ett 'vanligt' ext2-filsystem, utan LVM?


Test 4: Kärnkompilering
-----------------------
Jag lade två identiska kopior av källkoden till 2.2.13 på stripelv
och på en vanlig ext2-partition på hda. DMA-inställningen på hda
ändrade jag mellan kompileringarna för att få den mest optimala,
dvs. _på_ när jag kompilerade på ext2-partitionen, och _av_ när
jag kompilerade på stripelv. 

En 'time make bzImage' gav upplyftande resultat.

stripelv:
207.67user 15.31system 3:52.89elapsed 95%CPU

ext2-partition:
204.51user 14.17system 3:52.56elapsed 94%CPU

Trots att jag blandat in en uråldrig IDE-disk så kompilerar jag
kärna i princip exakt lika fort som på min halvnya fina disk!

Hur långsam var då den gamla Quantum-disken?


Test 5: Disk Timing med 'hdparm -t'
----------------------

DMA avstängd:
/dev/hdc:
 Timing buffered disk reads:  32 MB in 15.09 seconds = 2.12 MB/sec
/dev/hda:
 Timing buffered disk reads:  32 MB in  9.01 seconds = 3.55 MB/sec

DMA påslagen:
/dev/hdc:
 Timing buffered disk reads:  32 MB in 15.08 seconds = 2.12 MB/sec
/dev/hda:
 Timing buffered disk reads:  32 MB in  2.68 seconds =11.94 MB/sec

Markant skillnad mellan diskarna, mao. Värt att notera är att DMA
inte verkar påverka hdparms test av hdc alls.



Tor-Ake Fransson
Last modified: Wed Dec 15 21:55:36 CET 1999