[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: SSD/Festplatten-Benchmarking (war: Re: [Semi OT] Suche neues Board für alte Hardware)



Am Dienstag, 2. August 2011 schrieb Martin Steigerwald:
> Am Freitag, 29. Juli 2011 schrieb Martin Steigerwald:
> > Am Freitag, 29. Juli 2011 schrieb Martin Steigerwald:
> > > Am Freitag, 29. Juli 2011 schrieb Michelle Konzack:
> > > > Hello Martin Steigerwald,
> > > 
> > > Sodele,
> > > 
> > > Butter aufs Brot:
> > > > Am 2011-07-29 13:08:58, hacktest Du folgendes herunter:
> > > > > Bitte was?
> > > > > 
> > > > > "Unter Linux bringt eine SSD nicht so wirklich viel." als
> > > > > Pauschal- Aussage?
> > > > > 
> > > > > Der Umstieg von Festplatte auf SSD ist für mich gefühlt ein
> > > > > Schritt wie der Umstieg von Diskette auf Festplatte.
> > > > 
> > > > Ehm, also ich habe eine  meiner  Sun  Fire  X4100M2  mit  4 SSD
> > > > Platten ausgerüstet und die sind in keinster weise schneller  als
> > > > die
> > > > 
> > > >  original 300 GByte SAS Platten...
> > > > 
> > > > Und beim Stromverbrauch ist es auch egal, ob die  Kiste  jetzt 
> > > > 340 Watt verbraucht oder vorher 360 Watt läßt sich sowieso nicht
> > > > exakt messen.
> > > > 
> > > > SSD ist einfach nur enttäuschend und Geldbeutel leerend.
> > > 
> > > Nun, 300 GByte SAS-Platten sind zunächst mal was Anderes, als das
> > > was in typischen Desktop- oder Notebook-Systemen verbaut ist. Aber
> > > im Server- Umfeld natürlich durchaus typisch.
> > > 
> > > Die Aussage "sind in keinster weise schneller" kaufe ich Dir ohne
> > > vergleichende Messungen aber nicht ab. Und mit Messungen meine ich
> > > *nicht nur* sequentielles I/O. Da mögen sich die SAS-Platten und
> > > eine SATA 300- SSD nicht viel geben. Bei einer SATA 600-SSD mit
> > > 400-500 MB/s sequentiell dürfte das wieder anders aussehen.
> > > 
> > > Die IOPS mit z.B. 2-16 KB Blockgröße sind da durchaus
> > > interessanter.
> > > 
> > > Ok, ich mache mal einen Anfang. Ich bin noch (bei weitem) nicht
> > > sicher, die besten Parameter getroffen zu haben, aber zum Einstieg
> > > mal:
> > > 
> > > martin@merkaba:~[…]> cat iops.job
> > > [global]
> > > size=2G
> > > bsrange=2-16k
> > > filename=iops1
> > > numjobs=1
> > > iodepth=1
> > > # Zufällige Daten für SSDs, die komprimieren
> > > refill_buffers=1
> > > 
> > > [zufälligschreiben]
> > > rw=randwrite
> > > stonewall
> > > [sequentiellschreiben]
> > > rw=write
> > > stonewall
> > > 
> > > [zufälliglesen]
> > > rw=randread
> > > stonewall
> > > [sequentielllesen]
> > > rw=read
> > > 
> > > Für IOPS-Messungen ist empfohlen, über das gesamte Gerät zu messen.
> > > Diesen Luxus lasse ich mit der SSD aber mal. 2 GB sind schonmal
> > > ganz nett als Start.
> > > 
> > > fio schmeißt vor einem IO-Job die Daten weg. Standard-Engine ist
> > > Sync I/O, das heißt fio weist den Linux Kernel an, sofort zu
> > > schreiben. Zufällig füllt fio mit refill_buffer den Buffer fürs
> > > Schreiben vor jedem Schreiben neu mit zufälligen Daten.
> > > 
> > > Die Intel SSD 320 komprimiert meines ungefähren Wissens nicht, aber
> > > SSDs mit neurerem Sandforce-Chip tun dies.
> > 
> > > Das ganze sieht dann so aus:
> > [...]
> > 
> > > Über 5000 IOPS beim zufälligen Schreiben, über 6000 IOPS beim
> > > sequentiellen Schreiben, über 60000 IOPS beim zufälligen Lesen und
> > > merkwürdigerweise nur über 29000 IOPS beim sequentiellen Lesen
> > > trotz höherer Bandbreite. Mein derzeitige Erklärung ist, dass der
> > > CFQ-I/O- Scheduler I/Os zusammenfasste. Das tat er zwar auch, aber
> > > offenbar
> > 
> > > nicht in sehr hohem Maß:
> > Bezüglich des Verhältnisses von zufälligem versus sequentiellen Lesen
> > habe ich über die fio-Mailingliste noch eine Frage offen, denn ein
> > einfacherer Lese-Workload liefert für zufälliges Lesen mit nur 6000
> > IOPS deutlich geringere Werte.
> 
> Gelöst... Kurze Zusammenfassung einer längeren Odysee: Es fehlt in der
> Job-Datei für den letzten Job die Option "stonewall":

Und es war dennoch noch nicht aussagekräftig, da der Page Cache mit rein 
spielte.

ioengine=sync bezieht sich nur auf die Art und Weise, wie fio den I/O 
durchführt, also welche Systemaufrufe es benutzt, nicht jedoch, obs am 
Page Cache vorbei geht oder nicht. Mit ioengine=sync verwendet fio read() 
und write(), auf die das Programm zwar wartet, also synchrone Aufrufe. Den 
Page Cache verwendet Linux dennoch. Mit ioengine=libaio, also asynchrone 
Aufrufe, aber mit direct=1 eben am Page Cache vorbei, gibts realistischere 
Werte fürs Lesen.

Und damit reduziert sich die recht hohe IOPS-Nummer beim Lesen dann 
deutlich. Diesmal als Anhänge, da die Resultate beim Quoting in der Regel 
ohnehin futsch gehen.

Zum Vergleiche lasse ich die Datei mit sequentiell.job erstmal komplett 
mit zufälligem Inhalt beschreiben. Und dann mit iops.job die eigentlich 
IOPS-Messungen. Es ist immer noch hoch, aber weit über 7000 IOPS sinds 
nicht mehr.

Ich hab ja gesagt, dass ich evtl. mehrere Iterationen brauche, bis es 
akkurat wird. Auch jetzt verspreche ich noch nichts ;).

