LINUX.ORG.RU

ZFS: zvol on ssd - низкая производительность (по сравнению с LVM)

 , , , ,


1

5

Реально ли, при использовании SSD, затюнить ZFS так, что бы zvol выдавал результаты, схожие с LVM (на тех же дисках)?

Буду благодарен ссылкам на истории успеха, либо замечаниям по конфигурации и тестам.

Готов дать более подробную информацию (спрашивайте) или провести ещё тесты (давайте ваши предложения).

Результаты тестов:

  • LVM (завершился полностью):

    • read : io=102400MB, bw=123902KB/s, iops=30975, runt=846292msec
      • clat (usec): min=55, max=30008, avg=1027.43, stdev=708.63
    • write: io=102400MB, bw=114611KB/s, iops=28652, runt=914901msec
      • clat (usec): min=73, max=31133, avg=1111.09, stdev=689.31
  • ZFS (я не выдержал и нажал CTRL+C до окончания теста):

    • read : io=34590MB, bw=50676KB/s, iops=12669, runt=698962msec
      • clat (usec): min=2, max=1259.5K, avg=2521.13, stdev=22789.39
    • write: io=42635MB, bw=62461KB/s, iops=15615, runt=698959msec
      • clat (usec): min=28, max=1262.7K, avg=2044.76, stdev=20667.92

Настройки fio:

[readtest]
blocksize=4k
filename=/dev/.....
rw=randread
direct=1
buffered=0
ioengine=libaio
iodepth=32
[writetest]
blocksize=4k
filename=/dev/....
rw=randwrite
direct=1
buffered=0
ioengine=libaio
iodepth=32

Железо:

  • Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz x1
  • 64 Гб ОЗУ (51 свободно)
  • SSD: Intel SSDSC2BA200G4
  • Система почти простаивает (load average < 1)

Версии софта:

  • proxmox 5.3 (сейчас обновиться до 5.4 не готов).
  • linux 4.15.18-10-pve
  • zfs 0.7.12-1 (cat /sys/module/zfs/version)
  • zfsutils-linux 0.7.12-pve1~bpo1
  • fio-2.16

Параметры zfs:

  • zfs_arc_max: 0
  • не стал писать другие параметры, ибо <cut></cut> не срабатывает в форуме

Настройки пула и zvol:

  • ashift=12
  • primarycache=metadata
  • volblocksize=4K
  • checksum=off
  • compression=off
  • logbias=throughput (logbias=latency пробовал, результаты чуть хуже)
  • dedup=off
  • sync=standard

Настройки lvm: по-умолчанию

UPD: идея в том, что бы понять, какая будет максимальная производительность у ZFS volume (относительно raw disk либо LVM). Понятно, что COW медленней, чем не COW. Вопрос в том, какую производительность можно выжать из COW.

★★★★★

Ответ на: В тему приглашаются специалисты по ZFS от Harliff

Вот он я (тем более я подписан на соответствующие теги), но хрен его знает, чем я могу тебе помочь. У меня на SSD такой фигни не наблюдается, это всё, что я могу написать по этому поводу.

И да, добавь лучше zol и zfsonlinux, от тега zvol толку нет.

mord0d ()

Кстати, довольно странное соотношение r/w (там два теста запущено параллельно - и read и write):

