Свежие комментарии

Title Comment
Вообще, вот странная история.

Вообще, вот странная история.
Собрал - из освободившихся 4T дисков (тоже HGST) массив. На другой машине, FreeBSD12, raidz2 из пяти дисков.

И вот с ними - с ровно таким же тестом (скорость чтения из большого файла при помощи dd, массив пуст) - получается вменяемая скорость, 450-500Mb/sec. Без увеличения окна префетча, стандартные 8M работают ок.

Похоже, что это какая-то особенность 6T. Ну там вплоть до того, что дорожка не влезает в буфер у диска, не знаю что еще придумать.

Я ставил 8.1, штатным

Я ставил 8.1, штатным способом, через Bootcamp.

Результат так себе
- переключения видеокарт intel-nvidia не происходит, работает только nv и жрет батарею.
- bluetooth устройства (мышь эппловская, адын штук) каждый раз надо повторно спаривать

Десятка наверное тоже будет работать, но не проверял.

>> Note that it leaves

>> Note that it leaves "prescient" prefetch (e.g. prefetch for zfs send) intact.

В-общем, FreeBSD kernel is very well documented. Читая комментарии можно понять, почему у zfs send нормальная производительность, а у tar cf /dev/null - не очень.

В общем, увеличить max_distance раз в 10-20-40 сильно помогает в моем случае. Какое-то такое значение и оставлю.

# uname -r

# uname -r
11.0-RELEASE-p1

Из dmu_zfetch.c:
/*
* This tunable disables predictive prefetch. Note that it leaves "prescient"
* prefetch (e.g. prefetch for zfs send) intact. Unlike predictive prefetch,
* prescient prefetch never issues i/os that end up not being needed,
* so it can't hurt performance.
*/
boolean_t zfs_prefetch_disable = B_FALSE;

/* max # of streams per zfetch */
uint32_t zfetch_max_streams = 8;
/* min time before stream reclaim */
uint32_t zfetch_min_sec_reap = 2;
/* max bytes to prefetch per stream (default 8MB) */
uint32_t zfetch_max_distance = 8 * 1024 * 1024;
/* max bytes to prefetch indirects for per stream (default 64MB) */
uint32_t zfetch_max_idistance = 64 * 1024 * 1024;
/* max number of bytes in an array_read in which we allow prefetching (1MB) */
uint64_t zfetch_array_rd_sz = 1024 * 1024;

Таки да, данная настройка в sysctl не выведена. Но я не вижу особого смысла её менять. Хотя если хочется можно перекомпилировать zfs.ko.

# uname -r

# uname -r
11.0-STABLE
# sysctl -a | grep dista
vfs.zfs.zfetch.max_distance: 8388608

idistance не появилась от 11.0.
И на 12-current не видать

У меня пока всё работает на

У меня пока всё работает на 10.1 и только сейчас попробую перейти на 11. Поэтому я "знаком" только с этими двумя версиями. Мой опыт подсказывает, что zfs спроектирована довольно "правильно". С неё можно выжимать довольно много для некоторых конкретных задач. Поэтому (моё личное мнение) отталкиваться нужно от производительности дисков, затем проверить сколько может система (процессор, память, чипсет, контроллер) прокачать одовременно относительно полной производительности дисков. Дальше оценить теоретический порог производительности конфигурации zfs (в твоём случае raidz2). Постараться приблизиться к нему и успокоиться :-).

А не подскажете, можно ли

А не подскажете, можно ли наоборот - на ноутбук эппл поставить виндоуз 10?
Эппл не люблю - экосистема, вот это все, а железо их люблю.
И после прохождения курса лечения в AA (Apple Anonimous), могу держать себя в руках.

id_distance у меня пока нет.

id_distance у меня пока нет.
distance - оказывает понятное магическое действие.

Пойду FreeBSD обновлю до 11, посмотрим и на id_distance заодно.

>> улучшая в одном месте

>> улучшая в одном месте можно нарваться на засаду в другом
Это то хорошо понятно (иначе все было бы уже выкручено в "наилучшие" значения)

