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:
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