# zpool iostat ssd_test 60                                                                                                                                               capacity     operations     bandwidth 
pool        alloc   free   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
ssd_test    42.4G   144G    411  1.33K  1.62M  48.6M
ssd_test    42.3G   144G  2.91K  3.90K  11.6M   193M
ssd_test    42.4G   144G  3.19K  4.19K  12.8M   215M
ssd_test    42.4G   144G  2.45K  3.26K  9.79M   160M
ssd_test    42.4G   144G  2.71K  3.41K  10.9M   172M
ssd_test    42.4G   144G  2.48K  3.32K  9.93M   166M
ssd_test    42.4G   144G  2.83K  3.60K  11.3M   185M
ssd_test    42.4G   144G  2.78K  3.65K  11.1M   182M
ssd_test    42.4G   144G  2.92K  3.85K  11.7M   189M
ssd_test    42.4G   144G  2.79K  3.67K  11.2M   183M
ssd_test    42.4G   144G  2.61K  3.46K  10.5M   166M
ssd_test    43.3G   143G  2.76K  3.56K  11.1M   175M
ssd_test    45.9G   140G  2.78K  3.57K  11.1M   177M
ssd_test    48.6G   137G  3.03K  3.93K  12.1M   188M
ssd_test    51.2G   135G  2.84K  3.73K  11.4M   186M
ssd_test    53.8G   132G  2.70K  3.28K  10.8M   198M
ssd_test    55.9G   130G  2.52K  3.18K  10.1M   190M
ssd_test    57.8G   128G  2.25K  2.69K  9.02M   172M
ssd_test    59.7G   126G  2.38K  2.96K  9.53M   186M
ssd_test    62.0G   124G  2.96K  3.43K  11.9M   217M
ssd_test    63.9G   122G  2.43K  3.01K  9.73M   182M
ssd_test    66.0G   120G  2.48K  3.05K  9.90M   193M
ssd_test    67.9G   118G  2.38K  2.81K  9.50M   182M
ssd_test    69.8G   116G  2.30K  2.83K  9.22M   176M
ssd_test    71.6G   114G  2.23K  2.65K  8.93M   173M
ssd_test    73.4G   113G  2.24K  2.64K  8.98M   169M
ssd_test    75.3G   111G  2.47K  2.93K  9.88M   178M
ssd_test    77.1G   109G  2.29K  2.76K  9.16M   174M
ssd_test    79.0G   107G  2.38K  2.77K  9.50M   177M
ssd_test    80.8G   105G  2.18K  2.57K  8.72M   164M
ssd_test    82.6G   103G  2.30K  2.65K  9.20M   170M
ssd_test    84.6G   101G  2.61K  2.94K  10.4M   193M
ssd_test    86.4G  99.6G  2.18K  2.48K  8.73M   169M
ssd_test    88.2G  97.8G  2.16K  2.59K  8.64M   169M
ssd_test    90.1G  95.9G  2.58K  3.07K  10.3M   199M
ssd_test    92.2G  93.8G  2.48K  2.92K  9.93M   210M
ssd_test    94.0G  92.0G  2.15K  2.55K  8.58M   182M
ssd_test    96.0G  90.0G  2.23K  2.83K  8.93M   177M
ssd_test    98.8G  87.2G  2.36K  3.24K  9.44M   195M
Harliff ★★★★★ ()
Ответ на: комментарий от mord0d

У меня на SSD такой фигни не наблюдается, это всё, что я могу написать по этому поводу.

То есть, результаты тестов на голом SSD (либо на LVM) совпадают с результатами тестов ZFS?

И да, добавь лучше zol и zfsonlinux, от тега zvol толку нет.

Добавил, спасибо за совет!

Harliff ★★★★★ ()
Ответ на: комментарий от Harliff

либо на LVM

Какой LVM? У меня же FreeBSD.

результаты тестов

Никогда не проводил бенчмарков, так как не вижу в этом смысла: ZFS — единственная файловая система, которая меня всем устраивает (на FreeBSD кроме ZFS и UFS ничего и нет). Но и просадок I/O никогда не ощущал.

mord0d ()
Ответ на: комментарий от Harliff

Завершился тест zfs с iodepth=8

# cat rw-test-zfs2.fio 
[readtest]
blocksize=4k
filename=/dev/zvol/ssd_test/test2
rw=randread
direct=1
buffered=0
ioengine=libaio
iodepth=8
[writetest]
blocksize=4k
filename=/dev/zvol/ssd_test/test2
rw=randwrite
direct=1
buffered=0
ioengine=libaio
iodepth=8
# fio ./rw-test-zfs2.fio
readtest: (g=0): rw=randread, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=8
writetest: (g=0): rw=randwrite, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=8
fio-2.16
Starting 2 processes
Jobs: 1 (f=1): [r(1),_(1)] [100.0% done] [175.4MB/0KB/0KB /s] [44.9K/0/0 iops] [eta 00m:01s]          
readtest: (groupid=0, jobs=1): err= 0: pid=24553: Sun May  5 05:26:13 2019
  read : io=102400MB, bw=34602KB/s, iops=8650, runt=3030357msec
    slat (usec): min=2, max=295960, avg= 4.05, stdev=57.96
    clat (usec): min=0, max=302127, avg=919.54, stdev=2413.24
     lat (usec): min=7, max=302132, avg=923.67, stdev=2414.31
    clat percentiles (usec):
     |  1.00th=[   15],  5.00th=[   21], 10.00th=[   66], 20.00th=[  185],
     | 30.00th=[  197], 40.00th=[  207], 50.00th=[  215], 60.00th=[  225],
     | 70.00th=[  243], 80.00th=[ 1352], 90.00th=[ 3248], 95.00th=[ 4448],
     | 99.00th=[ 6944], 99.50th=[ 7968], 99.90th=[10560], 99.95th=[12480],
     | 99.99th=[102912]
    lat (usec) : 2=0.01%, 4=0.01%, 10=0.01%, 20=4.24%, 50=3.13%
    lat (usec) : 100=6.38%, 250=58.39%, 500=5.02%, 750=0.61%, 1000=0.71%
    lat (msec) : 2=4.94%, 4=10.04%, 10=6.39%, 20=0.10%, 50=0.01%
    lat (msec) : 100=0.01%, 250=0.03%, 500=0.01%
  cpu          : usr=2.44%, sys=5.63%, ctx=20439271, majf=0, minf=15
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=100.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.1%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued    : total=r=26214400/w=0/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
     latency   : target=0, window=0, percentile=100.00%, depth=8
