Size: a a a

SDS и Кластерные FS

2021 January 26

Am

Alexander mamahtehok in SDS и Кластерные FS
Но с неадекватными параметрами можно и в него не уперется засунов все дангые. В кешь :)
источник

na

nikolay a in SDS и Кластерные FS
Виталий На Заборе
ну у тебя же идёт как. fio -> ядро -> драйвер СХД -> очередь тома
таким образом если даже в fio 4 потока и в ядре 4 очереди (blk-mq), а в драйвере СХД 1 поток - то запросы из 4 потоков fio просто сольются в 1 поток
то что ты говоришь по разным ядрам - это не шедулер, а blk-mq (шедулер только запросы переставляет/мержит)
и при этом как я понимаю кроме NVMe / NVMeoF НЕТ интерфейсов, которые бы умели несколько очередей, поэтому фактически всегда такая ситуация что запросы к 1 тому сливаются в 1 поток
все верно, только не в один поток, а в одну очередь). но надо помнить что у схд есть фронтенд, задача которого максимально быстро отдать ack в потребителя и есть внутренняя логика распределения записи по лунам и по дискам. если на фронтенд подать один поток с одного хоста (один экземпляр fio) - то мы упремся в глубину очереди блочного устройства, HBA на уровне хоста. поверь глубина очереди на лун, в случае enterprise сеегмента схд, существенно больше чем на уровне хоста. поэтому схд в приведенном мной случае окажется ненагруженной. плюс есть схд (например трипар) которые могут прогрузить все ядра даже при использовании одного луна. но опять же, подав один поток с fio (с любым значением глубины очереди) на трипар ты не прогрузишь на 100%. другими словами при таком  тесте ты не увидишь максимально возможного уровня производительности схд.
источник

N

Nikolay Kulikov in SDS и Кластерные FS
nikolay a
у вменяемой схд есть свой шедулер, задача которого максимально задействовать все ядра для обработки ввода/вывода. а в случае одного потока такое может не получиться. поэтому в тестах желательно понимать архитектуру схд и учитывать ее при формировании нагрузки..
Не согласен насчёт учёта особенностей архитектуры — так может получится очень предвзятое тестирование (например одна система лучше держит один формат нагрузки, а вторая — другой. Какой выбрать часто не тривиально). Тестировать имхо нужно в формате “blackbox” - параметры и формат нагрузки, как я писал ранее исключительно на основании данных с инфраструктуры/задачи или прошлых этапов тестирования - каждый вендор настраивает свою систему оптимальным на его взгляд способом, запускаются тесты и фиксируются результаты. Например, если нам важна производительность одной вм/VMDK, то нам наплевать как какая СХД параллелит нагрузку между лунами и сколько в их best practices написано нужно создавать лунов на голову.
источник

ВН

Виталий На Заборе... in SDS и Кластерные FS
nikolay a
все верно, только не в один поток, а в одну очередь). но надо помнить что у схд есть фронтенд, задача которого максимально быстро отдать ack в потребителя и есть внутренняя логика распределения записи по лунам и по дискам. если на фронтенд подать один поток с одного хоста (один экземпляр fio) - то мы упремся в глубину очереди блочного устройства, HBA на уровне хоста. поверь глубина очереди на лун, в случае enterprise сеегмента схд, существенно больше чем на уровне хоста. поэтому схд в приведенном мной случае окажется ненагруженной. плюс есть схд (например трипар) которые могут прогрузить все ядра даже при использовании одного луна. но опять же, подав один поток с fio (с любым значением глубины очереди) на трипар ты не прогрузишь на 100%. другими словами при таком  тесте ты не увидишь максимально возможного уровня производительности схд.
Ну так какая хрен разница фронтенду : в него придет 1 очередь сгенеренная 1 потоком фио или 1 очередь сгенеренная 4 потоками фио?
источник

ВН

Виталий На Заборе... in SDS и Кластерные FS
Если в итоге размер этой очереди одинаковый
источник

T

The in SDS и Кластерные FS
tsla
Ага, но он вышел же из всех чатов кроме церкви метрик
Просто везде помнят, как Шуклин свои прекрасные стореджи строил в Селектеле.
источник

na

nikolay a in SDS и Кластерные FS
Виталий На Заборе
Ну так какая хрен разница фронтенду : в него придет 1 очередь сгенеренная 1 потоком фио или 1 очередь сгенеренная 4 потоками фио?
для фроненда это четыре независимых потока, которые он должен обработать. на уровне фронтенда они никак не сливаются..
источник

na

nikolay a in SDS и Кластерные FS
Виталий На Заборе
Если в итоге размер этой очереди одинаковый
не понял, о какой очереди идет речь?)
источник

ВН

Виталий На Заборе... in SDS и Кластерные FS
nikolay a
для фроненда это четыре независимых потока, которые он должен обработать. на уровне фронтенда они никак не сливаются..
А почему ты уверен, что фронтенд увидит эти 4 потока как независимые?
источник

na

nikolay a in SDS и Кластерные FS
Виталий На Заборе
А почему ты уверен, что фронтенд увидит эти 4 потока как независимые?
странный вопрос.
источник

ВН

Виталий На Заборе... in SDS и Кластерные FS
nikolay a
странный вопрос.
да ничего странного. для начала надо вообще посмотреть на хосте, с которого тестишь, есть ли у устройства mq? ls /sys/block/sdXX/mq/ - ну то есть сколько очередей
источник

ВН

Виталий На Заборе... in SDS и Кластерные FS
если очередь одна то вообще глубоко пофиг сколько потоков fio
источник

ВН

Виталий На Заборе... in SDS и Кластерные FS
если не одна то далее вопрос докуда она не одна: только до HBA или реально протокол СХД поддерживает параллельные очереди
источник

na

nikolay a in SDS и Кластерные FS
Виталий На Заборе
если очередь одна то вообще глубоко пофиг сколько потоков fio
почему то у меня в случае с увеличением значения параметра numjobs растет количество iops на уровне схд (тех которые доводилось тестировать). даже если я запустил fio на одном хосте. как у тебя - не знаю)
источник

ВН

Виталий На Заборе... in SDS и Кластерные FS
nikolay a
почему то у меня в случае с увеличением значения параметра numjobs растет количество iops на уровне схд (тех которые доводилось тестировать). даже если я запустил fio на одном хосте. как у тебя - не знаю)
ну сравнивать надо условно 1x128 vs 2x64 vs 4x32
источник

ВН

Виталий На Заборе... in SDS и Кластерные FS
если ты сравниваешь 1x32 vs 4x32 то конечно оно растёт, т.к. суммарная глубина очереди растёт
источник

ВН

Виталий На Заборе... in SDS и Кластерные FS
у меня вообще только цеф и голые диски =))) на цефе так: от числа потоков _в_разные_RBD_ растёт
источник

ВН

Виталий На Заборе... in SDS и Кластерные FS
от числа потоков _в_один_RBD_ падает причём сразу раз в 10
источник

ВН

Виталий На Заборе... in SDS и Кластерные FS
но это ясно почему: потому что клиент тоже написан кривыми х*ями и он на запись максимум может прокачать примерно 10000 иопс
источник

ВН

Виталий На Заборе... in SDS и Кластерные FS
а 2 клиента - сожрут больше CPU но соответственно уже 20к прокачают
источник