LINUX.ORG.RU
ФорумAdmin

ZFS: производительность при использовании ZIL на SSD

 ,


1

1

Всем доброго.

Интересует опыт тех, кто использовал ZFSonLinux в связке с ZIL на ssd и L2ARC на ssd. Насколько ZIL на ssd увеличивает производительность на запись (иопсы, МБ/с)

Думаю купить два sata диска в зеркале и к нему зеркало ssd для ZIL и незеркало на техже ssd для L2ARC, будет локальный сторадж для виртуалок.


зеркало ssd для ZIL и незеркало на техже ssd для L2ARC,

На эти деньги купи RAM, будет больше пользы

anonymous
()

Я под ZIL отдал старый SSD Intel X25-M G2 80 Gb, который иопсами и скоростью записи то и сам по себе не блистал, а у меня еще в виде vmdk используется. В итоге получил около 30 мбайт/c. Предел данного диска в чистом виде около 80.

Lordwind ★★★★★
()

Как-то я сомневаюсь, что вынесение ZIL на отдельную железку может повысить производительность. А вот деградировать там точно есть куда.

Что касается L2ARC, советую не обращаться к теме, пока не закончатся слоты памяти :)

melkor217 ★★★★★
()
Последнее исправление: melkor217 (всего исправлений: 1)

Я вкуривал в тему, и насколько мне удалось понять: ZiL штука весьма спорная. Даст выгоды, или не даст... Всё зависит от.

L2ARC - штука в целом толковая, если ты больше пишешь, чем читаешь. А так, в целом - у меня к примеру, есть два НЖМД, объеденив их в RAID, и подключив L2ARC, запустил виртуальную машинку с win, получил такое: http://storage4.static.itmages.com/i/15/0714/h_1436890995_3054070_9b18ded7f5.png

В общем и целом, чем больше абстракций, тем тормознее. :) RAID1 тормознее просто одного диска, RAID1 с L2ARC - тормознее на запись ещё. И т.д.

DALDON ★★★★★
()
Ответ на: O_O от melkor217

NAS на базе esxi, система на ssd, винты прокинул через vt-d и на них сделал пулы. Основной датастор для виртуалок на одном из пулов, через nfs с sync, да и некоторые рабочие файлы на сетевые ресурсы ссыкатно без защиты писать. Без ZIL было 5 мб/c на запись, решил с системного ssd выдать виртуальные диски по 4 гб, виртуальный контроллер LSI SAS дает оверхед по 4к-иопсам по разным данным (из чужих тестов) от 30 до 200%. Ну у меня вроде так и вышло, скорость записи самого диска не измерял, но даже большими блоками она не более 80 мб/с, запись по nfs меньше в 2 раза, меня устраивает.

Lordwind ★★★★★
()

ZIL на ssd имеет смысл только при синхронной записи. l2arc помогает при большом кол-ве чтения, но тут надо смотреть статистику arc по cache hit/miss и думать.

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

Ну во-1х, у меня древний ssd. Во-2х, у меня слой виртуализации, дающий оверхед, пробросить ssd не могу, т.к. нет свободного контроллера. И в 3х nfs работает с блоками 8к, тут еще сетевая производительность примешивается, т.к. мелкими блоками даже на usb-диске скорость сильно упадет, а для больших сетевых блоков нужно ATAoE/iSCSI+zvol, на что у меня нет ни желания, ни времени, ни подходящего бубна.

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

ZiL штука весьма спорная. Даст выгоды, или не даст... Всё зависит от.

ZIL штука нифига не спорная. Без него него производительность приложений, требующих синхронной записи, была бы унылой. Отключением его можно получить более высокие результаты для таковых, но ценой отсутствия гарантий по целостности данных соответствующего приложения. Впрочем, в этом вашем ляликсе это никого никогда не останавливало. ZIL задействуется всегда для синхронных операций, даже если никакого отдельного устройства для него нет - в этом случае блоки выделяются непосредственно из пула. Задействование отдельного устройства (устройств) с малым временем записи оказывает заметный эффект на производительность приложений, требующих синхронной записи. Возможность достичь максимального эффекта определяется не только ZIL'ом, так как данные, синхронно записанные в него, требуется рано или поздно сохранить и в основном пуле, так что производительность основного пула тоже играет роль. Есть и еще разные другие факторы.

L2ARC - штука в целом толковая, если ты больше пишешь, чем читаешь.

Не подскажешь, где такую забористую траву дают?

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

Не подскажешь, где такую забористую траву дают?

Ух йопрст... Наобарот, конечно. :) Вестимо всё наобарот. Спасибо!

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

Возможность достичь максимального эффекта определяется не только ZIL'ом, так как данные, синхронно записанные в него, требуется рано или поздно сохранить и в основном пуле, так что производительность основного пула тоже играет роль. Есть и еще разные другие факторы.

Золотые слова!

производительность приложений, требующих синхронной записи

Приведи пример таких приложений? СУБД?

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

Есть мнение, что как ни крути, а дублироваться будет.

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

И от этого, очень, очень больно и уныло. Особенно, когда возникает очень стойкое ощущение, что ARC не спешит возвращать обратно память в систему...

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

возникает очень стойкое ощущение, что ARC не спешит возвращать обратно память в систему...

Так он и не должен. Сколько ему разрешили, столько он и выедает.

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

Может я и правда обкурился, но вроде как должен же? ARC - прописан «от» и «до». И если в системе мало памяти, должен обратно возвращать в систему, до состояния «от».

Пруфов нету под рукой, но что-то подобное читал.

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

Приведи пример таких приложений? СУБД?

iSCSI имеет встроенный механизм синхронной записи, который вроде даже нельзя отключить, но он быстрее синхронной записи через nfs. Ну и СУБД, да.

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