writetest: (groupid=0, jobs=1): err= 0: pid=24554: Sun May  5 05:26:13 2019
  write: io=102400MB, bw=40290KB/s, iops=10072, runt=2602596msec
    slat (usec): min=2, max=4145, avg= 4.09, stdev= 4.32
    clat (usec): min=1, max=1853.5K, avg=789.12, stdev=21286.04
     lat (usec): min=14, max=1853.5K, avg=793.29, stdev=21286.04
    clat percentiles (usec):
     |  1.00th=[   18],  5.00th=[   22], 10.00th=[   25], 20.00th=[   32],
     | 30.00th=[   73], 40.00th=[   96], 50.00th=[  239], 60.00th=[  362],
     | 70.00th=[  470], 80.00th=[  588], 90.00th=[  740], 95.00th=[  860],
     | 99.00th=[ 1128], 99.50th=[ 1432], 99.90th=[ 4192], 99.95th=[104960],
     | 99.99th=[1204224]
    lat (usec) : 2=0.01%, 4=0.01%, 10=0.01%, 20=2.35%, 50=22.92%
    lat (usec) : 100=15.30%, 250=10.20%, 500=22.00%, 750=17.63%, 1000=7.61%
    lat (msec) : 2=1.69%, 4=0.18%, 10=0.02%, 20=0.01%, 50=0.01%
    lat (msec) : 100=0.01%, 250=0.03%, 500=0.01%, 750=0.01%, 1000=0.01%
    lat (msec) : 2000=0.02%
  cpu          : usr=1.98%, sys=5.81%, ctx=12659979, majf=0, minf=8
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=100.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.1%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued    : total=r=0/w=26214400/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
     latency   : target=0, window=0, percentile=100.00%, depth=8

Run status group 0 (all jobs):
   READ: io=102400MB, aggrb=34602KB/s, minb=34602KB/s, maxb=34602KB/s, mint=3030357msec, maxt=3030357msec
  WRITE: io=102400MB, aggrb=40289KB/s, minb=40289KB/s, maxb=40289KB/s, mint=2602596msec, maxt=2602596msec
fio ./rw-test-zfs2.fio  129.17s user 325.63s system 15% cpu 50:29.71 total
Harliff ★★★★★ ()
Ответ на: комментарий от Harliff

Думаю, сам факт того, что ZFS отлично работает во FreeBSD, мне, кроме веры в светлое будущее, ничего не даст…

Учитывая, что уже в 13.0-CURRENT они предоставляют экспериментальные билды на zfsonlinux, вполне говорит о том, что в FreeBSD Foundation верят в OpenZFS. Если они перейдут на zfsonlinux, они туда вложат силы и, возможно, деньги, так что будущее вполне светлое, и не такое уж далёкое.

mord0d ()
Ответ на: комментарий от mord0d

Да, что-то маловато.

Сейчас тот же тест гоняется на LVM, посмотрим на результат.

Похоже на китайский noname дата-провод и/или SATA2.

Не настолько всё плохо :) Всё-таки с 10kiops и со средней latency до милисекунды можно жить...

Harliff ★★★★★ ()
Ответ на: Завершился тест zfs с iodepth=8 от Harliff

Завершился тест lvm с iodepth=8

