Пятница - день установки патчей
lexa - 11/Авг/2017 18:43
1. Закрыл гештальт с OS X 10.11.6: обновляется clover, потом накатывается апдейт
Можно не ставить инсталлятором, а два .EFI-файлика заменить (замену брать, к примеру, вот тут).
2. В комментариях навели на вот это вот: https://svnweb.freebsd.org/base?view=revision&revision=317064
Этот патч уже вошел в FreeBSD 11.1 (у меня была 11.0), обновился на нее.
Мне показалось что с большими каталогами по самбе действительно стало работать сильно быстрее. Каких-то тестов не делал, но вот чтение метаданных в каталоге с 5000 равчиками было медленно, а стало более вменяемо.
Comments
чтение метаданных в каталоге с 5000 равчиками
Возник вопрос: эти метаданные читаются из "тела" каждого файла? и если да, то каков средний их размер?
Да, из тела.
Да, из тела.
Там "десятки килобайт" (т.е. 0.1%).
Вообще, конечно от формата
Вообще, конечно от формата зависит.
Может быть "десяток килобайт", может наверное быть и "килобайты".
Может быть вовсе ноль, но это редкий случай (дамп сенсора)
"десяток килобайт"
Под просмотром большого каталога я понимал получение только информации о файлах данного каталога, а здесь немного другая задача. Для hdd в raidz и recordsize=1m оно как бы по определению не может быть быстро. По сути определяющим будет время случайного доступа большими блоками, а у zfs в данной конфигурации с этим проблемы.
Ну вот тем не менее - мне
Ну вот тем не менее - мне кажется, что это место тоже стало быстрее.
Сам по себе листинг 5к файлов - вменяемо быстрый и так.
чтение метаданных в каталоге с 5000 равчиками
А ведь получается, что это почти идеальный патерн для работы L2ARC. В связи с планами перехода на 11.1 начал присматриваться и к кешированию на ссд. Можешь показать zfs-stats -IE?
ZFS-stats у меня не
ZFS-stats у меня не показателен совсем т.к. L2 разрешен только на некоторых датасетах. А скажем там где кино и подобное - нет, соответственно цифры заниженные.
Реальная эффективность кэша при работе именно с равчиками - процентов 70-90 получается в зависимости от интенсивности работы с каталогом. Это по zfs-mon.
Сейчас zfs-stats показывает вот такое, но
а) маленький аптайм, я апгрейдился же
б) я делал эксперименты именно по кэшируемости в L2 (вот тот самый tar cf /dev/null large-folder, который обсуждали уже весной), поэтому цифры выше реальных
поэтому цифры выше реальных
Спасибо. Всё равно интересно. А какой объём ARC и L2ARC на этой машине?
ARC Size:
ARC Size: 55.76% 16.17 GiB
Target Size: (Adaptive) 55.76% 16.17 GiB
Min Size (Hard Limit): 12.50% 3.62 GiB
Max Size (High Water): 8:1 29.00 GiB
L2: сейчас занято 258G из 500 возможных.
Да, вот по опыту.
Да, вот по опыту.
Реальные цифры от реальной моей работы с L2 (без тестов на забитие кэша) начинаются через 2-3 недели аптайма.
Реальный аптайм (не летом) - ну вот с сентября по июнь.
Если можно, ещё iostat -Ix
Если можно, ещё iostat -Ix одного hdd из пула и ssd (L2ARC). А я за причинённые хлопоты, постараюсь, что-то подсказать. Может и пригодится :-).
Пулlexa@home-gw:~/LibRaw#
Пул
lexa@home-gw:~/LibRaw# iostat -Ix ada1
extended device statistics
device r/i w/i kr/i kw/i qlen tsvc_t/i sb/i
ada1 1033717.0 318054.0 105220584.5 21312396.0 0 7152.0 2879.3
SSD:
lexa@home-gw:~/LibRaw# iostat -Ix nvd0
extended device statistics
device r/i w/i kr/i kw/i qlen tsvc_t/i sb/i
nvd0 10021895.0 2139627.0 1280477009.0 271255656.5 0 16580.2 1359.5
(но есть второй пул, на других дисках - и статистика ZFS, понятно, суммарная)
Вдогонку - то что прилетело
Вдогонку - то что прилетело письмом, там неправильная статистика пула (ada0 - это загрузочный, а надо ada1), на сайте - верно.
Статистика для меня несколько
Статистика для меня несколько непривычная. Пока говорить что-то рано, но бросается в глаза большое количество промахов по префетчу данных. На каждую правильно предсказанную рекордсайз в нагрузку прочитано ещё две ненужных (с вытекающими последствиями). Также для меня необычно, что новые (или модифицированные данные), которые ещё не аллоцированны в пуле - сразу читаются и это почти треть от всех попаданий к кеш. Если не против, можно будет ещё через некоторое время глянуть.
Я почти уверен, что
Я почти уверен, что статистика сильно испорчена моими экспериментами.
А в ситуации, когда я смотрю
А в ситуации, когда я смотрю на живую (zfs-mon) и понятную (*) статистику - там эффективность префетча сильно выше.
(*) имеется в виду, что в это время на сервере нету, к примеру, большого бэкапа и/или верификации бэкапа.
Это понятно и период
Это понятно и период небольшой, но экперименты иногда дают для понимания больше информации. А сколько по памяти приблизительно был процент попадания в ARC за длительный период с использованием L2ARC.
Меня два месяца (с небольшим
Меня два месяца (с небольшим перерывом) не было дома, не помню ничего по памяти.
Вот запустил верификацию
Вот запустил верификацию бэкапа. Вижу такое:
Это, конечно, повод еще раз подумать про размер записи на бэкапном томе....
Но доля бэкапов-верификаци в общем ZFS-трафике у меня очень велика.
Собственно вот:
90% В записи и 80 в чтении.
Вот запустил бэкап (стадия
Вот запустил бэкап (стадия записи).
zfs-mon -a кажет:
ZFETCH hits: 0 0 0 0
ZFETCH misses: 5760 7632 6172 6172
Понятно откуда плохая (общая) статистика по Zfetch
ZFETCH hits: 0 0 0 0
Я не пользуюсь zfs-mon и сразу не соображу, что это значит. Нужно будет посмотреть. Но если при primarycache=metadata происходит файловая упреждающая выборка (интересно куда и зачем?), а затем её результат сразу выбрасывается, то это похоже на баг :-). Вечером постараюсь проверить.
primarycache=all
primarycache=all
secondarycache = metadata
Тогда всё попадает в ARC и до
Тогда всё попадает в ARC и до выталкивания просто не используется. Нет, наверно нужно всё таки проверить, по какому алгоритму работают счётчики предвыборки.
Неправильная интерпретация
Сегодня на свежую голову ещё раз глянул и понял, что моя интерпретация статистики префетча была неверна. Для понимания прочитал файл в 262144 рекордсайз (файл точно читался первый раз) и вычленил статистику:
CACHE HITS BY DATA TYPE:
Demand Data: 197533
Prefetch Data: 2
CACHE MISSES BY DATA TYPE:
Demand Data: 170
Prefetch Data: 261974
Получается CACHE MISSES чесно показал, что данных в кеше не было (170 + 261974=262144) и префетч послал 99,9% запросов. А вот с CACHE HITS поинтереснее :-). Получается, если запрос от приложения пришёл в ARC, когда ещё выполнялся запрос префетча, то хит не начисляется, а если рекордсайз уже была к этому времени прочитана, то начисляется. Prefetch Data: 2 - списываю на то, что на пуле в это время был ещё один не очень активный пользователь. В итоге получается, что первое чтение файла дало в статистику (только по данным) 100% MISSES и 75% HITS от размера файла :-). По метаданным понятно, что хитов было значительно больше. И кстати, у меня Data Prefetch Efficiency ещё меньше, чем у тебя :-), что теперь тоже вполне объяснимо.
Меня вот больше интересует,
Меня вот больше интересует, что такое ZFETCH miss при записи.
Ну то есть следует принять как данность, что при записи там все (примерно) miss, ну и успокоиться.
Если честно, то я не совсем
Если честно, то я не совсем понимаю что такое ZFETCH (только догадываюсь :-)). miss может быть только у чтения. А запись новых файлов или поверх старых?
Новые файлы.
Новые файлы.
Вот надо таки прочитать исходники zfs-mon, тогда будет понятно какие переменные оно так обзывает
Разумно :-).
Разумно :-).
Ещё спрошу - NVMe ssd в FreeBSD не было проблем? И вот ещё - после опыта эксплуатации при выборе NVMe ssd на что обратить внимание?
Не было проблем. Но эта штука
Не было проблем. Но эта штука покупалась ровно под L2ARC, никаких других файловых систем там нет и не планировалось. Загрузка тоже не с нее.
"на что обратить внимание" я, честно говоря, не знаю, потому что у меня это вот единственный nvme под FreeBSD, он сразу завелся и стало хорошо.
Я выбирал из следующих соображений
- скорость чтения (!) - особо высокая не нужна, я все едино по 10G туда хожу, т.е. гигабайт с копейками - более чем. Скорость записи - ну тем более.
- "гарантированный объем записи" - с учетом того, что в реальности он много больше, чем заявляет производитель - особо на этот параметр не смотрел.
- и с учетом первого момента - выбрался Patriot Hellfire. Он сильно медленнее других моих NVME-шек (числом два: 950-й самсунг "под систему" и плекстор M8Pe "под локальные файлы), но и сильно дешевле, раза в полтора.
Смотрел еще на Intel 600p (еще дешевле), но он еще медленнее и уже медленее 10G.
Эксплуатация - ну скажем месяца три активных (минус лето, когда на эти тома никто не писал), за это время записано - 10Tb (т.е. 20 раз перезаписан). Заявленный ресурс - кажется 400Tb, то есть даже формального ресурса хватит, при таком же использовании, на ~10 лет.
Спасибо. Я пока оставил в
Спасибо. Я пока оставил в претендентах 950-960 самсунг и M8PeY :-) (правда ещё соблазняет по сходной цене почти новый Intel 750). После чтения обзоров беспокоит нагрев и возможный троттлинг, особенно у M8PeY. У меня пока главные критерии выбора - скорость записи на уже заполненном ssd и производительность при смешанной нагрузке. Хочу ещё посмотреть как, L2ARC освобождает место под новые записи после полного заполнения. Заметил у тебя пишет и читает в среднем почти по 128kB, значит пишет в основном данные. А у меня слабое место промахи метадаты. Вот и родилась идея загнать всю её L2ARC :-). Получается если будет сжатие, то средний размер записи может быть сильно меньше.
primarycache=all
Сегодня обратил внимание. Ты же вроде боролся с вымыванием кеша? И ещё - если затем следует верификация, то часть данных может быть прочитана из кеша. Тогда какой смысл в верификации?
Я сейчас и не вспомню почему
Я сейчас и не вспомню почему поменял, но кажется совсем уж без кэша получается совсем уж медленно (не столько акронисом, там ок, сколько тайм-машинами маковскими, хотя они ходят всего-то по гигабиту)
А если primarycache=all, то
А если primarycache=all, то тогда точно нет никакого смысла в recordsize=64k (особенно для бекапов). Кстати, недавно узнал, что если размер файла меньше recordsize, то размер записи добивается до ближайшего кратного ashift. А вот если больше recordsize, то последняя recordsize уже не обрезается. Для меня пока не понятна сия логика :-).
Ну решили что оверхед меньше
Ну решили что оверхед меньше 50% - не оверхед :)
А вот верификация для бэкапа,
А вот верификация для бэкапа, который сделали на recordsize=64k (отчего скорость верификации упала и верну я обратно 1m):
на этом разделе - secondarycache=metadata.
У меня тоже есть датасет
У меня тоже есть датасет /backup c primarycache=metadata. На машине только ARC ограниченный 14GB. Файловая упреждающая выборка включена (правда я туда только каждый час сбрасываю), но подобной картинки не наблюдаю.
ZFS Subsystem Report Tue Aug 15 17:03:09 2017
------------------------------------------------------------------------
FreeBSD 11.0-RELEASE-p3 #14: Sun Nov 13 13:40:47 EET 2016 admin
5:03PM up 81 days, 8:32, 1 users, load averages: 0.16, 0.08, 0.05
------------------------------------------------------------------------
ARC Efficiency: 232.33m
Cache Hit Ratio: 80.84% 187.83m
Cache Miss Ratio: 19.16% 44.50m
Actual Hit Ratio: 80.70% 187.48m
Data Demand Efficiency: 97.05% 28.92m
Data Prefetch Efficiency: 25.65% 1.16m
CACHE HITS BY CACHE LIST:
Anonymously Used: 0.11% 214.08k
Most Recently Used: 2.64% 4.95m
Most Frequently Used: 97.18% 182.53m
Most Recently Used Ghost: 0.04% 67.39k
Most Frequently Used Ghost: 0.03% 63.87k
CACHE HITS BY DATA TYPE:
Demand Data: 14.95% 28.07m
Prefetch Data: 0.16% 296.35k
Demand Metadata: 84.87% 159.41m
Prefetch Metadata: 0.03% 50.44k
CACHE MISSES BY DATA TYPE:
Demand Data: 1.92% 853.44k
Prefetch Data: 1.93% 858.99k
Demand Metadata: 96.09% 42.77m
Prefetch Metadata: 0.06% 26.43k
(лучше конечно моноширинным)