Свежие комментарии
Title | Comment |
---|---|
Создал датасет test1M с |
Создал датасет test1M с recordsize=1M. dd if=/dev/zero of=/pdf/test1M/test_64G_1M bs=1M count=64k (347MB/s) dd if=/pdf/test1M/test_64G_1M of=/dev/zero bs=1M count=64k (661MB/s) extended device statistics Пул страйп из двух зеркал. В одном зеркале один диск (временно) stripe из ada4 и ada6 (stripesize=64k). Заметил gstat показывает при чтении средний размер запроса чуть меньше 128k, iostat чуть больше 128k. При записи размер среднего запроса такой же. |
Ничего не изменилось |
Ничего не изменилось extended device statistics |
С точки зрения системы это |
С точки зрения системы это наверно не очень хорошее решение, но мне тоже интересно :-). |
Ну я собираю с MAXPHYS=1mb, |
Ну я собираю с MAXPHYS=1mb, ща попробуем. |
У меня других мыслей нет. |
У меня других мыслей нет. Разве, что я отстал от жизни :-). |
/sys/sys/param.h |
/sys/sys/param.h #define MAXPHYS (128 * 1024) /* max raw I/O transfer size */ |
defaults |
defaults И, удивительным образом, не нашел как этот параметр посмотреть у собранного. Ищу вот... |
Кстати, если ядро собрано с |
Кстати, если ядро собрано с MAXPHYS=256k, то получится средний размер запроса в ~170kB. |
На счёт скорости дисков. |
На счёт скорости дисков. Вполне нормально, если скорости будут отличаться. Просто при жесткой увязке (как у raidz) быстрые диски будут привязаны к скорости более медленных и будут потери производительности. Но моя мысль была связана с полосатостью патерна чтения. Допустим нужно прочитать блок данных (recordsize), как в твоём последнем случае. Будет сформирован запрос на чтение (zio) 1MB, затем опускаясь по стеку будут сформированы три дочерних запроса (zio) по ~340kB и так далее. К моменту прихода запроса на физический диск может сложиться такая ситуация, что допустим один диск может прочитать сектора сразу, а два других должны будут пролететь перед чтением контрольные блоки. То есть один диск будет опережать два других. Возникла мысль, а может ли возникнуть в процессе чтения ситуация, что один диск прочитал всю свою порцию чтения из окна префетчинга, а один ещё только читает свою первую часть порцию. Тогда наверно возможна ситуация, что следующий запрос на чтение придет на, выполнивший свою работу, диск когда тот уже пролетит над этими данными и ему потребуется сделать лишний оборот. Это конечно предположение и возможно диск всегда читает дорожку и складывает данные в свой кэш. Поэтому я написал, что разница скоростей могла бы немного "посодействовать" подобной ситуации. Кстати, у зеркала при чтении нет такого влияния разницы скоростей дисков, потому что алгоритм балансировки построен на загрузке дисков и также нет жёстких связей (весь блок (recordsize) читается только с одного диска). Поэтому при чтении может быть выбрана почти вся пропускная способность. Мало того, в zfs предусмотрена возможность работы в зеркале ssd и hdd одновременно. Специально подстроен алгоритм балансировки. Для этого даже сделали автоматическое определение типа диска (non_rotating), пока правда только во FreeBSD. Размер запроса на диск. При входе в подсистему geom, в твоём случае запрос (zio) ~340kB, Будут сформированы три дочерних запроса (bio) - 128kB, 128kB и ~84kB. Почему средний размер запроса ~170kB ума не приложу :-). Хотя он конечно коррелирует с ~340kB. |
Откуда взялись эти средние |
А вот вам с другого ящика (tar cf - | mbuffer -o /dev/null mbuffer - чтобы видеть мгновенные скорости): extended device statistics У меня получается ~170kb на запрос. Что тоже интересно. Да, диски тут строго одной модели, но один куплен на полтора года позже прочих (вместо вылетевшего) recordsize=1m, 5 дисков в raidz2 |
Так как я опасаюсь адаптека |
Так как я опасаюсь адаптека (там при смене дисков надо их "инициализировать" и хрен знает что оно при этом затирает) - я заказал еще один 9211, благо копейки стоит, придет (через дней 10, я надеюсь) - и буду развлекаться. |
Была констатация факта, что |
Была констатация факта, что при "нормальном" чтении контрольные блоки не читаются. Этот факт говорит только о "мгновенном" неравномерном чтении. Как оно там дальше я не знаю. Из твоих описаний можно предположить, что raidz2 ведёт себя, как набранный из кусочков raid4, причём довольно больших. Что является поводом для смены положения контрольных блоков - малелькая запись (допустим метаданных) или принудительное смещение мне не известно. |
>> получали в два раза больше |
>> получали в два раза больше запросов И вот эта загрузка она в моменте (без префетча) у двух дисков из 6 вообще 0. Но незагруженные диски - меняются. Длинный префетч это размазывает, естественно. |
Про "в два раза больше" - это |
Про "в два раза больше" - это был исходный вопрос, с которого все и началось. |
Думаю, что можно и это самый |
Думаю, что можно и это самый лучший вариант. Я бы без чёткого понимания ситуации даже бы и не дёргался. Единственное на чём бы я заострил внимание - это разница в скорости дисков. Не уверен, но она тоже могла бы немного "посодействовать". Из твоего iostat однозначно видно, что два диска из шести получали в два раза больше запросов, то есть данные так уже лежали на дисках. Наверно это самое важное. Меня тогда же ещё смутил средний размер запроса чтения с диска (в районе 32k). Вроде из твоих описаний про 1M recordsize на диски должны приходить в основном запросы в 128k. Откуда взялись эти средние ~32k? |
>> устойчиво не хорошее |
>> устойчиво не хорошее сочетание разных факторов" Ну вот казалось бы, 2^N+R (R-избыточность) - это ровно рекомендованное количество дисков. Прежде чем двигать эти терабайты еще раз, вот у меня лежат на подоконнике 8 терабайтников (вынутые из "рабочего ящика", туда пошли четверки). Путь им - в дискетки, но пока они просто пустые. Можно ли, собирая массив из них, подвердить или опровергнуть гипотезу с "сочетанием факторов"? |
Ну вот и доказали, что с |
Ну вот и доказали, что с аппаратной частью у тебя всё хорошо. У меня ещё такой пропускной способности в руках не было, но думаю можно попробовать настроить последовательное чтение до 1GB/s (какая символическая цифра :-)). Если всё таки надумаешь перезаливать данные, то предлагаю потратить дополнительные 30 мин для проверки данного допущения (и количество дисков подходящее и скорости дисков распределились как надо :-)). |
Ну вот сумма на 30 больше |
Ну вот сумма на 30 больше даже. |
He8 - на 4-6 градусов |
He8 - на 4-6 градусов холоднее при одинаковом охлаждении, у меня (летом) это место близко к критичному бывает. |
По одному - это по одному, а |
По одному - это по одному, а все вместе - это все вместе :-). За одно сверим с этой цифрой 210+210+210+185+185+185=1185. |
По iostat -x/gstat у всех |
По iostat -x/gstat у всех дисков 99% и ожидаемая скорость: ~215 у обычных, 200 (из того что ниже - получается 190) у He8 А вот без group reporting: |
Ну если только most |
Ну если только most frequently used -- то какие-то изменения в производительности я замечу только когда туда rootfs перенесу (точнее /nix/storage где лежит основной компот типа компиляторов и инклюдов от них) -- пока на zfs только maildir и buildroot от локальной сборочницы. И как я понимаю у меня сейчас кеши от остальных FS дерутся с zfs (arc/l2arc) за память/io. И разницы пока я не завершу переезд я не увижу. PS а тут можно зарегистрироваться, чтобы не вводить капчу каждый раз? |
Я их dd почитал по одному. |
Я их dd почитал по одному. ~210Mb/s обычные, 185 - гелиевые, гелиевые чуть помедленнее - но это и ожидалось. |
Судя по: "Ладно, плюнул, |
Судя по: "Ладно, плюнул, временно пересобрал страйп из 6 этих же дисков: запись ~1100Mb/sec, чтение ~550Mb/sec" с дисками всё нормально. Смущает конечно чтение, но чтобы снять все подозрения с аппаратной части: test_all: ; job fio [0] [1] [2] [3] [4] [5] Диски (или разделы) поставь соответственно входящие в пул. Тест безопасный (будет одновременно читать 100 сек все диски с максимальной скоростью). Желательно проконтролировать (gstat) во время чтения загрузку дисков (должна быть близкой к 100%). Затем покажешь выведенную строчку. |
Префетченое оно положит в |
Префетченое оно положит в память, естественно. По идее, в L2arc должно идти most frequently used (а MRU - нет). |
А как этот prefetch влияет на |
А как этот prefetch влияет на l2arc? (оно не будет бухать туда 8мегабайтные куски? особенно для датасетов с мелкими recordsize) PS Пардон за тупые вопросы -- я живой zfs вижу третий день (к тому же на линуксе, и под ним еще довольно фрагментированый lvm лежит) |
Да-да, очень похоже. |
Да-да, очень похоже. |
Я не очень понимаю, как на |
Я не очень понимаю, как на мак поставить "сначала винду". |
Почему-то вспомнился "анекдот" про Солярис... |
Не помню в какой версии Солярки таймаут ответа при отсылке почты стоял "0". Поэтому письма ГЕОГРАФИЧЕСКИ ближе 400км доходили, дальше - отлуп по таймауту. |
Вот и надо наоборот. |
Ставьте сначала Винду, а затем Хакинтош. :-D |