diff options
| author | bazeltsev <[email protected]> | 2023-03-21 11:24:46 +0300 |
|---|---|---|
| committer | bazeltsev <[email protected]> | 2023-03-21 11:24:46 +0300 |
| commit | c5cff1c385e478e5f9285388b1b56b852fdbc0d5 (patch) | |
| tree | b8bd546ccb2cc7bde4714efc0e357abf31d5b3f1 | |
| parent | fdb6efd6d67e871c970a7b684d37fd3f1872be35 (diff) | |
Added VDisk load actor docs
Improve VDiskLoad docs
| -rw-r--r-- | ydb/docs/ru/core/_includes/load-actors-interval.md | 7 | ||||
| -rw-r--r-- | ydb/docs/ru/core/development/load-actors-storage.md | 10 | ||||
| -rw-r--r-- | ydb/docs/ru/core/development/load-actors-vdisk.md | 57 |
3 files changed, 33 insertions, 41 deletions
diff --git a/ydb/docs/ru/core/_includes/load-actors-interval.md b/ydb/docs/ru/core/_includes/load-actors-interval.md new file mode 100644 index 00000000000..48cdd6f7d09 --- /dev/null +++ b/ydb/docs/ru/core/_includes/load-actors-interval.md @@ -0,0 +1,7 @@ +Интервал, записанный в виде repeated-поля `TIntervalInfo`, вычисляется по следующему алгоритму: + +* случайным образом выбирается элемент из массива `TIntervalInfo` с вероятностью, пропорциональной весу; +* для элемента типа `TIntervalUniform` равновероятно выбирается значение в интервале `Min-Max` (если указано `MinMs/MaxMs`, то значение в миллисекундах; если `MinUs/MaxUs` — в микросекундах); +* для элемента типа `TIntervalPoisson` выбирается интервал по формуле `Min(log(-x / Frequency), MaxIntervalMs)`, где `x` — случайное значение в интервале `[0, 1]`, что обеспечивает соответствие интервалов распределению Пуассона с частотой `Frequency`, но с интервалом не больше `MaxIntervalMs`. + +Аналогичный механизм применяется и для вероятностного распределения размеров записываемых данных, за исключением того, что в том механизме есть только равновероятное распределение размера `[Min, Max]`. diff --git a/ydb/docs/ru/core/development/load-actors-storage.md b/ydb/docs/ru/core/development/load-actors-storage.md index f7f51982235..2d4cda78497 100644 --- a/ydb/docs/ru/core/development/load-actors-storage.md +++ b/ydb/docs/ru/core/development/load-actors-storage.md @@ -16,15 +16,19 @@ ` DurationSeconds` | Продолжительность нагрузки. ` Tablets` | Нагрузка подается от имени таблетки со следующими реквизитами:<ul><li>` TabletId` — идентификатор таблетки. Должен быть уникальным для каждого нагружающего актора.</li><li>` Channel` — канал таблетки.</li><li>` GroupId` — идентификатор группы VDisk'ов, на которую будет подана нагрузка.</li><li>` Generation` — поколение таблетки.</li></ul> ` WriteSizes` | Размер записываемых данных. Для каждого запроса выбирается случайным образом из интервала `Min`-`Max`. Вы можете задать несколько диапазонов `WriteSizes`, и тогда выбор значения из конкретного диапазона будет определяться его `Weight`. -` WriteIntervals` | Пауза между запросами для интервальной нагрузки в микросекундах. Для каждого запроса выбирается случайным образом из интервала `MinUs`-`MaxUs`. Вы можете задать несколько диапазонов `WriteIntervals`, и тогда выбор значения из конкретного диапазона будет определяться его `Weight`. +` WriteIntervals` | Описание [параметров вероятностного распределения](#params) временных интервалов между записями для интервальной нагрузки в микросекундах. Вы можете задать несколько диапазонов `WriteIntervals`, и тогда выбор значения из конкретного диапазона будет определяться его `Weight`. ` MaxInFlightWriteRequests` | Максимальное количество одновременно обрабатываемых запросов на запись. ` ReadSizes` | Размер читаемых данных. Для каждого запроса выбирается случайным образом из интервала `Min`-`Max`. Вы можете задать несколько диапазонов `ReadSizes`, и тогда выбор значения из конкретного диапазона будет определяться его `Weight`. -` ReadIntervals` | Пауза между запросами для интервальной нагрузки в микросекундах. Для каждого запроса выбирается случайным образом из интервала `MinUs`-`MaxUs`. Вы можете задать несколько диапазонов `ReadIntervals`, и тогда выбор значения из конкретного диапазона будет определяться его `Weight`. +` ReadIntervals` | Описание [параметров вероятностного распределения](#params) временных интервалов между запросами для интервальной нагрузки в микросекундах. Вы можете задать несколько диапазонов `ReadIntervals`, и тогда выбор значения из конкретного диапазона будет определяться его `Weight`. ` MaxInFlightReadRequests` | Максимальное количество одновременно обрабатываемых запросов на чтение. -` FlushIntervals` | Интервал времени между запросами на удаление записанных StorageLoad данных в микросекундах. Выбирается случайным образом из интервала `MinUs`-`MaxUs`. Вы можете задать несколько диапазонов `FlushIntervals`, и тогда выбор значения из конкретного диапазона будет определяться его `Weight`. +` FlushIntervals` | Описание [параметров вероятностного распределения](#params) временных интервалов между запросами на удаление записанных StorageLoad данных в микросекундах. Вы можете задать несколько диапазонов `FlushIntervals`, и тогда выбор значения из конкретного диапазона будет определяться его `Weight`. ` PutHandleClass` | Класс записи данных в дисковую подсистему. В случае `TabletLog` запись выполняется с максимальным приоритетом. ` GetHandleClass` | Класс чтения данных с дисковой подсистемы. В случае `FastRead` чтение выполняется с максимальной скоростью. +### Параметры вероятностного распределения {#params} + +{% include [load-actors-params](../_includes/load-actors-interval.md) %} + ## Примеры {#examples} ### Нагрузка на запись {#write} diff --git a/ydb/docs/ru/core/development/load-actors-vdisk.md b/ydb/docs/ru/core/development/load-actors-vdisk.md index abcd06d0035..f8c44118ed2 100644 --- a/ydb/docs/ru/core/development/load-actors-vdisk.md +++ b/ydb/docs/ru/core/development/load-actors-vdisk.md @@ -1,49 +1,30 @@ # VDiskLoad -Подает нагрузку write-only на VDisk. Имитирует Distributed Storage Proxy. Результатом теста является производительность записи в операциях в секунду. +Подает нагрузку write-only на VDisk. Имитирует Distributed Storage Proxy. Результатом теста является производительность записи на VDisk в операциях в секунду. {% include notitle [addition](../_includes/addition.md) %} ## Параметры актора {#options} -```proto -message TVDiskLoad { - optional uint64 Tag = 1; +{% include [load-actors-params](../_includes/load-actors-params.md) %} - // full VDisk identifier - optional NKikimrBlobStorage.TVDiskID VDiskId = 2; +Параметр | Описание +--- | --- +`VDiskId` | Параметры VDisk, от имени которого подается нагрузка.<ul><li>`GroupID` — идентификатор группы.</li><li>`GroupGeneration` — поколение группы.</li><li>`Ring` — идентификатор кольца в группе.</li><li>`Domain` — идентификатор фэйл-домена в кольце.</li><li>`VDisk` — индекс VDisk в фэйл-домене.</li></ul> +`GroupInfo` | Описание группы, в которую входит нагружаемый VDisk (в корректном поколении). +`TabletId` | Идентификатор таблетки, от имени которой подается нагрузка. Должен быть уникальным для каждого нагружающего актора. +`Channel` | Номер канала внутри таблетки, который будет указан в командах записи блобов и сборки мусора. +`DurationSeconds` | Полная длительность теста в секундах, по достижению которой нагрузка автоматически прекращается. +`WriteIntervals` | Описание [параметров вероятностного распределения](#params) временных интервалов между записями. +`WriteSizes` | Размер записываемых данных. Для каждого запроса выбирается случайным образом из интервала `Min`-`Max`. Вы можете задать несколько диапазонов `WriteSizes`, и тогда выбор значения из конкретного диапазона будет определяться его `Weight`. +`InFlightPutsMax` | Максимальное количество одновременно выполняемых запросов на запись блоба в VDisk (TEvVPut-запросы); если не указан, то число запросов не ограничивается. +`InFlightPutBytesMax` | Максимальное количество байт в одновременно выполняемых запросах на запись блоба в VDisk (TEvVPut-запросы). +`PutHandleClass` | Класс записи данных в дисковую подсистему. В случае `TabletLog` запись выполняется с максимальным приоритетом. +`BarrierAdvanceIntervals` | Описание [параметров вероятностного распределения](#params) интервалов между передвижением барьера сборки мусора и шага записи. +`StepDistance` | Расстояние между текущим записываемым шагом `Gen:Step` блоба и собираемым. Чем больше эта величина, тем больше данных хранится. Запись происходит с `Step = X`, удаление — всех блобов со `Step = X - StepDistance`. При этом периодически (с периодом `BarrierAdvanceIntervals`) `Step` увеличивается на единицу. - reserved 3; // obsolete field - reserved 4; // obsolete field - optional NKikimrBlobStorage.TGroupInfo GroupInfo = 16; +### Параметры вероятностного распределения {#params} - // tablet id, channel and generation used in blob ids and barriers - optional uint64 TabletId = 5; - optional uint32 Channel = 6; - optional uint32 Generation = 7; +{% include [load-actors-params](../_includes/load-actors-interval.md) %} - // duration of the test in seconds - optional uint32 DurationSeconds = 8; - - // a distribution of intervals between adjacent writes - repeated TIntervalInfo WriteIntervals = 9; - - // a distribution of write block sizes (expressed in bytes of BlobSize; i.e. PartSize bytes are actually written) - repeated TSizeInfo WriteSizes = 10; - - // maximum number of unconfirmed parallel writes - optional uint32 InFlightPutsMax = 11; - - // soft maximum of total in flight put bytes - optional uint64 InFlightPutBytesMax = 12; - - // put handle class - optional NKikimrBlobStorage.EPutHandleClass PutHandleClass = 13; - - // a distribution of intervals between barrier advances - repeated TIntervalInfo BarrierAdvanceIntervals = 14; - - // minimum distance kept between current Step of written blobs and CollectStep of barriers - optional uint32 StepDistance = 15; -} -``` +<!-- ## Примеры {#examples} --> |