# cat rw-test-lvm.fio 
[readtest]
blocksize=4k
filename=/dev/vg_test/test
rw=randread
direct=1
buffered=0
ioengine=libaio
iodepth=8
[writetest]
blocksize=4k
filename=/dev/vg_test/test
rw=randwrite
direct=1
buffered=0
ioengine=libaio
iodepth=8
# fio rw-test-lvm.fio 
readtest: (g=0): rw=randread, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=8
writetest: (g=0): rw=randwrite, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=8
fio-2.16
Starting 2 processes
Jobs: 1 (f=1): [r(1),_(1)] [99.9% done] [185.3MB/0KB/0KB /s] [47.5K/0/0 iops] [eta 00m:01s]        
readtest: (groupid=0, jobs=1): err= 0: pid=21184: Sun May  5 05:46:12 2019
  read : io=102400MB, bw=98931KB/s, iops=24732, runt=1059906msec
    slat (usec): min=3, max=636, avg= 5.83, stdev= 2.56
    clat (usec): min=85, max=29656, avg=316.55, stdev=448.81
     lat (usec): min=111, max=29664, avg=322.46, stdev=449.26
    clat percentiles (usec):
     |  1.00th=[  117],  5.00th=[  126], 10.00th=[  133], 20.00th=[  143],
     | 30.00th=[  151], 40.00th=[  161], 50.00th=[  171], 60.00th=[  191],
     | 70.00th=[  282], 80.00th=[  334], 90.00th=[  438], 95.00th=[ 1012],
     | 99.00th=[ 2736], 99.50th=[ 2960], 99.90th=[ 3216], 99.95th=[ 3280],
     | 99.99th=[ 4704]
    lat (usec) : 100=0.01%, 250=67.84%, 500=23.24%, 750=2.03%, 1000=1.82%
    lat (msec) : 2=2.50%, 4=2.55%, 10=0.01%, 20=0.01%, 50=0.01%
  cpu          : usr=8.47%, sys=18.39%, ctx=16038484, majf=0, minf=16
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=100.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.1%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued    : total=r=26214400/w=0/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
     latency   : target=0, window=0, percentile=100.00%, depth=8
writetest: (groupid=0, jobs=1): err= 0: pid=21185: Sun May  5 05:46:12 2019
  write: io=102400MB, bw=151349KB/s, iops=37837, runt=692820msec
    slat (usec): min=2, max=306, avg= 5.30, stdev= 2.36
    clat (usec): min=41, max=27252, avg=205.06, stdev=65.15
     lat (usec): min=56, max=27258, avg=210.43, stdev=65.13
    clat percentiles (usec):
     |  1.00th=[  151],  5.00th=[  163], 10.00th=[  165], 20.00th=[  171],
     | 30.00th=[  181], 40.00th=[  191], 50.00th=[  201], 60.00th=[  211],
     | 70.00th=[  223], 80.00th=[  233], 90.00th=[  249], 95.00th=[  266],
     | 99.00th=[  306], 99.50th=[  318], 99.90th=[  414], 99.95th=[  548],
     | 99.99th=[ 2352]
    lat (usec) : 50=0.01%, 100=0.01%, 250=90.86%, 500=9.07%, 750=0.03%
    lat (usec) : 1000=0.01%
    lat (msec) : 2=0.01%, 4=0.02%, 10=0.01%, 50=0.01%
  cpu          : usr=15.16%, sys=26.16%, ctx=21211096, majf=0, minf=8
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=100.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.1%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued    : total=r=0/w=26214400/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
     latency   : target=0, window=0, percentile=100.00%, depth=8

Run status group 0 (all jobs):
   READ: io=102400MB, aggrb=98931KB/s, minb=98931KB/s, maxb=98931KB/s, mint=1059906msec, maxt=1059906msec
  WRITE: io=102400MB, aggrb=151348KB/s, minb=151348KB/s, maxb=151348KB/s, mint=692820msec, maxt=692820msec
fio rw-test-lvm.fio  196.34s user 377.12s system 54% cpu 17:40.01 total
Harliff ★★★★★ ()
Ответ на: комментарий от Harliff

Про native encryption давно известно (я свалил с GNU/Linux, когда у меня на борту крутилась zfsonlinux из git master/HEAD (да, я псих)), а вот device removal даже не понятно, что оно такое. В любом случае пусть пилят, хуже от лишних фич всё равно никому не станет. Учитывая, что ребята с головой дружат, ломать что-то глобально они точно не станут.

mord0d ()
Ответ на: комментарий от Harliff

Тест zfs на /dev/sdb (где тестировал до этого lvm)...

