Почему ZFS в Linux не может полностью использовать 8x SSD на экземпляре AWS i2.8xlarge?


12

Я полностью новичок в ZFS, поэтому для начала я решил сделать несколько простых тестов, чтобы понять, как он себя ведет. Я хотел раздвинуть границы его производительности, поэтому я подготовил i2.8xlargeэкземпляр Amazon EC2 (почти 7 долларов в час, время действительно деньги!). Этот экземпляр имеет 8 800 ГБ SSD.

Я сделал fioтест на самих SSD и получил следующий вывод (обрезанный):

$ sudo fio --name randwrite --ioengine=libaio --iodepth=2 --rw=randwrite --bs=4k --size=400G --numjobs=8 --runtime=300 --group_reporting --direct=1 --filename=/dev/xvdb
[trimmed]
  write: io=67178MB, bw=229299KB/s, iops=57324, runt=300004msec
[trimmed]

57K IOPS для случайной записи 4K. Респектабельный.

Затем я создал том ZFS, охватывающий все 8. Сначала у меня был один raidz1vdev со всеми 8 твердотельными накопителями, но я прочитал о причинах, которые mirrorухудшают производительность, поэтому я получил четыре vdevs, например:

$ sudo zpool create testpool mirror xvdb xvdc mirror xvdd xvde mirror xvdf xvdg mirror xvdh xvdi
$ sudo zpool list -v
NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
testpool  2.91T   284K  2.91T         -     0%     0%  1.00x  ONLINE  -
  mirror   744G   112K   744G         -     0%     0%
    xvdb      -      -      -         -      -      -
    xvdc      -      -      -         -      -      -
  mirror   744G    60K   744G         -     0%     0%
    xvdd      -      -      -         -      -      -
    xvde      -      -      -         -      -      -
  mirror   744G      0   744G         -     0%     0%
    xvdf      -      -      -         -      -      -
    xvdg      -      -      -         -      -      -
  mirror   744G   112K   744G         -     0%     0%
    xvdh      -      -      -         -      -      -
    xvdi      -      -      -         -      -      -

Я установил размер записи на 4K и провел свой тест:

$ sudo zfs set recordsize=4k testpool
$ sudo fio --name randwrite --ioengine=libaio --iodepth=2 --rw=randwrite --bs=4k --size=400G --numjobs=8 --runtime=300 --group_reporting --filename=/testpool/testfile --fallocate=none
[trimmed]
  write: io=61500MB, bw=209919KB/s, iops=52479, runt=300001msec
    slat (usec): min=13, max=155081, avg=145.24, stdev=901.21
    clat (usec): min=3, max=155089, avg=154.37, stdev=930.54
     lat (usec): min=35, max=155149, avg=300.91, stdev=1333.81
[trimmed]

Я получаю только 52K IOPS для этого пула ZFS. Это на самом деле немного хуже, чем один SSD.

Я не понимаю, что я делаю здесь не так. Я неправильно настроил ZFS или это плохой тест производительности ZFS?

Обратите внимание, что я использую официальный 64-битный образ CentOS 7 HVM, хотя я обновил ядро ​​4.4.5 elrepo:

$ uname -a
Linux ip-172-31-43-196.ec2.internal 4.4.5-1.el7.elrepo.x86_64 #1 SMP Thu Mar 10 11:45:51 EST 2016 x86_64 x86_64 x86_64 GNU/Linux

Я установил ZFS из репозитория zfs, указанного здесь . У меня версия 0.6.5.5 zfsпакета.

ОБНОВЛЕНИЕ : предложение Per @ ewwhite я попробовал ashift=12и ashift=13:

$ sudo zpool create testpool mirror xvdb xvdc mirror xvdd xvde mirror xvdf xvdg mirror xvdh xvdi -o ashift=12 -f

и

$ sudo zpool create testpool mirror xvdb xvdc mirror xvdd xvde mirror xvdf xvdg mirror xvdh xvdi -o ashift=13 -f

Ничто из этого не имело никакого значения. Из того, что я понимаю, последние биты ZFS достаточно умны, идентифицируя 4K SSD и используя разумные значения по умолчанию.