Ich hab vor, das morgen oder übermorgen mal auf ein RAID 1 mit zwei SAS-
Platten loszulassen. Ich gehe davon aus, dass die SSD immer noch gewinnt. 
Aber mal sehen.

-- 
Martin 'Helios' Steigerwald - http://www.Lichtvoll.de
GPG: 03B0 0D6C 0040 0710 4AFA  B82F 991B EAAC A599 84C7
[global]
ioengine=libaio
direct=1
# Für zufällige Daten vorher den Job sequentiell
# laufen lassen
# Wichtig für SSDs, die komprimieren
filename=testdatei
size=2G
bsrange=2k-16k

# Das, was hier geschrieben wird, soll natürlich
# auch wieder zufällig sein
refill_buffers=1

[zufälliglesen]
stonewall
rw=randread
runtime=60

[sequentielllesen]
stonewall
rw=read
runtime=60

[zufälligschreiben]
stonewall
rw=randwrite
runtime=60

[sequentiellschreiben]
stonewall
rw=write
runtime=60

zufälliglesen: (g=0): rw=randread, bs=2K-16K/2K-16K, ioengine=libaio, iodepth=1
sequentielllesen: (g=1): rw=read, bs=2K-16K/2K-16K, ioengine=libaio, iodepth=1
zufälligschreiben: (g=2): rw=randwrite, bs=2K-16K/2K-16K, ioengine=libaio, iodepth=1
sequentiellschreiben: (g=3): rw=write, bs=2K-16K/2K-16K, ioengine=libaio, iodepth=1
fio 1.57
Starting 4 processes