~/fio/rw-test-depth-8 # fio ./rw-test-zfs2.fio                                                                                                              
readtest: (g=0): rw=randread, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=8
writetest: (g=0): rw=randwrite, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=8
fio-2.16
Starting 2 processes
Jobs: 1 (f=1): [r(1),_(1)] [99.9% done] [174.2MB/0KB/0KB /s] [44.6K/0/0 iops] [eta 00m:02s]        
readtest: (groupid=0, jobs=1): err= 0: pid=17037: Sun May  5 06:42:41 2019
  read : io=102400MB, bw=41837KB/s, iops=10459, runt=2506328msec
    slat (usec): min=1, max=5036, avg= 4.17, stdev= 4.40
    clat (usec): min=0, max=207427, avg=759.50, stdev=2928.52
     lat (usec): min=7, max=207431, avg=763.78, stdev=2928.76
    clat percentiles (usec):
     |  1.00th=[   13],  5.00th=[   16], 10.00th=[   21], 20.00th=[   62],
     | 30.00th=[  124], 40.00th=[  197], 50.00th=[  211], 60.00th=[  221],
     | 70.00th=[  237], 80.00th=[  354], 90.00th=[ 2608], 95.00th=[ 3760],
     | 99.00th=[ 6176], 99.50th=[ 7200], 99.90th=[10432], 99.95th=[100864],
     | 99.99th=[103936]
    lat (usec) : 2=0.01%, 4=0.01%, 10=0.06%, 20=8.81%, 50=7.58%
    lat (usec) : 100=11.67%, 250=46.67%, 500=5.80%, 750=0.68%, 1000=0.80%
    lat (msec) : 2=5.04%, 4=8.67%, 10=4.09%, 20=0.05%, 50=0.01%
    lat (msec) : 100=0.01%, 250=0.06%
  cpu          : usr=2.72%, sys=6.82%, ctx=18518361, majf=0, minf=16
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=100.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.1%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued    : total=r=26214400/w=0/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
     latency   : target=0, window=0, percentile=100.00%, depth=8
writetest: (groupid=0, jobs=1): err= 0: pid=17038: Sun May  5 06:42:41 2019
  write: io=102400MB, bw=47904KB/s, iops=11976, runt=2188892msec
    slat (usec): min=2, max=4064, avg= 4.17, stdev= 4.26
    clat (usec): min=1, max=2039.4K, avg=662.80, stdev=18673.45
     lat (usec): min=14, max=2039.5K, avg=667.06, stdev=18673.46
    clat percentiles (usec):
     |  1.00th=[   17],  5.00th=[   21], 10.00th=[   24], 20.00th=[   31],
     | 30.00th=[   70], 40.00th=[   90], 50.00th=[  149], 60.00th=[  241],
     | 70.00th=[  370], 80.00th=[  490], 90.00th=[  676], 95.00th=[  836],
     | 99.00th=[ 1432], 99.50th=[ 2160], 99.90th=[100864], 99.95th=[103936],
     | 99.99th=[1056768]
    lat (usec) : 2=0.01%, 4=0.01%, 10=0.01%, 20=2.85%, 50=24.13%
    lat (usec) : 100=15.73%, 250=18.00%, 500=19.94%, 750=12.12%, 1000=4.63%
    lat (msec) : 2=2.04%, 4=0.39%, 10=0.07%, 20=0.01%, 50=0.01%
    lat (msec) : 100=0.01%, 250=0.07%, 500=0.01%, 750=0.01%, 1000=0.01%
    lat (msec) : 2000=0.01%, >=2000=0.01%
  cpu          : usr=2.25%, sys=6.79%, ctx=10904659, majf=0, minf=9
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=100.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.1%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued    : total=r=0/w=26214400/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
     latency   : target=0, window=0, percentile=100.00%, depth=8

Run status group 0 (all jobs):
   READ: io=102400MB, aggrb=41837KB/s, minb=41837KB/s, maxb=41837KB/s, mint=2506328msec, maxt=2506328msec
  WRITE: io=102400MB, aggrb=47904KB/s, minb=47904KB/s, maxb=47904KB/s, mint=2188892msec, maxt=2188892msec
fio ./rw-test-zfs2.fio  120.68s user 322.81s system 17% cpu 41:45.90 total
Harliff ★★★★★ ()
Последнее исправление: Harliff (всего исправлений: 1)
Ответ на: В тему приглашаются специалисты по ZFS от Harliff

Уже тыщу раз писали, что у ZoL есть проблемы в линуксе из-за несовместимости лицензий и как следствие невозможности ее по человечески интегрировать в ядро. Ставь FreeBSD и тогда сравнивай на своем конкретном ворклоде а не в синтетике.

P.S: результаты тестов похороникса.

iron ★★★★★ ()
Ответ на: комментарий от iron

