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


12

Я абсолютно новачок у ZFS, тому для початку я подумав, що буду робити прості орієнтири на ньому, щоб зрозуміти, як він себе веде. Мені хотілося просунути межі його продуктивності, тому я передбачив i2.8xlargeекземпляр Amazon EC2 (майже $ 7 / год, час справді - гроші!). Цей примірник має 8 800 ГБ SSD-дисків.

Я зробив fioтест на самих жорстких дисках і отримав наступний вихід (оброблений):

$ 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 SSD-дисками, але я читав про причини, які це погано для продуктивності, тому я закінчив чотири mirrorvdevs, як-от так:

$ 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]

У цьому пулі ZFS я отримую лише 52K IOPS. Це насправді трохи гірше, ніж сам 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 repo . У мене версія 0.6.5.5 zfsпакета.

UPDATE : Пер @ 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-диски та використовувати розумні за замовчуванням.

Однак я помітив, що використання процесора скорочується. @Tim запропонував це, але я відхилив це, проте, я думаю, що не спостерігав процесор досить довго, щоб помітити. У цьому випадку є приблизно 30 ядер CPU, а використання процесора зростає до 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, тому я очікував десь близько 240 К 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 зрозуміло, що цей розмір є єдиним екземпляром, який працює на фізичному хості, де він знаходиться. Крім того, це локальні SSD, а не обсяги EBS, тому інших робочих навантажень, що претендують на пропускну здатність IO, немає. Це не враховує ефективність, яку я бачу.
Анельсон

Це оподаткування процесора чи потрапляння меж пам'яті?
Тім

Ви читали цю серію статей? hatim.eu/2014/05/24/… Чи допомогли будь-які інші статті?
Тим

1
Тільки щоб виключити фактичні недоліки в реалізації zfsonlinux, я б спробував той же тестовий тест із встановленням Solaris 11 в тому ж екземплярі.
wabbit

Відповіді:


6

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

Спробуйте ashift = 12 або 13 і повторіть тест.


Редагувати:

Це все ще віртуалізоване рішення, тому ми не знаємо занадто багато про базовий апарат або про те, як все взаємопов’язано. Я не знаю, що ви отримаєте кращі результати від цього рішення.


Редагувати:

Я думаю, я не бачу сенсу намагатися оптимізувати хмарний екземпляр таким чином. Бо якби мета була найвищою ефективністю, ви б використовували апаратне забезпечення, правда?

Але пам’ятайте, що ZFS має безліч настроюваних налаштувань, і те, що ви отримуєте за замовчуванням, ніде не наближається до вашого випадку використання.

Спробуйте наступне у своєму /etc/modprobe.d/zfs.confі перезавантажте. Це те, що я використовую у своїх SSD-накопичувачах для серверів додатків. Ваша швидкість має бути 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 не допоміг, і я думаю, що в цій проблемі є компонент використання процесора.
Анельсон

Використовуєте ви стиснення чи дедупцію?
ewwhite

ні, я підтвердив, що стиснення вимкнено zfs get compression. Дедупе також вимкнений.
Анельсон

Це справедливо, але я можу показати, що основні віртуалізовані пристрої зберігання працюють набагато краще. Дивіться оновлення 2 у публікації.
Анельсон

@anelson Гаразд. Спробуйте налаштування вище.
ewwhite

2

Здається, що ви очікуєте на замок mutex ядра Linux, який, у свою чергу, може чекати на буфер кільця Xen. Я не можу бути впевненим у цьому без доступу до подібної машини, але мені не цікаво платити Amazon 7 доларів на годину за цю пільгу.

Більш тривала реєстрація тут: https://www.reddit.com/r/zfs/comments/4b4r1y/why_is_zfs_on_linux_unable_to_ful_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 - ПЗ специфічного 8k блокування

sync=standard- намагалися вимкнути синхронізацію; не бачив великої користі

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

Наступним моїм наступним кроком є ​​спробу Postgres, що працює у файловій системі 2 x EBS ZFS.

Моя конкретна установка:

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

EBS: gp2обсяги 250 Гб

ядро: 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

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