как на них делить память

Так она же сама делится. Кеш чтения 1го уровня это RAM, он же системный кеш. Кеш чтения 2го уровня это L2ARC, в него вытесняется содержимое 1го уровня, начиная с самых старых блоков.

Среди случаев практического использования могу вспомнить одного чувака с гигабитным интернетом, который хотел раздавать торренты. Так вот, у него скорость была нормальная только на 1-3 раздачах, больше она жостко резалась еще на уровне случайного чтения с пула на hdd, он воткнул ssd под L2ARC, через некоторое время торренты закешировались и он получил гигабит на 30+ одновременных активных раздачах.

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

ARC не спешит возвращать обратно память в систему

ARC это кеш чтения 1го уровня zfs, L2ARC это кеш чтения 2-го уровня. Они оба не возвращают ничего, а только освобождают самые старые блоки новыми. И не надо ничего возвращать, если zfs захочет прочитать блок с пула, он сначала смотрит его в ARC, потом в L2ARC и уже потом читает с пулы, одновременно записывая в ARC. Когда тот переполняется, блок вытесняется в L2ARC (а может и сразу копируется в оба кеша, точно не скажу). Но если потребуется закешировать новый блок ARC/L2ARC или система/программа потребует памяти под свои нужды, кеш сразу освободит память.

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

Читаем внимательнее, вопрос был про arc и ядрёный кэш в линуксе.

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

Ну это уж вы сами как-нибудь, в моём царстве таких проблем нет, если это не mmap, конечно :)
zfs_arc_min и zfs_arc_max в помощь.

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

а только освобождают самые старые блоки новыми.

ARC ведёт два списка(вернее 4) - recently used и frequently used и истории вытеснений по обоим спискам.

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

Но если потребуется закешировать новый блок ARC/L2ARC или система/программа потребует памяти под свои нужды, кеш сразу освободит память.

Какая система? Какая программа? Операционная система похоже что ничего не получает из ARC, а тупо начинает в swap уходить.

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

Так вот, вопрос в том, может-ли переходить память из arc, обратно в ОС, в пределах, установленных с zfs_arc_max в zfs_arc_min?

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

NAS на базе esxi, система на ssd, винты прокинул через vt-d

Неправильно делаешь ты.

Если уж и заморачиваться богомерским AIO (брр, сама идея виртуализировать nas - ущербна, чуть доплатить денег и поставить отдельный сервер), то прокидывать в виртуалку надо весь контроллер, а не отдельные винты.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

то прокидывать в виртуалку надо весь контроллер, а не отдельные винты

Так и сделано. Просто сократил повествование.

чуть доплатить денег и поставить отдельный сервер

Не выйдет «чуть доплатить», т.к. два сервера это две серверных мамки, два серверных проца, два вагона ECC памяти и т.п. По сути NAS совместил с тестовой лабораторией.

Lordwind ★★★★★
()
Ответ на: комментарий от DALDON
vfs.zfs.arc_max 	5568M
vfs.zfs.arc_min 	768M
vfs.zfs.prefetch_disable 	0
vm.kmem_size 	7424M

на фре настройки zfs такие для 8 Гб, свап отключен, все работает хорошо

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

Ну то есть выходит, что таки zfs отдаёт в систему, память обратно, если система начинает уходить в swap?

Ну и вообще говоря: unix != linux, боюсь, что в этих системах реализация zfs, очень сильно различная.

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

Не, ну если сервер не выполняет ничего такого, то тогда, да. В общем я уменьшил ARC до 256 мб. поотключал все кеши, и прочее - на серверах с KVM виртуализацией. Пока полёт нормальный. Но в swap всё равно хожу.

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

Не выйдет «чуть доплатить», т.к. два сервера это две серверных мамки, два серверных проца, два вагона ECC памяти и т.п. По сути NAS совместил с тестовой лабораторией.

Что-то я не пойму. Два сервера, две мамки, два серверных проца, два вагона ECC памяти, два портсигара отеч^W^W^W, а дисковая подсистема - 2 десктопных SATA + SSD под кэш?

Ааа, ты же не топикстартер :)

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от melkor217

Я фиг его знает, как оно в линуксах точно. Возьми systemtap, да посмотри, как оно там :)

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

Странное решение. Память и соответственно ARC нужен как раз для быстрой работы zfs. У меня около 50 Тб места, несколько пулов и я хочу чтобы все это работало быстро, поэтому отдал память именно под ARC, оставив системе небольшой резерв. А уже если рамы мало, а скорость чтения важна, особенно рандом, тогда и можно думать про L2ARC. Но одно другим заменить не выйдет. Если так мало рамы, выгоднее вообще отказаться от zfs.

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

При виртуализации ARC выступает уже третьим кешем... 1) кеш внутри самой виртулаки 2) на уровне хост ОС 3) ARC. - Ни к чему дублировать.

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

Я понимаю еще дублирование кешей для десктопных VMM, но bare metal гипервизоры намного гибче рулят памятью. Вот я отдал 8 гб виртуальному NASу монопольно, всего это 8192 мб, эта память нигде больше не используется. Системе я отдаю 7424 мб (-256 видеопамять, -512 виртуальный диск в памяти). У меня нет иных ФС, а ОС находится на рам диске, так что единственный кеш в системе это ARC и я задал минимум и максимум для него. Prefetch осуществляет предвыборку непосредственно в процессе чтения с диска, запрашивая и помещая в ARC. Старые блоки просто удаляются, т.к. нет L2ARC. Таким образом ARC является основным и в моем случае единственным кешем.

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

но bare metal гипервизоры намного гибче рулят памятью

bare metal = buzzword, а тут технари собрались. KSM выключи, KVM память тоже монопольно будет использовать.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.