Re: тормоза ZFS

2018-01-18 Пенетрантность Alex Kicelew
On 01/18/18 12:37, Sergey Matveev wrote:
> вытесняют. ZFS может тупить например на секунды, допустим десятки секунд
> -- сбрасывая буферы TXG на диски, но тут нет речи о минутах. Мне кажется
> что это кто-то сторонний что-то начинает делать.

Спасибо. Буду очень внимательно думать в эту сторону. Собственно, то,
что это проделки ZFS, я предположил из-за того, что в такие моменты в
iotop лидируют именно его процессы (хотя и не только они, но остальные
каждый раз разные, а они всегда), о чем забыл упомянуть сразу. Тем не
менее, раз такое поведение только у меня, значит, буду искать.



Re: тормоза ZFS

2018-01-18 Пенетрантность Sergey Matveev
*** Alex Kicelew [2018-01-17 23:13]:
>Поэтому может кто-нибудь (возможно, Sergey Matveev:)
>знает, можно ли как-нибудь понять, за каким чертом он минут 5-15 читает
>диск.

Ух, даже не знаю что тут сказать. Вообще не могу предположить что именно
ZFS мог бы делать. В фоне на долго ZFS обычно может делать только три
вещи, как правило: scrub, resilver и destroy (когда async_destroy
включен). На чтение из них только scrub работает. Но ARC сам по себе не
будет просто так брать и освобождаться -- аналогично кэшу обычной ФС
(cached поле в top/free). ARC уменьшиться в размерах только если
какое-то приложение хочет памяти больше чем осталось -- тогда его
вытесняют. ZFS может тупить например на секунды, допустим десятки секунд
-- сбрасывая буферы TXG на диски, но тут нет речи о минутах. Мне кажется
что это кто-то сторонний что-то начинает делать.

Я не мало работал на системах с 4, 8 и 16 GB памяти и везде с HDD. 4 GB
отличаются только тем, что по-умолчанию отключен read prefetch (но он
ничего не может сделать чтобы система на минуты уходила "тупить").
Нагрузки были самые разные: и sequential read/write больших файлов и
PostgreSQL с десятками GB БД и MongoDB которые упирались в IOPS диска.
Но везде FreeBSD/HardenedBSD. Так что может быть это какие-то косяки в
Linux реализации? Хотя коллега с GNU/Linux говорит что у него на 4 GB с
HDD ни разу ничего похожего на ваше поведение не встречалось. Но мне
кажется что это не в ZFS дело, раз размер ARC уменьшается -- его значит
кто-то другой вытесняет.

Можно попробовать например кэшировать только метаинформацию в ARC,
возможно только для заданных dataset-ов, выставив zfs set
primarycache=metadata. Не исключено что data регулярно вытесняет
metadata и диск вынужден снова и снова лезть за ней на диск. Но это
мысли в слух.

-- 
Sergey Matveev (http://www.stargrave.org/)
OpenPGP: CF60 E89A 5923 1E76 E263  6422 AE1A 8109 E498 57EF



тормоза ZFS

2018-01-17 Пенетрантность Alex Kicelew
Hi.

Вообще он работает хорошо. Но иногда на домашнем ноуте с 8 гигами памяти
и крутящимся (не SSD) диском он начинает сильно тормозить.
Гарантированно -- когда я начинаю работать за ноутом после долгого
перерыва, с утра или после работы. Непериодически, но регулярно -- в
процессе работы. 0-1 раз по вечерам, 2-5 раз по выходным. Длятся тормоза
минут 5-15, потом проходят.

Судя по индикаторам, в это время происходит сильное чтение (именно
чтение, не запись) с диска (в обычных условиях dstat рапортует уровень
чтения 100-500k (затрудняюсь сказать, за какой период он меряет), в
ситуации тормозов иногда 2-5M, а иногда и 10-13), LA тоже вырастает до
10-15. Если это происходит в начале работы после долгого перерыва, то
при этом уменьшается (иногда раза в 4) размер ARC -- видимо, освобождает
память под новые условия работы. Если в середине работы, то никаких
закономерностей я не заметил -- размер ARC может уменьшаться, может
увеличиваться, может оставаться прежним, своп может заполняться, может
освобождаться, может не трогаться. От количества свободной памяти тоже
практически не зависит -- в результате тормозов она может как
уменьшаться, так и увеличиваться. От установленного размера ARC тоже, я
играл с разными вариантами, но тормоза возникают все равно и примерно с
равной регулярностью.

Очевидно, в общем это нехватка памяти -- на других машинах, где по 16Г,
такого не наблюдается. Но, к сожалению, увеличить память на ноуте
возможности нет. Поэтому может кто-нибудь (возможно, Sergey Matveev:)
знает, можно ли как-нибудь понять, за каким чертом он минут 5-15 читает
диск. А если понять, то может, получится как-то добиться и уменьшения
тормозов. Хотя бы понять, куда смотреть в это время -- в
/proc/spl/kstat/zfs/* я смотреть пытался (как в обычные, так и в пиковые
моменты), но никаких закономерностей не уловил.