Но я исхожу из того, что ускорять мне надо "большие чтения", потому что "маленькие" в любом случае происходят быстро (не в Mb/sec, а просто в sec).

Что бы не играть в пятнашки,

Что бы не играть в пятнашки, приведу выдержки из описания работы zfetch от последнего автора mav@:
"Максимальное окно превыборки называется zfetch_max_distance (8MB) для данных и zfetch_max_idistance (64MB) для метаданных (в 10.3). zfetch_array_rd_sz это размер операций чтения выше которого prefetch не срабатывает, предполагая что приложение и так указало весь размер данных что ему нужен и больше читать не будет (спорное мнение как по мне)."
Под zfetch_max_idistance понимается:
"Делается превыборка indirect blocks необходимых для доступа к следующим 64MB данных. На практике это значит чтение наперед всего несколько блоков метаданных, но существенно повышает скорость линейных операций, как чтения так и записи, так как к моменту запроса сразу известно откуда читать и куда писать, и можно сразу слать запрос."
По поводу роста окна предвыборки:
"Увеличивает плавно, но довольно резко -- удваивает окно при каждом
попадании, причем этот алгоритм в новом префетчере поменялся."
От себя добавлю.
max_streams - количество одновременно поддерживаемых потоков чтения, поэтому от изменения их количества скорость последовательного чтения не изменяется. При бездействии (отсутствии чтения) более 2 сек (min_sec_reap) поток из zfetch удаляется.
И ещё, так как zfs претендует на роль универсальной файловой системы, то в настройках по умолчанию выбирается компромис для применения в разных сценариях. Поэтому нужно учитывать, что улучшая в одном месте можно нарваться на засаду в другом.

max_streams 8->32 => 700+ Mb

max_streams 8->32 => 700+ Mb/sec.

Однако блин.

О, fetch_max_distance сильно

О, fetch_max_distance сильно помогает, прям в разы. 550 стали читать (и 650 писать)

Не было печали...

Ну вот по счастью, я вообще в

Ну вот по счастью, я вообще в это не погружался никак: готовая инструкция для NUC (ссылка в посте) содержит и готовый .plist (причем, разные для установки и для работы).

Потому что вот кловер еще изучать - ну блин не хочется вовсе.

Очень подробно функционал

Очень подробно функционал Кловера расписан, собственно, «от автора» (главного программера, если быть точнее) здесь в PDF:
applelife.ru/threads/clover.42089/
Там очень много крутилок набралось за всё время (и будет набираться с выходом новых осей), но если последовательно подобрать для себя рабочую конфигурацию и оформить всё это в .plist для конкретного железа — работает как часы.

по центру!

по центру!

Ну вот ты продаёшь (продавал)

Ну вот ты продаёшь (продавал) объективы как недостаточно резкие на той самой A7r, а тут у каких-то дешёвых стёкол — запас в несколько раз показан.

А в чем противоречие?

А в чем противоречие?

по центру обычно все неплохо

Оффтопик

А у тебя эту статью обсуждали?
http://vgrin.host56.com/photo/articles/pixels/index_r.html
Что-то я вижу там прямое противоречие со всем, что читал об объективах. В том числе и у тебя. Но в чём подвох — понять не могу.

Ну мне ноут этот нужен из

Ну мне ноут этот нужен из единственного соображения что нужно устройство с ретиной для отладки-тестирования.
А так - он хороший, вопросов нет.

А миник этот - пойдет на стол одному из домашних, в самый раз машинка.

А, понятно.

А, понятно.
Просто сейчас из яблочных поделий ноуты- это явно лучшее (правда последний... гхм...).
Тем более, что под linux'ом большинство ноутов быстро выжирают батарею, а windows использовать противно уже.

Ну вот у меня ноут на

Ну вот у меня ноут на хасвелле, это наверное Late 2014.
Купил.

Предыдущий работал 7 лет, так что думаю что и это прослужит еще какое-то время.

А ноут их чего не купил? Как