Причем здесь лицухи, конечному потребителю на это ложить, весь линух построен изначально на костылях и палках которые со временем обрагородились и вросли в него.

anonymous ()
Ответ на: комментарий от Dimez

primarycache=metadata

Попробуй вернуть в all

ОК. Пересоздаю:

zfs create -V 100G ssd_test/test3 -o volblocksize=4K \
-o checksum=off -o logbias=throughput -o compress=off

И попробуй выключить кэш в ssd.

Как ни странно, у меня не получилось (контроллер Adaptec ASR8405):

# arcconf setcache 1 device 0 5 wt

Controllers found: 1
Feature not supported on RAW devices: The requested function failed.

Command failed.

Не понимаю, действительно ли там кэш активен, про который пишет контроллер:

# arcconf getconfig 1 pd
      Device #1
         Device is a Hard drive
         State                              : Raw (Pass Through)
         Block Size                         : 512 Bytes
         Supported                          : Yes
         Transfer Speed                     : SATA 12.0 Gb/s
         Reported Channel,Device(T:L)       : 0,5(5:0)
         Reported Location                  : Enclosure 0, Slot 1
         Reported ESD(T:L)                  : 2,0(0:0)
         Vendor                             : ATA
         Model                              : INTEL SSDSC2BA20
         Firmware                           : G2010140
         Serial number                      : BTHV616302SK200MGN
         Reserved Size                      : 0 KB
         Used Size                          : 0 MB
         Unused Size                        : 190782 MB
         Total Size                         : 190782 MB
         Write Cache                        : Enabled (write-back)
         FRU                                : None
         S.M.A.R.T.                         : No
         S.M.A.R.T. warnings                : 0
         Power State                        : Full rpm
         Supported Power States             : Full power,Powered off
         SSD                                : Yes
         NCQ status                         : Enabled
Harliff ★★★★★ ()
Ответ на: комментарий от Dimez

primarycache=metadata

Попробуй вернуть в all

Вернул. Чтение улучшилось в разы (и обогнало LVM). С записью, правда, проблемы остаются. Позже попробую с logbias=latency...

# fio rw-test-zfs3.fio
readtest: (g=0): rw=randread, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=8
writetest: (g=0): rw=randwrite, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=8
fio-2.16
Starting 2 processes
Jobs: 1 (f=1): [_(1),f(1)] [100.0% done] [0KB/0KB/0KB /s] [0/0/0 iops] [eta 00m:00s]
readtest: (groupid=0, jobs=1): err= 0: pid=1205: Sun May  5 20:46:23 2019
  read : io=102400MB, bw=181496KB/s, iops=45374, runt=577739msec
    slat (usec): min=1, max=21658, avg= 4.32, stdev= 6.57
    clat (usec): min=0, max=425349, avg=171.06, stdev=1206.24
     lat (usec): min=7, max=425353, avg=175.45, stdev=1206.28
    clat percentiles (usec):
     |  1.00th=[   13],  5.00th=[   15], 10.00th=[   18], 20.00th=[   24],
     | 30.00th=[   32], 40.00th=[   49], 50.00th=[   62], 60.00th=[   74],
     | 70.00th=[  101], 80.00th=[  151], 90.00th=[  225], 95.00th=[  314],
     | 99.00th=[ 3088], 99.50th=[ 4016], 99.90th=[ 5856], 99.95th=[ 6624],
     | 99.99th=[76288]
    lat (usec) : 2=0.01%, 4=0.01%, 10=0.07%, 20=12.92%, 50=27.23%
    lat (usec) : 100=29.51%, 250=22.29%, 500=4.85%, 750=0.44%, 1000=0.20%
    lat (msec) : 2=0.73%, 4=1.24%, 10=0.49%, 20=0.01%, 50=0.01%
    lat (msec) : 100=0.01%, 250=0.01%, 500=0.01%
  cpu          : usr=7.29%, sys=25.53%, ctx=8553085, majf=1, minf=25
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=100.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.1%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued    : total=r=26214400/w=0/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
     latency   : target=0, window=0, percentile=100.00%, depth=8
writetest: (groupid=0, jobs=1): err= 0: pid=1206: Sun May  5 20:46:23 2019
  write: io=102400MB, bw=49774KB/s, iops=12443, runt=2106671msec
    slat (usec): min=1, max=4143, avg= 4.63, stdev= 5.66
    clat (usec): min=0, max=2305.5K, avg=637.18, stdev=18033.53
     lat (usec): min=13, max=2305.6K, avg=641.89, stdev=18033.52
    clat percentiles (usec):
     |  1.00th=[   19],  5.00th=[   23], 10.00th=[   27], 20.00th=[   34],
     | 30.00th=[   63], 40.00th=[   84], 50.00th=[  171], 60.00th=[  290],
     | 70.00th=[  410], 80.00th=[  548], 90.00th=[  732], 95.00th=[  892],
     | 99.00th=[ 1272], 99.50th=[ 1672], 99.90th=[ 5792], 99.95th=[101888],
     | 99.99th=[1089536]
    lat (usec) : 2=0.01%, 4=0.01%, 10=0.01%, 20=1.55%, 50=26.46%
    lat (usec) : 100=15.72%, 250=12.79%, 500=20.42%, 750=13.68%, 1000=6.41%
    lat (msec) : 2=2.58%, 4=0.23%, 10=0.10%, 20=0.01%, 50=0.01%
    lat (msec) : 100=0.01%, 250=0.02%, 500=0.01%, 750=0.01%, 1000=0.01%
    lat (msec) : 2000=0.01%, >=2000=0.01%
  cpu          : usr=2.51%, sys=7.49%, ctx=10960464, majf=9, minf=8
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=100.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.1%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued    : total=r=0/w=26214400/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
     latency   : target=0, window=0, percentile=100.00%, depth=8

Run status group 0 (all jobs):
   READ: io=102400MB, aggrb=181496KB/s, minb=181496KB/s, maxb=181496KB/s, mint=577739msec, maxt=577739msec
  WRITE: io=102400MB, aggrb=49774KB/s, minb=49774KB/s, maxb=49774KB/s, mint=2106671msec, maxt=2106671msec
fio rw-test-zfs3.fio  97.97s user 308.28s system 19% cpu 35:12.95 total
Harliff ★★★★★ ()
Последнее исправление: Harliff (всего исправлений: 1)

Странное решение отключить checksum, ну да ладно. А чем ARC не угодил-то? Оставил бы гигабайта 2-4.

Проверь, что ядро не повесило на SSD никаких планировщиков I/O — обязательно должен быть noop.

spijet ★★★ ()
Ответ на: комментарий от spijet

Странное решение отключить checksum, ну да ладно

Хотел понять, какая у zfs volume будет максимальная производительность. В продакшене, само собой, чексуммы будут использоваться.

А чем ARC не угодил-то? Оставил бы гигабайта 2-4.

Я его вообще не ограничивал. zfs_arc_max: 0 – значит лимита нет.

Проверь, что ядро не повесило на SSD никаких планировщиков I/O — обязательно должен быть noop.

Проверил. Везде noop.

Harliff ★★★★★ ()
Последнее исправление: Harliff (всего исправлений: 2)
Ответ на: комментарий от Dimez

И попробуй выключить кэш в ssd.

Выключил (sdparm -s WCE=0,RCD=0 /dev/sdb). Вот результаты:

# fio rw-test-zfs3.fio
readtest: (g=0): rw=randread, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=8
writetest: (g=0): rw=randwrite, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=8
fio-2.16
Starting 2 processes
Jobs: 1 (f=1): [_(1),f(1)] [100.0% done] [0KB/0KB/0KB /s] [0/0/0 iops] [eta 00m:00s]
readtest: (groupid=0, jobs=1): err= 0: pid=2673: Mon May  6 01:09:53 2019
  read : io=102400MB, bw=350484KB/s, iops=87621, runt=299179msec
    slat (usec): min=2, max=173091, avg= 4.03, stdev=34.01
    clat (usec): min=1, max=207923, avg=86.17, stdev=984.85
     lat (usec): min=7, max=207926, avg=90.32, stdev=985.49
    clat percentiles (usec):
     |  1.00th=[   14],  5.00th=[   18], 10.00th=[   21], 20.00th=[   25],
     | 30.00th=[   29], 40.00th=[   36], 50.00th=[   52], 60.00th=[   64],
     | 70.00th=[   76], 80.00th=[  109], 90.00th=[  173], 95.00th=[  225],
     | 99.00th=[  362], 99.50th=[  474], 99.90th=[ 1112], 99.95th=[ 1688],
     | 99.99th=[ 6304]
    bw (KB  /s): min=   19, max=4096000, per=28.88%, avg=101225.98, stdev=68526.22
    lat (usec) : 2=0.01%, 4=0.01%, 10=0.02%, 20=7.23%, 50=41.41%
    lat (usec) : 100=29.42%, 250=18.36%, 500=3.12%, 750=0.25%, 1000=0.08%
    lat (msec) : 2=0.08%, 4=0.03%, 10=0.01%, 20=0.01%, 50=0.01%
    lat (msec) : 100=0.01%, 250=0.01%
  cpu          : usr=14.10%, sys=42.36%, ctx=4123857, majf=0, minf=768164
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=100.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.1%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued    : total=r=26214400/w=0/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
     latency   : target=0, window=0, percentile=100.00%, depth=8