zufälliglesen: (groupid=0, jobs=1): err= 0: pid=6954
  read : io=1322.9MB, bw=22563KB/s, iops=3194 , runt= 60001msec
    slat (usec): min=6 , max=1763 , avg=29.52, stdev=12.62
    clat (usec): min=2 , max=7206 , avg=274.52, stdev=114.08
     lat (usec): min=128 , max=7246 , avg=304.68, stdev=116.81
    bw (KB/s) : min=18844, max=25304, per=100.15%, avg=22596.20, stdev=1740.26
  cpu          : usr=4.15%, sys=10.50%, ctx=193490, majf=0, minf=23
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued r/w/d: total=191664/0/0, short=0/0/0
     lat (usec): 4=0.01%, 10=0.01%, 50=0.01%, 100=0.01%, 250=49.32%
     lat (usec): 500=48.57%, 750=1.98%, 1000=0.05%
     lat (msec): 2=0.05%, 4=0.02%, 10=0.01%
sequentielllesen: (groupid=1, jobs=1): err= 0: pid=6956
  read : io=2048.0MB, bw=72598KB/s, iops=8066 , runt= 28887msec
    slat (usec): min=5 , max=1909 , avg=26.76, stdev= 8.98
    clat (usec): min=1 , max=4631 , avg=91.18, stdev=36.03
     lat (usec): min=40 , max=4644 , avg=118.51, stdev=37.86
    bw (KB/s) : min=70224, max=77412, per=100.09%, avg=72663.79, stdev=1589.19
  cpu          : usr=6.47%, sys=24.83%, ctx=234568, majf=0, minf=25
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued r/w/d: total=233021/0/0, short=0/0/0
     lat (usec): 2=0.01%, 4=0.01%, 10=0.01%, 50=0.71%, 100=65.76%
     lat (usec): 250=33.16%, 500=0.29%, 750=0.05%, 1000=0.02%
     lat (msec): 2=0.01%, 4=0.01%, 10=0.01%
zufälligschreiben: (groupid=2, jobs=1): err= 0: pid=6958
  write: io=2048.0MB, bw=36083KB/s, iops=6594 , runt= 58121msec
    slat (usec): min=6 , max=1952 , avg=31.79, stdev= 9.51
    clat (usec): min=0 , max=19882 , avg=113.47, stdev=216.71
     lat (usec): min=44 , max=19949 , avg=145.84, stdev=217.32
    bw (KB/s) : min=14000, max=58580, per=100.12%, avg=36125.51, stdev=10544.88
  cpu          : usr=5.66%, sys=23.66%, ctx=386270, majf=0, minf=17
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued r/w/d: total=0/383305/0, short=0/0/0
     lat (usec): 2=0.01%, 4=0.01%, 10=0.01%, 20=0.01%, 50=1.92%
     lat (usec): 100=61.91%, 250=30.73%, 500=5.22%, 750=0.12%, 1000=0.04%
     lat (msec): 2=0.03%, 4=0.01%, 10=0.01%, 20=0.01%
sequentiellschreiben: (groupid=3, jobs=1): err= 0: pid=6959
  write: io=2048.0MB, bw=63465KB/s, iops=7050 , runt= 33044msec
    slat (usec): min=6 , max=2854 , avg=30.54, stdev=11.23
    clat (usec): min=1 , max=19371 , avg=104.68, stdev=190.45
     lat (usec): min=43 , max=19417 , avg=135.81, stdev=191.17
    bw (KB/s) : min=22984, max=68224, per=100.07%, avg=63511.21, stdev=5443.51
  cpu          : usr=6.16%, sys=24.62%, ctx=234687, majf=0, minf=19
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued r/w/d: total=0/232969/0, short=0/0/0
     lat (usec): 2=0.01%, 4=0.01%, 10=0.01%, 50=0.68%, 100=51.92%
     lat (usec): 250=46.97%, 500=0.22%, 750=0.07%, 1000=0.07%
     lat (msec): 2=0.04%, 4=0.01%, 10=0.01%, 20=0.01%

Run status group 0 (all jobs):
   READ: io=1322.9MB, aggrb=22563KB/s, minb=23104KB/s, maxb=23104KB/s, mint=60001msec, maxt=60001msec