Однако я заметил, что загрузка процессора резко возрастает. @ Тим предложил это, но я отклонил его, однако, думаю, я не наблюдал за процессором достаточно долго, чтобы это заметить. В этом случае примерно 30 процессорных ядер, а загрузка процессора достигает 80%. Голодный процесс? z_wr_issмного примеров этого.

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

Я не использую raidz, поэтому это не должно быть вычисление четности.

Я сделал, perf topи это показывает большую часть времени ядра, проведенного _raw_spin_unlock_irqrestoreв z_wr_int_4и osq_lockв z_wr_iss.

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

ОБНОВЛЕНИЕ 2 : Согласно @ewwhite и другим предположениям, что именно виртуализированная природа этой среды создает неопределенность производительности, я использовал ее fioдля сравнения случайных записей 4K, распределенных по четырем SSD в среде. Каждый SSD дает ~ 55K IOPS, поэтому я ожидал около 240K IO для четырех из них. Это более или менее то, что я получил:

$ sudo fio --name randwrite --ioengine=libaio --iodepth=8 --rw=randwrite --bs=4k --size=398G --numjobs=8 --runtime=300 --group_reporting --filename=/dev/xvdb:/dev/xvdc:/dev/xvdd:/dev/xvde
randwrite: (g=0): rw=randwrite, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=8
...
randwrite: (g=0): rw=randwrite, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=8
fio-2.1.5
Starting 8 processes
[trimmed]
  write: io=288550MB, bw=984860KB/s, iops=246215, runt=300017msec
    slat (usec): min=1, max=24609, avg=30.27, stdev=566.55
    clat (usec): min=3, max=2443.8K, avg=227.05, stdev=1834.40
     lat (usec): min=27, max=2443.8K, avg=257.62, stdev=1917.54
[trimmed]

Это ясно показывает, что виртуализированная среда может поддерживать IOPS намного выше, чем я вижу. Что-то в том, как реализован ZFS, не дает ему достичь максимальной скорости. Я просто не могу понять, что это такое.


Вы на EC2. Вы получаете столько IOPS, сколько Amazon хочет дать вам.
Майкл Хэмптон

Amazon дает мне около 52K IOPS на каждый SSD, подключенный к этому экземпляру, и есть восемь таких SSD. Из документации Amazon ясно, что экземпляр этого размера - единственный экземпляр, работающий на физическом хосте, где он находится. Кроме того, это локальные твердотельные накопители, а не тома EBS, поэтому нет других рабочих нагрузок, борющихся за пропускную способность ввода-вывода. Это не учитывает производительность, которую я вижу.
Анельсон

Это нагрузка на процессор или ограничение памяти?
Тим

Вы читали эту серию статей? hatim.eu/2014/05/24/… Помогли ли вообще какие-нибудь статьи?
Тим

1
Чтобы исключить фактические недостатки реализации zfsonlinux, я бы попробовал такой же стендовый тест с установкой Solaris 11 на том же экземпляре.
The Wabbit

Ответы:


6

Эта настройка не может быть хорошо настроена. Существуют параметры, необходимые как для файла /etc/modprobe/zfs.conf, так и для значения ashift при использовании твердотельных накопителей

Попробуйте ashift = 12 или 13 и попробуйте снова.


Редактировать:

Это все еще виртуализированное решение, поэтому мы не знаем слишком много о базовом оборудовании или о том, как все взаимосвязано. Я не знаю, что вы получите лучшую производительность от этого решения.


Редактировать:

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

Но помните, что ZFS имеет много настраиваемых настроек, и то, что вы получаете по умолчанию, не близко к вашему варианту использования.

Попробуйте следующее в вашей /etc/modprobe.d/zfs.confи перезагрузите компьютер. Это то, что я использую в своих пулах данных с твердотельным накопителем для серверов приложений. Ваш ashift должен быть 12 или 13. Тест с компрессией = выкл, но используйте сжатие = lz4 в производстве. Установите atime = выкл. Я бы оставил размер записи по умолчанию (128 КБ).

options zfs zfs_vdev_scrub_min_active=48
options zfs zfs_vdev_scrub_max_active=128
options zfs zfs_vdev_sync_write_min_active=64
options zfs zfs_vdev_sync_write_max_active=128
options zfs zfs_vdev_sync_read_min_active=64
options zfs zfs_vdev_sync_read_max_active=128
options zfs zfs_vdev_async_read_min_active=64
options zfs zfs_vdev_async_read_max_active=128
options zfs zfs_top_maxinflight=320
options zfs zfs_txg_timeout=30
options zfs zfs_dirty_data_max_percent=40
options zfs zfs_vdev_scheduler=deadline
options zfs zfs_vdev_async_write_min_active=8
options zfs zfs_vdev_async_write_max_active=64
options zfs zfs_prefetch_disable=1