А ноут их чего не купил? Как раз ещё старые остались, со всеми разъёмами. Ноуты уж больно хороши (железом).

Никто ж не мешает, даже на

Никто ж не мешает, даже на смонтированном пуле, dd if=/dev/da0 of=/dev/zero bs=1M count=8k.
Я всегда проверяю диски перед сборкой массива. Кстати, бывают и странности, да и диски при сборке пула желательно согласовать по скоростям, а то часто и диски из разных серий и с разной скоростью.
Буквально неделю пришлось взять два WD4002FYYZ (в моей местности уже недоступны WD4000FYYZ), так для одного диска верхняя строчка стала первой и последней, хотя как бы и работает. Обещали, что завтра уже получу замену :-).

У меня HBA может маленько

У меня HBA может маленько убавлять. Т.е. на терабайтниках старых он дает на ~10% меньше адаптека.
На 6T - не сравнивал.

Ага, понятно почему оно так

Ага, понятно почему оно так по разному на двух ящиках себе ведет: 12-current и 10-3

Ну, основатель PayPal -

Ну, основатель PayPal - выходец из дружной семьи советских людей...

Я посмотрел на современные

Я посмотрел на современные диски 6Т и вроде они имеют начальную скорость 200MB/s и выше :-).

Для страйпа зеркал для многопоточного последовательного чтения у меня получилась такая формула. Для двух потоков 90-95% от пропускной способности всех дисков. При увеличении потоков, как бы это не казалось удивительным, общая пропускная способность падает совсем незначительно. То есть общая пропускная способность дисков делится на количество потоков. Эта особенность связана с алгоритмом работы префетчера и шедуллера zfs. Также можно наблюдать отставание по времени выполнения некоторых потоков (если они запущены одновременно), но общая пропускная способность не падает.

sysctl -a | grep zfs :-)))

sysctl -a | grep zfs :-))) (это конечно издевательство делать доступным столько настроек).
Ещё раз повторюсь я не разбирался с raidz, но довольно глубоко просмотрел цепочку чтения с mirror, поэтому это гарантированно касается только страйпа из зеркал.
Допустим нужно настроить максимальную скорость последовательного чтения.
Префетчинг - сюда я сильно не влазил, но окно префетчинга для каждого потока в FreeBSD 11 сделали 8MB (в FreeBSD 10.1 было 256 блоков (recordsize), как и в Ubuntu 16.04). Для насыщения всех дисков в пуле (добиться отсутствия простоев) желательно создать очередь чтения к каждому диску. А если дисков много ;-). Например, увеличивая окно до 32MB добавляем 10-20% производительности последовательного чтения.
Алгоритм балансировки зеркала - здесь немного посложнее, но скажу, что немного подправив алгоритм можно получить ещё плюс 20-30%. Кстати, в Ubuntu 16.04 остался старый алгоритм балансировки зеркала "по загрузке" и старые настройки окна префетчинга. Как результат на 1MB recordsize неприлично большой выигрыш в производительности, хотя при других значениях recordsize имеется отставание от FreeBSD.
Шедулер ввода-вывода. Настройка длины активной очереди асинхронного чтения (чтение данных префетчинга) тоже влияет. Но я впоследствии отказался от этой настройки.
Важен размер recordsize. И не всегда больше значит лучше :-). Я остановился на 128kB.
Также общее правило - на диски нужно писать необходимый и достаточный минимум информации что бы головки дисков не летали над дырами (настройки sync, logbias, redundant_metadata).

Может оно с санкциями связано?

Где Ali и где Paypal, Ebay...
Опять же у нас банки могут быть разные (тот же Тинькофф), а за_рубеж через кого они работают?

Насколько помню, Paypal и раньше к РФ неровно дышал... и Ebay предпочитал расчёты через "проверенные_временем_ЗАПАДНЫЕ_системы_е-платежей". ...

Да, но зато два параллельных

Да, но зато два параллельных потока чтения - в отличие от того к чему я привык ранее - друг другу не мешают.

2x200 - пожалуйста (из разных больших файлов)

Pages

Subscribe to comments_recent_new