Run status group 1 (all jobs):
   READ: io=2048.0MB, aggrb=72598KB/s, minb=74340KB/s, maxb=74340KB/s, mint=28887msec, maxt=28887msec

Run status group 2 (all jobs):
  WRITE: io=2048.0MB, aggrb=36082KB/s, minb=36948KB/s, maxb=36948KB/s, mint=58121msec, maxt=58121msec

Run status group 3 (all jobs):
  WRITE: io=2048.0MB, aggrb=63465KB/s, minb=64988KB/s, maxb=64988KB/s, mint=33044msec, maxt=33044msec

Disk stats (read/write):
  dm-2: ios=424704/615629, merge=0/0, ticks=70028/59768, in_queue=129796, util=71.90%, aggrios=424704/616498, aggrmerge=0/60, aggrticks=69568/60584, aggrin_queue=128920, aggrutil=71.33%
    sda: ios=424704/616498, merge=0/60, ticks=69568/60584, in_queue=128920, util=71.33%
[global]
ioengine=libaio
direct=1
filename=testdatei
size=2g
bs=4m

# Vollständig zufällige Daten für SSDs, die komprimieren
refill_buffers=1

[schreiben]
stonewall
rw=write

[lesen]
stonewall
rw=read
[global]
ioengine=libaio
direct=1
filename=testdatei
size=2g
bs=4m

[schreiben]
stonewall
rw=write

[lesen]
stonewall
rw=read
schreiben: (g=0): rw=write, bs=4M-4M/4M-4M, ioengine=libaio, iodepth=1
lesen: (g=1): rw=read, bs=4M-4M/4M-4M, ioengine=libaio, iodepth=1
fio 1.57
Starting 2 processes
schreiben: Laying out IO file(s) (1 file(s) / 2048MB)

schreiben: (groupid=0, jobs=1): err= 0: pid=5855
  write: io=2048.0MB, bw=220150KB/s, iops=53 , runt=  9526msec
    slat (usec): min=239 , max=1328 , avg=452.88, stdev=182.05
    clat (msec): min=17 , max=22 , avg=18.14, stdev= 1.10
     lat (msec): min=17 , max=23 , avg=18.59, stdev= 1.12
    bw (KB/s) : min=216422, max=223128, per=100.08%, avg=220331.94, stdev=2205.18
  cpu          : usr=0.17%, sys=2.44%, ctx=557, majf=0, minf=19
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued r/w/d: total=0/512/0, short=0/0/0

     lat (msec): 20=93.55%, 50=6.45%
lesen: (groupid=1, jobs=1): err= 0: pid=5856
  read : io=2048.0MB, bw=267460KB/s, iops=65 , runt=  7841msec
    slat (usec): min=251 , max=4071 , avg=581.06, stdev=300.62
    clat (usec): min=14517 , max=17700 , avg=14724.38, stdev=340.74
     lat (usec): min=14906 , max=20094 , avg=15306.37, stdev=451.23
    bw (KB/s) : min=264000, max=270336, per=100.07%, avg=267634.87, stdev=1787.07
  cpu          : usr=0.10%, sys=3.78%, ctx=569, majf=0, minf=1045
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued r/w/d: total=512/0/0, short=0/0/0

     lat (msec): 20=100.00%

Run status group 0 (all jobs):
  WRITE: io=2048.0MB, aggrb=220150KB/s, minb=225433KB/s, maxb=225433KB/s, mint=9526msec, maxt=9526msec

Run status group 1 (all jobs):
   READ: io=2048.0MB, aggrb=267459KB/s, minb=273878KB/s, maxb=273878KB/s, mint=7841msec, maxt=7841msec

Disk stats (read/write):
  dm-2: ios=3991/4196, merge=0/0, ticks=33880/43220, in_queue=77124, util=96.78%, aggrios=4112/4143, aggrmerge=0/56, aggrticks=34944/42968, aggrin_queue=77904, aggrutil=96.79%
    sda: ios=4112/4143, merge=0/56, ticks=34944/42968, in_queue=77904, util=96.79%

Reply to: