VDiskLoad
Подает нагрузку write-only на VDisk. Имитирует Distributed Storage Proxy. Результатом теста является производительность записи на VDisk в операциях в секунду.
Примечание
Материал статьи дополняется.
Параметры актора
Ниже описаны основные параметры актора. Полный список параметров смотрите в файле load_test.proto Git-репозитория YDB.
Параметр | Описание |
---|---|
VDiskId |
Параметры VDisk, от имени которого подается нагрузка.
|
GroupInfo |
Описание группы, в которую входит нагружаемый VDisk (в корректном поколении). |
TabletId |
Идентификатор таблетки, от имени которой подается нагрузка. Должен быть уникальным для каждого нагружающего актора. |
Channel |
Номер канала внутри таблетки, который будет указан в командах записи блобов и сборки мусора. |
DurationSeconds |
Полная длительность теста в секундах, по достижению которой нагрузка автоматически прекращается. |
WriteIntervals |
Описание параметров вероятностного распределения временных интервалов между записями. |
WriteSizes |
Размер записываемых данных. Для каждого запроса выбирается случайным образом из интервала Min -Max . Вы можете задать несколько диапазонов WriteSizes , и тогда выбор значения из конкретного диапазона будет определяться его Weight . |
InFlightPutsMax |
Максимальное количество одновременно выполняемых запросов на запись блоба в VDisk (TEvVPut-запросы); если не указан, то число запросов не ограничивается. |
InFlightPutBytesMax |
Максимальное количество байт в одновременно выполняемых запросах на запись блоба в VDisk (TEvVPut-запросы). |
PutHandleClass |
Класс записи данных в дисковую подсистему. В случае TabletLog запись выполняется с максимальным приоритетом. |
BarrierAdvanceIntervals |
Описание параметров вероятностного распределения интервалов между передвижением барьера сборки мусора и шага записи. |
StepDistance |
Расстояние между текущим записываемым шагом Gen:Step блоба и собираемым. Чем больше эта величина, тем больше данных хранится. Запись происходит с Step = X , удаление — всех блобов со Step = X - StepDistance . При этом периодически (с периодом BarrierAdvanceIntervals ) Step увеличивается на единицу. |
Параметры вероятностного распределения
Интервал, записанный в виде repeated-поля TIntervalInfo
, вычисляется по следующему алгоритму:
- случайным образом выбирается элемент из массива
TIntervalInfo
с вероятностью, пропорциональной весу; - для элемента типа
TIntervalUniform
равновероятно выбирается значение в интервалеMin-Max
(если указаноMinMs/MaxMs
, то значение в миллисекундах; еслиMinUs/MaxUs
— в микросекундах); - для элемента типа
TIntervalPoisson
выбирается интервал по формулеMin(log(-x / Frequency), MaxIntervalMs)
, гдеx
— случайное значение в интервале[0, 1]
, что обеспечивает соответствие интервалов распределению Пуассона с частотойFrequency
, но с интервалом не большеMaxIntervalMs
.
Аналогичный механизм применяется и для вероятностного распределения размеров записываемых данных, за исключением того, что в том механизме есть только равновероятное распределение размера [Min, Max]
.