Отличное предложение. Я обновил свой оригинальный вопрос более подробно. Резюме: ashift не помогла, и я думаю, что в этой проблеме есть компонент использования процессора.
Анельсон

Вы используете сжатие или дедупликация?
2016 г.

нет, я подтвердил, что сжатие выключено zfs get compression. Дедупе тоже выключен.
Анельсон

Это справедливо, но я могу показать, что базовые виртуализированные устройства хранения данных работают намного лучше. Смотрите обновление 2 на пост.
Анельсон

@anelson Хорошо. Попробуйте настройки выше.
Ewwhite

2

Вероятно, вы ожидаете блокировки мьютекса ядра Linux, которая, в свою очередь, может ожидать кольцевой буфер Xen. Я не могу быть уверен в этом без доступа к аналогичной машине, но я не заинтересован в том, чтобы платить Amazon $ 7 / час за эту привилегию.

Более подробное описание здесь: https://www.reddit.com/r/zfs/comments/4b4r1y/why_is_zfs_on_linux_unable_to_fully_utilize_8x/d1e91wo ; Я бы предпочел, чтобы это было в одном месте, чем в двух.


1

Я потратил приличное количество времени, пытаясь выследить это. Моя конкретная задача: сервер Postgres, и я хочу использовать ZFS для своего объема данных. Базовая линия - XFS.

Прежде всего, мои испытания говорят мне, что ashift=12это неправильно. Если есть какое-то магическое ashiftчисло, его нет 12. Я использую 0и получаю очень хорошие результаты.

Я также экспериментировал с кучей опций zfs, и те, которые дают мне следующие результаты:

atime=off - Мне не нужно время доступа

checksum=off - Я раздеваюсь, а не зеркалирую

compression=lz4- Производительность лучше со сжатием (компромисс?)

exec=off - это для данных, а не для исполняемых файлов

logbias=throughput - Читайте на паутинах, это лучше для Postgres

recordsize=8k - PG определенный 8k размер блока

sync=standard- попытался отключить синхронизацию; не видел большой пользы

Мои тесты ниже показывают лучшую производительность, чем XFS (пожалуйста, прокомментируйте, если вы видите ошибки в моих тестах!).

На этом мой следующий шаг - попробовать Postgres, работающий на файловой системе 2 x EBS ZFS.

Моя конкретная настройка:

EC2: m4.xlargeэкземпляр

EBS: 250 ГБ gp2томов

ядро: Linux [...] 3.13.0-105-generic # 152-Ubuntu SMP [...] x86_64 x86_64 x86_64 GNU / Linux *

Сначала я хотел протестировать производительность EBS. Используя вариант fioкоманды выше, я придумал заклинание ниже. Примечание: я использую блоки 8k, потому что я прочитал записи PostgreSQL:

ubuntu@ip-172-31-30-233:~$ device=/dev/xvdbd; sudo dd if=/dev/zero of=${device} bs=1M count=100 && sudo fio --name randwrite --ioengine=libaio --iodepth=4 --rw=randwrite --bs=8k --size=400G --numjobs=4 --runtime=60 --group_reporting --fallocate=none --filename=${device}
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.250631 s, 418 MB/s
randwrite: (g=0): rw=randwrite, bs=8K-8K/8K-8K/8K-8K, ioengine=libaio, iodepth=4
...
randwrite: (g=0): rw=randwrite, bs=8K-8K/8K-8K/8K-8K, ioengine=libaio, iodepth=4
fio-2.1.3
Starting 4 processes
Jobs: 4 (f=4): [wwww] [100.0% done] [0KB/13552KB/0KB /s] [0/1694/0 iops] [eta 00m:00s]
randwrite: (groupid=0, jobs=4): err= 0: pid=18109: Tue Feb 14 19:13:53 2017
  write: io=3192.2MB, bw=54184KB/s, iops=6773, runt= 60327msec
    slat (usec): min=2, max=805209, avg=585.73, stdev=6238.19
    clat (usec): min=4, max=805236, avg=1763.29, stdev=10716.41
     lat (usec): min=15, max=805241, avg=2349.30, stdev=12321.43
    clat percentiles (usec):
     |  1.00th=[   15],  5.00th=[   16], 10.00th=[   17], 20.00th=[   19],
     | 30.00th=[   23], 40.00th=[   24], 50.00th=[   25], 60.00th=[   26],
     | 70.00th=[   27], 80.00th=[   29], 90.00th=[   36], 95.00th=[15808],
     | 99.00th=[31872], 99.50th=[35584], 99.90th=[99840], 99.95th=[199680],
     | 99.99th=[399360]
    bw (KB  /s): min=  156, max=1025440, per=26.00%, avg=14088.05, stdev=67584.25
    lat (usec) : 10=0.01%, 20=20.53%, 50=72.20%, 100=0.86%, 250=0.17%
    lat (usec) : 500=0.13%, 750=0.01%, 1000=0.01%
    lat (msec) : 2=0.01%, 4=0.01%, 10=0.59%, 20=2.01%, 50=3.29%
    lat (msec) : 100=0.11%, 250=0.05%, 500=0.02%, 750=0.01%, 1000=0.01%
  cpu          : usr=0.22%, sys=1.34%, ctx=9832, majf=0, minf=114
  IO depths    : 1=0.1%, 2=0.1%, 4=100.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    : total=r=0/w=408595/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
  WRITE: io=3192.2MB, aggrb=54184KB/s, minb=54184KB/s, maxb=54184KB/s, mint=60327msec, maxt=60327msec

Disk stats (read/write):
  xvdbd: ios=170/187241, merge=0/190688, ticks=180/8586692, in_queue=8590296, util=99.51%

Необработанная производительность для тома EBS равна WRITE: io=3192.2MB.

Теперь тестируем XFS с помощью той же fioкоманды:

Jobs: 4 (f=4): [wwww] [100.0% done] [0KB/0KB/0KB /s] [0/0/0 iops] [eta 00m:00s]
randwrite: (groupid=0, jobs=4): err= 0: pid=17441: Tue Feb 14 19:10:27 2017
  write: io=3181.9MB, bw=54282KB/s, iops=6785, runt= 60024msec
    slat (usec): min=3, max=21077K, avg=587.19, stdev=76081.88
    clat (usec): min=4, max=21077K, avg=1768.72, stdev=131857.04
     lat (usec): min=23, max=21077K, avg=2356.23, stdev=152444.62
    clat percentiles (usec):
     |  1.00th=[   29],  5.00th=[   40], 10.00th=[   46], 20.00th=[   52],
     | 30.00th=[   56], 40.00th=[   59], 50.00th=[   63], 60.00th=[   69],
     | 70.00th=[   79], 80.00th=[   99], 90.00th=[  137], 95.00th=[  274],
     | 99.00th=[17024], 99.50th=[25472], 99.90th=[70144], 99.95th=[120320],
     | 99.99th=[1564672]
    bw (KB  /s): min=    2, max=239872, per=66.72%, avg=36217.04, stdev=51480.84
    lat (usec) : 10=0.01%, 20=0.03%, 50=15.58%, 100=64.51%, 250=14.55%
    lat (usec) : 500=1.36%, 750=0.33%, 1000=0.25%
    lat (msec) : 2=0.68%, 4=0.67%, 10=0.71%, 20=0.58%, 50=0.59%
    lat (msec) : 100=0.10%, 250=0.02%, 500=0.01%, 750=0.01%, 1000=0.01%
    lat (msec) : 2000=0.01%, >=2000=0.01%
  cpu          : usr=0.43%, sys=4.81%, ctx=269518, majf=0, minf=110
  IO depths    : 1=0.1%, 2=0.1%, 4=100.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    : total=r=0/w=407278/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
  WRITE: io=3181.9MB, aggrb=54282KB/s, minb=54282KB/s, maxb=54282KB/s, mint=60024msec, maxt=60024msec

Disk stats (read/write):
  xvdbd: ios=4/50983, merge=0/319694, ticks=0/2067760, in_queue=2069888, util=26.21%