writetest: (groupid=0, jobs=1): err= 0: pid=2674: Mon May  6 01:09:53 2019
  write: io=102400MB, bw=44262KB/s, iops=11065, runt=2369011msec
    slat (usec): min=1, max=8735, avg= 4.56, stdev= 5.81
    clat (usec): min=0, max=1915.7K, avg=716.90, stdev=19824.25
     lat (usec): min=13, max=1915.7K, avg=721.62, stdev=19824.25
    clat percentiles (usec):
     |  1.00th=[   19],  5.00th=[   24], 10.00th=[   27], 20.00th=[   36],
     | 30.00th=[   68], 40.00th=[   95], 50.00th=[  195], 60.00th=[  322],
     | 70.00th=[  462], 80.00th=[  620], 90.00th=[  820], 95.00th=[  972],
     | 99.00th=[ 1336], 99.50th=[ 1656], 99.90th=[ 5472], 99.95th=[103936],
     | 99.99th=[1187840]
    bw (KB  /s): min=    0, max=4096000, per=100.00%, avg=52425.41, stdev=59253.39
    lat (usec) : 2=0.01%, 4=0.01%, 10=0.01%, 20=1.26%, 50=24.92%
    lat (usec) : 100=14.45%, 250=13.78%, 500=18.23%, 750=14.36%, 1000=8.57%
    lat (msec) : 2=4.10%, 4=0.19%, 10=0.08%, 20=0.01%, 50=0.01%
    lat (msec) : 100=0.01%, 250=0.03%, 500=0.01%, 750=0.01%, 1000=0.01%
    lat (msec) : 2000=0.02%
  cpu          : usr=2.66%, sys=6.89%, ctx=11914743, majf=0, minf=768158
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=100.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.1%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued    : total=r=0/w=26214400/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
     latency   : target=0, window=0, percentile=100.00%, depth=8

Run status group 0 (all jobs):
   READ: io=102400MB, aggrb=350484KB/s, minb=350484KB/s, maxb=350484KB/s, mint=299179msec, maxt=299179msec
  WRITE: io=102400MB, aggrb=44262KB/s, minb=44262KB/s, maxb=44262KB/s, mint=2369011msec, maxt=2369011msec
fio rw-test-zfs3.fio  174.37s user 291.28s system 19% cpu 40:00.85 total
Harliff ★★★★★ ()
Последнее исправление: Harliff (всего исправлений: 1)

COW

Идея в том, что бы понять, какая будет максимальная производительность у ZFS volume (относительно raw disk либо LVM).

Понятно, что COW медленней, чем не COW. Вопрос в том, какую производительность можно выжать из COW.

В данном случае меня интересует производительность записи в режиме r/w.

Harliff ★★★★★ ()
Последнее исправление: Harliff (всего исправлений: 2)
Ответ на: COW от Harliff

Re: COW

lvm и zfs

Нельзя сравнивать несравнимое! Производительность зависит от настроек, железа, организации массива, наличия отсутствия кэша, объема выделенной памяти и прочих свистоперделок включенных или нет в самой zfs

anonymous ()
Ответ на: комментарий от anonymous

маны почитай, zfs должно иметь прямой доступ к дискам, никаких прокладок в виде рейдов и прочей чепухи.

Увы, на этом сервере такое недоступно. Попробую на другом, где возможно дать прямой доступ к дискам.

Harliff ★★★★★ ()
Ответ на: Re: COW от anonymous

Можно сравнивать. Если что-то работает быстрее в тех же условиях (диск+контроллер = константа), то мы уже получаем верхнюю границу к которой должен стремиться отстающий

futurama ★★★ ()
Ответ на: Re: COW от anonymous

Нельзя сравнивать несравнимое! Производительность зависит от настроек, железа, организации массива, наличия отсутствия кэша, объема выделенной памяти и прочих свистоперделок включенных или нет в самой zfs

Меня интересует предел ZFS и возможности её оптимизации.

Harliff ★★★★★ ()