Test rychlosti ZFS s kompresí a ZIL

Nějakou dobu se mi doma povalují disky ze starších serverů, povětšinou SAS 73GB 15k RPM. Pro tyhle disky už v dnešní době nemám moc využití, do serverů jsou prostě malé. Chtěl jsem ale vyzkoušet, zda by mohly efektivně sloužit alespoň jako ZIL u ZFS a být mi tak k něčemu dobré.

Testy jsem prováděl na náledujícím stroji s nainstalovaným SmartOS

Fujitsu-Siemens Primergy RX300 S3 D2119
2x Quad-core Xeon (bez HT, konkrétní typ ještě doplním)
12 Gb DDR2 FBDIMM
2x Fujitsu 146GB 10k RPM MAX3147RC (zpool)
2x Seagate 73GB 15k RPM ST373455SS (ZIL)

První sada testů probíhala nad mirrorem ze 146GB disků bez ZILu:

pool: zones
 state: ONLINE
  scan: resilvered 4.00G in 0h0m with 0 errors on Sun Feb 24 21:56:41 2013
config:

        NAME        STATE     READ WRITE CKSUM
        zones       ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c0t0d0  ONLINE       0     0     0
            c0t1d0  ONLINE       0     0     0

errors: No known data errors

Druhá sada testů probíhala nad stejným poolem s přidaným mirrorem ze 73GB disků jako ZILem:

pool: zones
 state: ONLINE
  scan: resilvered 4.00G in 0h0m with 0 errors on Sun Feb 24 21:56:41 2013
config:

        NAME        STATE     READ WRITE CKSUM
        zones       ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c0t0d0  ONLINE       0     0     0
            c0t1d0  ONLINE       0     0     0
        logs
          mirror-1  ONLINE       0     0     0
            c0t3d0  ONLINE       0     0     0
            c0t4d0  ONLINE       0     0     0

errors: No known data errors

První test v každé sadě probíhal s vypnutou kompresí:

zfs set compression=off zones

Druhý test v každé sadě probíhal se zapnutou kompresí GZIP na nejvyšší level:

zfs set compression=gzip-9 zones

Testoval jsem pomocí bonnie++ s následujícím nastavením:

bonnie++ -d /zones/bonnie -u 0 -n 256

Pro snadnější porovnání výsledků jsem sestavil přehlednou tabulku:

ZFS ZIL compression test results

Co si z toho všeho vyvodit?

  • Použít 15k RPM SAS jako ZIL pro 10k RPM SAS nemá cenu. Možná by výledky byly lepší, kdyby byl pool ze 7200 RPM SATA disků, ale pochybuju o tom. Možná by byly lepší, kdyby bylo více konkurentních zápisu, ale dělat další testy se mi už nechce.
  • To že komprese disku zrychluje jsem věděl už předtím, ale že je to o tolik, to jsem opravdu netušil. Ačkoliv z raw výsledků je patrný slušný nárůst využití CPU, komprimovat pool se jednoznačně vyplatí.
  • Pro někoho může být matoucí, že se komprimovaná data čtou a zapisují rychleji, než data nekomprimovaná. Je to z toho důvodu, že disk díky kompresi musí provést méně seeků, ať už při čtení nebo zápisu. Na dnešních CPU je overhead komprese opravdu malý, výkon serveru jako celku to tedy ovlivní spíše pozitivně.
  • Pozor na některá SSD, která by jste chtěli použít pro pool. Často si data komprimují samy, aby méně opotřebovávaly paměťové čipy. V takovém případě je komprese na poolu spíše kontraproduktivní.

ZIL: off, komprese: off

Version 1.03e       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
test            24G 69331  58 68951  14 26294   7 47317  45 55544   6  1362   5
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                256 13680  97 43499  68 10799  49 17940  97 42623  67 24912  98

ZIL: off, komprese: gzip-9

Version 1.03e       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
test            24G 118003 99 270385 56 104136 29 73052  69 197714 20  9246  40
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                256 14627  99 62096  99 26730  99 17557  99 73472  99 25722  99

ZIL: on, komprese: off

Version 1.03e       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
test            24G 69493  59 67928  14 26515   7 47986  46 55534   6 908.3   2
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                256 16239  99 42565  98 26451  99 17479  99 72271  99 25860  99

ZIL: on, komprese: off

Version 1.03e       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
test            24G 117788 99 272982 57 105002 30 73069  69 197627 20 10390  41
                    ------Sequential Create------ --------Random Create--------
                    -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                256 14035  98 69112  99 26849  99 18608  99 65876  93 25567  99

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.