Наша базовая линия WRITE: io=3181.9MB; очень близко к сырой скорости диска.

Теперь перейдем к ZFS со WRITE: io=3181.9MBссылкой:

ubuntu@ip-172-31-30-233:~$ sudo zpool create testpool xvdbd -f && (for option in atime=off checksum=off compression=lz4 exec=off logbias=throughput recordsize=8k sync=standard; do sudo zfs set $option testpool; done;) && sudo fio --name randwrite --ioengine=libaio --iodepth=4 --rw=randwrite --bs=8k --size=400G --numjobs=4 --runtime=60 --group_reporting --fallocate=none --filename=/testpool/testfile; sudo zpool destroy testpool
randwrite: (g=0): rw=randwrite, bs=8K-8K/8K-8K/8K-8K, ioengine=libaio, iodepth=4
...
randwrite: (g=0): rw=randwrite, bs=8K-8K/8K-8K/8K-8K, ioengine=libaio, iodepth=4
fio-2.1.3
Starting 4 processes
randwrite: Laying out IO file(s) (1 file(s) / 409600MB)
randwrite: Laying out IO file(s) (1 file(s) / 409600MB)
randwrite: Laying out IO file(s) (1 file(s) / 409600MB)
randwrite: Laying out IO file(s) (1 file(s) / 409600MB)
Jobs: 4 (f=4): [wwww] [100.0% done] [0KB/41328KB/0KB /s] [0/5166/0 iops] [eta 00m:00s]
randwrite: (groupid=0, jobs=4): err= 0: pid=18923: Tue Feb 14 19:17:18 2017
  write: io=4191.7MB, bw=71536KB/s, iops=8941, runt= 60001msec
    slat (usec): min=10, max=1399.9K, avg=442.26, stdev=4482.85
    clat (usec): min=2, max=1400.4K, avg=1343.38, stdev=7805.37
     lat (usec): min=56, max=1400.4K, avg=1786.61, stdev=9044.27
    clat percentiles (usec):
     |  1.00th=[   62],  5.00th=[   75], 10.00th=[   87], 20.00th=[  108],
     | 30.00th=[  122], 40.00th=[  167], 50.00th=[  620], 60.00th=[ 1176],
     | 70.00th=[ 1496], 80.00th=[ 2320], 90.00th=[ 2992], 95.00th=[ 4128],
     | 99.00th=[ 6816], 99.50th=[ 9536], 99.90th=[30592], 99.95th=[66048],
     | 99.99th=[185344]
    bw (KB  /s): min= 2332, max=82848, per=25.46%, avg=18211.64, stdev=15010.61
    lat (usec) : 4=0.01%, 50=0.09%, 100=14.60%, 250=26.77%, 500=5.96%
    lat (usec) : 750=5.27%, 1000=4.24%
    lat (msec) : 2=20.96%, 4=16.74%, 10=4.93%, 20=0.30%, 50=0.08%
    lat (msec) : 100=0.04%, 250=0.03%, 500=0.01%, 2000=0.01%
  cpu          : usr=0.61%, sys=9.48%, ctx=177901, majf=0, minf=107
  IO depths    : 1=0.1%, 2=0.1%, 4=100.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    : total=r=0/w=536527/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
  WRITE: io=4191.7MB, aggrb=71535KB/s, minb=71535KB/s, maxb=71535KB/s, mint=60001msec, maxt=60001msec

Обратите внимание, это работает лучше, чем XFS WRITE: io=4191.7MB. Я уверен, что это связано со сжатием.

Для удовольствия я собираюсь добавить второй том:

ubuntu@ip-172-31-30-233:~$ sudo zpool create testpool xvdb{c,d} -f && (for option in atime=off checksum=off compression=lz4 exec=off logbias=throughput recordsize=8k sync=standard; do sudo zfs set $option testpool; done;) && sudo fio --name randwrite --ioengine=libaio --iodepth=4 --rw=randwrite --bs=8k --size=400G --numjobs=4 --runtime=60 --group_reporting --fallocate=none --filename=/testpool/testfile; sudo zpool destroy testpool
randwrite: (g=0): rw=randwrite, bs=8K-8K/8K-8K/8K-8K, ioengine=libaio, iodepth=4
...
randwrite: (g=0): rw=randwrite, bs=8K-8K/8K-8K/8K-8K, ioengine=libaio, iodepth=4
fio-2.1.3
Starting 4 processes
randwrite: Laying out IO file(s) (1 file(s) / 409600MB)
randwrite: Laying out IO file(s) (1 file(s) / 409600MB)
randwrite: Laying out IO file(s) (1 file(s) / 409600MB)
randwrite: Laying out IO file(s) (1 file(s) / 409600MB)
Jobs: 4 (f=4): [wwww] [100.0% done] [0KB/71936KB/0KB /s] [0/8992/0 iops] [eta 00m:00s]
randwrite: (groupid=0, jobs=4): err= 0: pid=20901: Tue Feb 14 19:23:30 2017
  write: io=5975.9MB, bw=101983KB/s, iops=12747, runt= 60003msec
    slat (usec): min=10, max=1831.2K, avg=308.61, stdev=4419.95
    clat (usec): min=3, max=1831.6K, avg=942.64, stdev=7696.18
     lat (usec): min=58, max=1831.8K, avg=1252.25, stdev=8896.67
    clat percentiles (usec):
     |  1.00th=[   70],  5.00th=[   92], 10.00th=[  106], 20.00th=[  129],
     | 30.00th=[  386], 40.00th=[  490], 50.00th=[  692], 60.00th=[  796],
     | 70.00th=[  932], 80.00th=[ 1160], 90.00th=[ 1624], 95.00th=[ 2256],
     | 99.00th=[ 5344], 99.50th=[ 8512], 99.90th=[30592], 99.95th=[60672],
     | 99.99th=[117248]
    bw (KB  /s): min=   52, max=112576, per=25.61%, avg=26116.98, stdev=15313.32
    lat (usec) : 4=0.01%, 10=0.01%, 50=0.04%, 100=7.17%, 250=19.04%
    lat (usec) : 500=14.36%, 750=15.36%, 1000=17.41%
    lat (msec) : 2=20.28%, 4=4.82%, 10=1.13%, 20=0.25%, 50=0.08%
    lat (msec) : 100=0.04%, 250=0.02%, 2000=0.01%
  cpu          : usr=1.05%, sys=15.14%, ctx=396649, majf=0, minf=103
  IO depths    : 1=0.1%, 2=0.1%, 4=100.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    : total=r=0/w=764909/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
  WRITE: io=5975.9MB, aggrb=101982KB/s, minb=101982KB/s, maxb=101982KB/s, mint=60003msec, maxt=60003msec

Со вторым томом, WRITE: io=5975.9MBтак что ~ 1.8X пишет.

Третий том дает нам WRITE: io=6667.5MB, так что ~ 2.1X пишет.

И четвертый том дает нам WRITE: io=6552.9MB. Для этого типа экземпляра, похоже, я почти перекрываю сеть EBS двумя томами, определенно тремя, и не лучше с 4 (750 * 3 = 2250 IOPS).

* Из этого видео убедитесь, что вы используете ядро ​​Linux версии 3.8+, чтобы получить все преимущества EBS.


Интересные результаты. Обратите внимание, я думаю, что вы запутались WRITE: io=; это не скорость, это количество данных, записанных за это время. Относится к скорости только для тестов с фиксированным временем выполнения, но для согласованности с другими тестами лучше сосредоточиться на IOPS iops=. В вашем случае результаты схожи. Вероятно, вы могли бы стать намного лучше, если бы использовали подготовленные тома IOPS EBS и более крупный экземпляр. Смотрите эту страницу для ожидаемых ограничений EBS по размеру экземпляра. Просто будьте осторожны, EBS обвинения быстро накапливаются, если вы не будете осторожны!
Анельсон

Отличная обратная связь, спасибо @anelson! посмотрел на обеспеченные iops, и они очень дорогие. Однако я рассматривал возможность создания небольшого подготовленного тома iops для тома журнала, на котором написан ZIL, и добился некоторых преимуществ в производительности. Где-то я читал, что ZIL не становится больше, чем то, что находится в памяти, и у меня его ограничено 2G в /etc/modules.d/zfs.conf. Следующий вопрос будет о том, каково количество iops для данного экземпляра ec2. Глядя на страницу, на которую вы ссылаетесь, это все еще сложно, и я не вижу производительности, столь же хорошей, как состояние документации.
Берто
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.