diff options
author | bazeltsev <bazeltsev@ydb.tech> | 2022-12-01 17:57:53 +0300 |
---|---|---|
committer | bazeltsev <bazeltsev@ydb.tech> | 2022-12-01 17:57:53 +0300 |
commit | 249d470f713fe51ed84eed444aae8a29157a426e (patch) | |
tree | 5a7b75eb7493bf78daed819d8e9edf0a09c76540 | |
parent | 91d3e1feb4f1a7648f4eedfd2eb1f113b222501f (diff) | |
download | ydb-249d470f713fe51ed84eed444aae8a29157a426e.tar.gz |
Load actors tail
updated
-rw-r--r-- | ydb/docs/ru/core/_includes/addition.md | 5 | ||||
-rw-r--r-- | ydb/docs/ru/core/development/key-value-load-start.md | 8 | ||||
-rw-r--r-- | ydb/docs/ru/core/development/kqp-load-start.md | 124 | ||||
-rw-r--r-- | ydb/docs/ru/core/development/load-start.md | 94 | ||||
-rw-r--r-- | ydb/docs/ru/core/development/load-stop.md | 32 | ||||
-rw-r--r-- | ydb/docs/ru/core/development/memory-load-start.md | 26 | ||||
-rw-r--r-- | ydb/docs/ru/core/development/pdisk-load-start.md | 44 | ||||
-rw-r--r-- | ydb/docs/ru/core/development/pdisk-log-load-start.md | 47 | ||||
-rw-r--r-- | ydb/docs/ru/core/development/pdisk-read-load-start.md | 8 | ||||
-rw-r--r-- | ydb/docs/ru/core/development/testing-load-actor.md | 38 | ||||
-rw-r--r-- | ydb/docs/ru/core/development/vdisk-load-start.md | 9 | ||||
-rw-r--r-- | ydb/docs/ru/core/toc_i.yaml | 4 |
12 files changed, 281 insertions, 158 deletions
diff --git a/ydb/docs/ru/core/_includes/addition.md b/ydb/docs/ru/core/_includes/addition.md new file mode 100644 index 00000000000..68bb03e30bb --- /dev/null +++ b/ydb/docs/ru/core/_includes/addition.md @@ -0,0 +1,5 @@ +{% note info %} + +Материал статьи дополняется. + +{% endnote %} diff --git a/ydb/docs/ru/core/development/key-value-load-start.md b/ydb/docs/ru/core/development/key-value-load-start.md index 4d879ffbabd..94161a96f4d 100644 --- a/ydb/docs/ru/core/development/key-value-load-start.md +++ b/ydb/docs/ru/core/development/key-value-load-start.md @@ -1,6 +1,6 @@ -# Нагрузка для KV-таблетки +# Key-Value нагрузка -## Описание +## Структура {#proto} ```proto message TKeyValueLoadStart { @@ -16,4 +16,6 @@ message TKeyValueLoadStart { optional uint32 DurationSeconds = 5; repeated TWorkerConfig Workers = 7; } -```
\ No newline at end of file +``` + +{% include notitle [addition](../_includes/addition.md) %} diff --git a/ydb/docs/ru/core/development/kqp-load-start.md b/ydb/docs/ru/core/development/kqp-load-start.md index 48393779c24..9ab7101d668 100644 --- a/ydb/docs/ru/core/development/kqp-load-start.md +++ b/ydb/docs/ru/core/development/kqp-load-start.md @@ -1,53 +1,83 @@ -# KQP нагружалка +# KQP нагрузка + +## Структура {#proto} -## Описание ```proto - message TKqpLoadStart { - message TStockWorkload { // ссылка на описание StockWorkload? Параметры as-is скопированны оттуда - optional uint64 ProductCount = 1 [default = 100]; - optional uint64 Quantity = 2 [default = 1000]; - optional uint64 OrderCount = 3 [default = 100]; - optional uint64 Limit = 4 [default = 10]; - optional bool PartitionsByLoad = 5 [default = true]; - } - message TKvWorkload { - optional uint64 InitRowCount = 1 [default = 1000]; // необязательный. До начала нагрузки нагружающий актор запишет - // InitRowCount строк в таблицу - optional bool PartitionsByLoad = 2 [default = true]; // необязательный. Добавлять ли к тестовой таблице аттрибут AUTO_PARTITIONING_BY_LOAD - optional uint64 MaxFirstKey = 3 [default = 18446744073709551615]; // необязательный. Ограничивает диапазон значений ключа. - // Создан для того, чтобы при читающей нагрузке случайные ключи попадал в диапазон ключей таблицы - optional uint64 StringLen = 4 [default = 8]; // необязательный. Длина строки value - optional uint64 ColumnsCnt = 5 [default = 2]; // необязательный. Сколько столбцов использовать в таблице. - // По умолчанию 2 - один для key, второй для value. - optional uint64 RowsCnt = 6 [default = 1]; // необязательный. Сколько строк вставлять/читать в одном SQL запросе - } - optional uint64 Tag = 1; // необязательный. Если не задан, то тег будет присвоен автоматически - optional uint32 DurationSeconds = 2; // обязательный. Длительность теста - optional uint32 WindowDuration = 3; // обязательный. Размер окна для агрегации статистики - optional string WorkingDir = 4; // обязательный. Путь до директории, где будут созданы тестовые таблицы - optional uint32 NumOfSessions = 5; // обязательный. Количество параллельных потоков, подающих нагрузку. Каждый поток пишет в свою сессию - optional bool DeleteTableOnFinish = 6; // обязательный. Удалять ли таблицы после завершения работы нагрузки. Неудаление полезно в сценарии - // долгого предварительного создания большой таблицы и последующими (читающими) тестами. - optional uint32 UniformPartitionsCount = 7; // обязательный. Количество партиций, создаваемых в тестовых таблицах - optional uint32 WorkloadType = 8; // обязательный. Позволяет выбрать тип нагрузки. - // В случае KV: - // 0 - UpsertRandom, - // 1 - InsertRandom, - // 2 - SelectRandom - // В случае Stock: - // 0 - InsertRandomOrder, - // 1 - SubmitRandomOrder, - // 2 - SubmitSameOrder, - // 3 - GetRandomCustomerHistory, - // 4 - GetCustomerHistory - oneof Workload { - TStockWorkload Stock = 9; - TKvWorkload Kv = 10; - } +message TKqpLoadStart { + message TStockWorkload { + optional uint64 ProductCount = 1 [default = 100]; + optional uint64 Quantity = 2 [default = 1000]; + optional uint64 OrderCount = 3 [default = 100]; + optional uint64 Limit = 4 [default = 10]; + optional bool PartitionsByLoad = 5 [default = true]; + } + message TKvWorkload { + optional uint64 InitRowCount = 1 [default = 1000]; + optional bool PartitionsByLoad = 2 [default = true]; + optional uint64 MaxFirstKey = 3 [default = 18446744073709551615]; + optional uint64 StringLen = 4 [default = 8]; + optional uint64 ColumnsCnt = 5 [default = 2]; + optional uint64 RowsCnt = 6 [default = 1]; } + optional uint64 Tag = 1; + optional uint32 DurationSeconds = 2; + optional uint32 WindowDuration = 3; + optional string WorkingDir = 4; + optional uint32 NumOfSessions = 5; + optional bool DeleteTableOnFinish = 6; + optional uint32 UniformPartitionsCount = 7; + optional uint32 WorkloadType = 8; + oneof Workload { + TStockWorkload Stock = 9; + TKvWorkload Kv = 10; + } +} ``` -## Примеры +## Параметры {#options} + +### TKqpLoadStart + +Параметр | Описание +--- | --- +`TStockWorkload[]` | [link](#stock-workload). +`TKvWorkload[]` | [link](#kv-workload). +`Tag` | Тег нагрузки. Если не задан, то тег будет присвоен автоматически.<br>Тип: `uint64`.<br>Необязательный. +`DurationSeconds` | Длительность теста в секундах.<br>Тип: `uint32`.<br>Обязательный. +`WindowDuration` | Размер окна для агрегации статистики.<br>Тип: `uint32`.<br>Обязательный. +`WorkingDir` | Путь директории, в которой будут созданы тестовые таблицы.<br>Тип: `string`.<br>Обязательный. +`NumOfSessions` | Количество параллельных потоков, подающих нагрузку. Каждый поток пишет в свою сессию.<br>Тип: `uint32`.<br>Обязательный. +`DeleteTableOnFinish` | обязательный. Удалять ли таблицы после завершения работы нагрузки. Неудаление полезно в сценарии долгого предварительного создания большой таблицы и последующими (читающими) тестами.<br>Тип: `bool`.<br>Обязательный. +`UniformPartitionsCount` | Количество партиций, создаваемых в тестовых таблицах.<br>Тип: `uint32`.<br>Обязательный. +`WorkloadType` | Позволяет выбрать тип нагрузки.<br>Key-Value:<ul><li>`0` — UpsertRandom;</li><li>`1` — InsertRandom;</li><li>`2` — SelectRandom.</li></ul>Stok:<ul><li>`0` — InsertRandomOrder;</li><li>`1` — SubmitRandomOrder;</li><li>`2` — SubmitSameOrder;</li><li>`3` — GetRandomCustomerHistory;</li><li>`4` — GetCustomerHistory.</li></ul>Тип: `uint32`.<br>Обязательный. +`Workload` | Одно из значений:<ul><li>`TStockWorkload Stock` — ;</li><li>`TKvWorkload Kv` — .</li></ul> + +### TStockWorkload {#stock-workload} + +<!-- +Параметр | Описание +--- | --- +optional uint64 ProductCount = 1 [default = 100]; +optional uint64 Quantity = 2 [default = 1000]; +optional uint64 OrderCount = 3 [default = 100]; +optional uint64 Limit = 4 [default = 10]; +optional bool PartitionsByLoad = 5 [default = true]; + --> + +### TKvWorkload {#kv-workload} + +Параметр | Описание +--- | --- +`InitRowCount` | До начала нагрузки нагружающий актор запишет в таблицу указанное количество строк.<br>Тип: `uint64`.<br>Значение по умолчанию: — `1000`.<br>Необязательный. +`PartitionsByLoad` | Добавлять ли к тестовой таблице аттрибут `AUTO_PARTITIONING_BY_LOAD`.<br>Тип: `bool`.<br>Значение по умолчанию: — `true`.<br>Необязательный. +`MaxFirstKey` | Ограничивает диапазон значений ключа. Создан для того, чтобы при читающей нагрузке случайные ключи попадал в диапазон ключей таблицы.<br>Тип: `uint64`.<br>Значение по умолчанию: — `18446744073709551615`.<br>Необязательный. +`StringLen` | Длина строки `value`.<br>Тип: `uint64`.<br>Значение по умолчанию: — `8`.<br>Необязательный. +`ColumnsCnt` | Сколько столбцов использовать в таблице.<br>Тип: `uint64`.<br>Значение по умолчанию: — `2` (столбцы для key и value).<br>Необязательный. +`RowsCnt` | Сколько строк вставлять/читать в одном SQL запросе<br>Тип: `uint64`.<br>Значение по умолчанию: — `1`.<br>Необязательный. + +## Примеры {#example} + +Нагрузка базы `/slice/db` типа STOCK простыми UPSERT-запросами в 64 потока длительностью 30 секунд. До начала работы создает необходимые для работы таблицы, после нагрузки удаляет их. ```proto KqpLoadStart: { @@ -65,4 +95,6 @@ KqpLoadStart: { Limit: 10 } } -```
\ No newline at end of file +``` + +{% include notitle [addition](../_includes/addition.md) %} diff --git a/ydb/docs/ru/core/development/load-start.md b/ydb/docs/ru/core/development/load-start.md index d5f2048ef05..670ff9f735e 100644 --- a/ydb/docs/ru/core/development/load-start.md +++ b/ydb/docs/ru/core/development/load-start.md @@ -1,51 +1,57 @@ -# Нагрузка одной storage группы +# DSProxy нагрузка -Представляется таблеткой и пишет в группу +Представляется таблеткой и пишет в группу. +## Структура {#proto} -## Описание ```proto - message TLoadStart { - message TRequestInfo { - optional float SendTime = 1; - optional uint64 Type = 2; - optional uint32 Size = 3; - optional EPutHandleClass PutHandleClass = 4; - } - message TTabletInfo { - optional uint64 TabletId = 1; - optional uint32 Channel = 2; - optional uint32 GroupId = 3; - optional uint32 Generation = 4; - repeated TRequestInfo Requests = 5; - optional float ScriptedCycleDurationSec = 6; - } - message TPerTabletProfile { - repeated TTabletInfo Tablets = 1; - repeated TSizeInfo Sizes = 2; - repeated TIntervalInfo WriteIntervals = 3; - optional uint32 MaxInFlightRequests = 4; - optional uint32 MaxInFlightBytes = 5; - repeated TIntervalInfo FlushIntervals = 6; - optional EPutHandleClass PutHandleClass = 7; - optional bool Soft = 8; - optional uint32 MaxInFlightReadRequests = 9; - optional uint32 MaxInFlightReadBytes = 10; - repeated TIntervalInfo ReadIntervals = 11; - repeated TSizeInfo ReadSizes = 12; - optional uint64 MaxTotalBytesWritten = 13; - optional EGetHandleClass GetHandleClass = 14; - }; - optional uint64 Tag = 1; - optional uint32 DurationSeconds = 2; - optional bool RequestTracking = 3 [default = false]; - repeated TPerTabletProfile Tablets = 4; - optional uint64 ScheduleThresholdUs = 5; - optional uint64 ScheduleRoundingUs = 6; +message TLoadStart { + message TRequestInfo { + optional float SendTime = 1; + optional uint64 Type = 2; + optional uint32 Size = 3; + optional EPutHandleClass PutHandleClass = 4; } + message TTabletInfo { + optional uint64 TabletId = 1; + optional uint32 Channel = 2; + optional uint32 GroupId = 3; + optional uint32 Generation = 4; + repeated TRequestInfo Requests = 5; + optional float ScriptedCycleDurationSec = 6; + } + message TPerTabletProfile { + repeated TTabletInfo Tablets = 1; + repeated TSizeInfo Sizes = 2; + repeated TIntervalInfo WriteIntervals = 3; + optional uint32 MaxInFlightRequests = 4; + optional uint32 MaxInFlightBytes = 5; + repeated TIntervalInfo FlushIntervals = 6; + optional EPutHandleClass PutHandleClass = 7; + optional bool Soft = 8; + optional uint32 MaxInFlightReadRequests = 9; + optional uint32 MaxInFlightReadBytes = 10; + repeated TIntervalInfo ReadIntervals = 11; + repeated TSizeInfo ReadSizes = 12; + optional uint64 MaxTotalBytesWritten = 13; + optional EGetHandleClass GetHandleClass = 14; + }; + optional uint64 Tag = 1; + optional uint32 DurationSeconds = 2; + optional bool RequestTracking = 3 [default = false]; + repeated TPerTabletProfile Tablets = 4; + optional uint64 ScheduleThresholdUs = 5; + optional uint64 ScheduleRoundingUs = 6; +} ``` -## Примеры +## Примеры {#example} + +**Читающая нагрузка** + +Нагрузка пишет в группу `$GROUPID`, состоит из двух частей. Первая - пишущая, подает небольшой фон пишущих запросов размера `$SIZE` каждые 50 мс, при этом ограничивает `InFlight` 1. То есть если запрос не успевает завершиться, то актор будет ждать завершения и после этого через 50мс, будет запущен следующий запрос. + +Вторая часть основная, читающая. Читает запросами размера `$SIZE`, запросы отправляет каждые `${INTERVAL}` микросекунд. Можно его задать в 0, тогда этот параметр не будет играть роли. Конфигурация ограничивает количество запросов в полете числом `${IN_FLIGHT}`. ```proto NodeId: ${NODEID} @@ -70,6 +76,10 @@ Event: { LoadStart: { }} ``` +**Пишущая нагрузка** + +Пишет в группу `$GROUPID` нагрузку длительностью `$DURATION` секунд. Пишет размерами `$SIZE`, ограничивая количество запросов в полете числом `$IN_FLIGHT`. + ```proto NodeId: ${NODEID} Event: { LoadStart: { @@ -87,3 +97,5 @@ Event: { LoadStart: { } }} ``` + +{% include notitle [addition](../_includes/addition.md) %} diff --git a/ydb/docs/ru/core/development/load-stop.md b/ydb/docs/ru/core/development/load-stop.md index 123f6405c15..dc6eafc4307 100644 --- a/ydb/docs/ru/core/development/load-stop.md +++ b/ydb/docs/ru/core/development/load-stop.md @@ -1,29 +1,45 @@ # Остановка нагрузки -## Описание +С помощью актора LoadStop вы можете остановить нагрузку на указанной ноде. + +## Структура {#proto} + ```proto message TLoadStop { - optional uint64 Tag = 1; // Тег нагрузки, может быть задан для остановки конкретной нагрузки. Тег можно посмотреть в UI load-actor - optional bool RemoveAllTags = 2; // Остановить все нагрузочные акторы на ноде + optional uint64 Tag = 1; + optional bool RemoveAllTags = 2; } ``` -## Примеры +## Параметры {#options} + +### TLoadStop + +Параметр | Описание +--- | --- +`Tag` | Тег нагрузки, может быть задан для остановки конкретной нагрузки. Тег можно посмотреть в UI load-actor `uint64`. +`RemoveAllTags` | Остановить все нагрузочные акторы на ноде `bool`. + +## Примеры {#examples} + +Остановить акторы с тегом `123` на ноде с идентификатором `1`: ```proto NodeId: 1 Event: { LoadStop: { - RemoveAllTags: true + Tag: 123 } } ``` -или + +Остановить все нагрузочные акторы на ноде с идентификатором `1`: + ```proto NodeId: 1 Event: { LoadStop: { - Tag: 123 + RemoveAllTags: true } } -```
\ No newline at end of file +``` diff --git a/ydb/docs/ru/core/development/memory-load-start.md b/ydb/docs/ru/core/development/memory-load-start.md index 7acfb8f0c9d..942cbac1f65 100644 --- a/ydb/docs/ru/core/development/memory-load-start.md +++ b/ydb/docs/ru/core/development/memory-load-start.md @@ -1,6 +1,6 @@ -# Проверка производительности работы памяти +# Проверка производительности памяти -## Описание +## Структура {#proto} ```proto message TMemoryLoadStart { @@ -10,14 +10,28 @@ message TMemoryLoadStart { optional uint64 IntervalUs = 4; } ``` +<!-- +## Параметры {#options} -## Примеры +### MemoryLoadStart + +Параметр | Описание +--- | --- +`Tag` | Тип: `uint64`. +`DurationSeconds` | Тип: `uint32`. +`BlockSize` | Тип: `uint64`. +`IntervalUs` | Тип: `uint64`. +--> + +## Примеры {#examples} ```proto -NodeId: 3 +NodeId: 1 Event: { MemoryLoadStart: { DurationSeconds: 120 - IntervalUs: 1000 BlockSize: 4096 + IntervalUs: 1000 }} -```
\ No newline at end of file +``` + +{% include notitle [addition](../_includes/addition.md) %} diff --git a/ydb/docs/ru/core/development/pdisk-load-start.md b/ydb/docs/ru/core/development/pdisk-load-start.md index fba7b54b919..4af6f7ff544 100644 --- a/ydb/docs/ru/core/development/pdisk-load-start.md +++ b/ydb/docs/ru/core/development/pdisk-load-start.md @@ -1,12 +1,42 @@ -# Нагрузка на PDisk, write-only +# PDisk нагрузка на запись Представляется VDisk и пишет на PDisk данные, и в чанки, и в лог. Самостоятельно выделяет чанки для записи и освобождает в конце работы. -## Описание +## Структура {#proto} + +<!-- +```proto +enum ELogMode { + LOG_PARALLEL = 1; + LOG_SEQUENTIAL = 2; + LOG_NONE = 3; +} +message TPDiskLoadStart { + message TChunkInfo { + optional uint32 Slots = 1; // number of slots per chunk + optional uint32 Weight = 2; // probability weight + } + optional uint64 Tag = 1; + optional uint32 PDiskId = 2; + optional uint64 PDiskGuid = 3; + optional NKikimrBlobStorage.TVDiskID VDiskId = 4; + repeated TChunkInfo Chunks = 5; + optional uint32 DurationSeconds = 6; + optional uint32 InFlightWrites = 7; + optional ELogMode LogMode = 8; + optional bool Sequential = 9 [default = true]; + optional uint32 IntervalMsMin = 10; + optional uint32 IntervalMsMax = 11; + optional bool Reuse = 12 [default = false]; + optional bool IsWardenlessTest = 13 [default = false]; +} +``` +--> + ```proto enum ELogMode { - LOG_PARALLEL = 1; // Писать в чанк и писать в лог (о факте записи) параллельно, и считать запись завершённой только если обе записи прошли - LOG_SEQUENTIAL = 2; // Писать сначала в чанк, потом в лог. Считать запись завершённой после записи в лог + LOG_PARALLEL = 1; // Писать в чанк и писать в лог (о факте записи) параллельно, и считать запись завершенной только если обе записи прошли + LOG_SEQUENTIAL = 2; // Писать сначала в чанк, потом в лог. Считать запись завершенной после записи в лог LOG_NONE = 3; } @@ -18,14 +48,14 @@ message TPDiskLoadStart { } optional uint64 Tag = 1; // необязательный. Если не задан, то тег будет присвоен автоматически optional uint32 PDiskId = 2; // обязательный. Id, на который нужно подать нагрузку. Можно узнать из UI кластера - optional uint64 PDiskGuid = 3; // обязательный. Guid того PDisk, на который подаётся нагрузка. Можно узнать на UI странице PDisk + optional uint64 PDiskGuid = 3; // обязательный. Guid того PDisk, на который подается нагрузка. Можно узнать на UI странице PDisk optional NKikimrBlobStorage.TVDiskID VDiskId = 4; // обязательный. Этим VDiskId нагружающий актор представится PDisk. // Не должен дублироваться между разными нагружающими акторами. repeated TChunkInfo Chunks = 5; // обязательный. Описание того, сколько чанков использовать для подачи нагрузки. Позволяет варьировать нагрузку. // К примеру, можно сделать два чанка - один с большим количеством слотов и один с маленьким и задать веса чанков // таким образом, чтобы 95% записей были небольшого размера, а 5% -- большого, имитируя тем самым compaction VDisk optional uint32 DurationSeconds = 6; // обязательный. Длительность теста - optional uint32 InFlightWrites = 7; // обязательный. Ограничивает количество запросов в полёте к PDisk + optional uint32 InFlightWrites = 7; // обязательный. Ограничивает количество запросов в полете к PDisk optional ELogMode LogMode = 8; // обязательный. См. выше ELogMode optional bool Sequential = 9 [default = true]; // необязательный. Писать в слоты чанков записи последовательно или случайно. optional uint32 IntervalMsMin = 10; // необязательный. См. ниже @@ -38,3 +68,5 @@ message TPDiskLoadStart { optional bool IsWardenlessTest = 13 [default = false]; // позволяет использовать в тестах, где нет NodeWarden } ``` + +{% include notitle [addition](../_includes/addition.md) %} diff --git a/ydb/docs/ru/core/development/pdisk-log-load-start.md b/ydb/docs/ru/core/development/pdisk-log-load-start.md index e873c526afb..494a17a8ffb 100644 --- a/ydb/docs/ru/core/development/pdisk-log-load-start.md +++ b/ydb/docs/ru/core/development/pdisk-log-load-start.md @@ -1,29 +1,32 @@ -# Нагрузка, пишущая в лог PDisk +# PDisk нагрузка, пишущая в лог + +## Структура {#proto} -## Описание ```proto - message TPDiskLogLoadStart { - message TWorkerConfig { - optional NKikimrBlobStorage.TVDiskID VDiskId = 1; - optional uint32 MaxInFlight = 2; +message TPDiskLogLoadStart { + message TWorkerConfig { + optional NKikimrBlobStorage.TVDiskID VDiskId = 1; + optional uint32 MaxInFlight = 2; + + // Measurement units of all parameters is bytes + optional uint32 SizeIntervalMin = 3; + optional uint32 SizeIntervalMax = 4; + optional uint64 BurstInterval = 5; + optional uint64 BurstSize = 6; + optional uint64 StorageDuration = 7; - // Measurement units of all parameters is bytes - optional uint32 SizeIntervalMin = 3; - optional uint32 SizeIntervalMax = 4; - optional uint64 BurstInterval = 5; - optional uint64 BurstSize = 6; - optional uint64 StorageDuration = 7; + optional uint64 MaxTotalBytesWritten = 8; + } - optional uint64 MaxTotalBytesWritten = 8; - } + optional uint64 Tag = 1; + optional uint32 PDiskId = 2; + optional uint64 PDiskGuid = 3; - optional uint64 Tag = 1; - optional uint32 PDiskId = 2; - optional uint64 PDiskGuid = 3; + optional uint32 DurationSeconds = 5; + repeated TWorkerConfig Workers = 7; - optional uint32 DurationSeconds = 5; - repeated TWorkerConfig Workers = 7; + optional bool IsWardenlessTest = 8 [default = false]; +} +``` - optional bool IsWardenlessTest = 8 [default = false]; - } -```
\ No newline at end of file +{% include notitle [addition](../_includes/addition.md) %} diff --git a/ydb/docs/ru/core/development/pdisk-read-load-start.md b/ydb/docs/ru/core/development/pdisk-read-load-start.md index 0e36a42e516..30c1a68eedb 100644 --- a/ydb/docs/ru/core/development/pdisk-read-load-start.md +++ b/ydb/docs/ru/core/development/pdisk-read-load-start.md @@ -1,7 +1,7 @@ -# Читающая нагрузка на PDisk +# PDisk нагрузка на чтение +## Структура {#proto} -## Описание ```proto message TPDiskReadLoadStart { message TChunkInfo { @@ -22,4 +22,6 @@ message TPDiskReadLoadStart { optional bool IsWardenlessTest = 13 [default = false]; } -```
\ No newline at end of file +``` + +{% include notitle [addition](../_includes/addition.md) %} diff --git a/ydb/docs/ru/core/development/testing-load-actor.md b/ydb/docs/ru/core/development/testing-load-actor.md index f6abaf8eeea..c9a36479875 100644 --- a/ydb/docs/ru/core/development/testing-load-actor.md +++ b/ydb/docs/ru/core/development/testing-load-actor.md @@ -10,24 +10,24 @@ Тип | Описание --- | --- -[LoadStart](load-start.md) | нагружающий актор, подающий нагрузку от лица таблетки. Имитирует таблетку, создает себе TabletId и пишет в указанные storage-группы. -[PDiskLoadStart](pdisk-load-start.md) | нагружающий актор для подачи write-only нагрузки на PDisk. Имитирует VDisk. -[VDiskLoadStart](vdisk-load-start.md) | нагружающий актор для подачи нагрузки на VDisk. Имитирует DSProxy и пишет в локальный VDisk. -[PDiskReadLoadStart](pdisk-read-load-start.md) | нагружающий актор для подачи read-only нагрузки на PDisk. Имитирует VDisk. -[PDiskLogLoadStart](pdisk-log-load-start.md) | специальный нагружающий актор, написанный для тестирования вырезания из середины лога PDisk. Имитирует VDisk. Не является нагружающим, в первую очередь направлен на тестирование корректности. -[KeyValueLoadStart](key-value-load-start.md) | нагружающий актор для подачи нагрузки на KvTablet. -[KqpLoadStart](kqp-load-start.md) | нагружающий актор для подачи нагрузки на KQP часть и, соответственно, на весь кластер в целом. Аналогичен `ydb_cli workload`, есть два подвида - stock и kv. -[MemoryLoadStart](memory-load-start.md) | специальный нагружающий актор, проверяет производительность работы памяти. Кажется, используется в math bench - иногда запускается на кластере и рисует график времени работы. -[LoadStop](load-stop.md) | остановить нагрузку либо с конкретным тегом, либо со всеми. +[LoadStart](load-start.md) | Нагружающий актор, подающий нагрузку от лица таблетки. Имитирует таблетку, создает себе TabletId и пишет в указанные storage-группы. +[PDiskLoadStart](pdisk-load-start.md) | Нагружающий актор для подачи write-only нагрузки на PDisk. Имитирует VDisk. +[VDiskLoadStart](vdisk-load-start.md) | Нагружающий актор для подачи нагрузки на VDisk. Имитирует DSProxy и пишет в локальный VDisk. +[PDiskReadLoadStart](pdisk-read-load-start.md) | Нагружающий актор для подачи read-only нагрузки на PDisk. Имитирует VDisk. +[PDiskLogLoadStart](pdisk-log-load-start.md) | Специальный нагружающий актор, написанный для тестирования вырезания из середины лога PDisk. Имитирует VDisk. Не является нагружающим, в первую очередь направлен на тестирование корректности. +[KeyValueLoadStart](key-value-load-start.md) | Нагружающий актор для подачи нагрузки на KvTablet. +[KqpLoadStart](kqp-load-start.md) | Нагружающий актор для подачи нагрузки на KQP часть и, соответственно, на весь кластер в целом. Аналогичен `ydb_cli workload`, есть два подвида - stock и kv. +[MemoryLoadStart](memory-load-start.md) | Специальный нагружающий актор, проверяет производительность работы памяти. Кажется, используется в math bench - иногда запускается на кластере и рисует график времени работы. +[LoadStop](load-stop.md) | Остановить нагрузку либо с конкретным тегом, либо со всеми. ## Запуск нагрузки {load-actor-start} Вы можете запустить нагрузку следующими способами: -* командой через бинарник ydbd -- `ydbd bs-load-test` -* viewer UI кластера +* командой через исполняемый файл `ydbd bs-load-test`; +* viewer UI кластера. -В обоих вариантах подачи нагрузки необходимо создать proto-файл с текстовым описанием. Пример файла: +В обоих случаях подачи нагрузки необходимо создать proto-файл с текстовым описанием. Пример файла: ```proto NodeId: 1 @@ -52,20 +52,22 @@ Event: } ``` +* `NodeId` — идентификатор ноды, на которой будет запущен актор; +* `Event` — описание актора. -### ydbd +### ydbd {#ydbd} -Запустить нагрузку можно используя бинарник `ydbd`. Для этого в нём существует команда `bs-load-test` +Запустить нагрузку можно используя команду `ydbd bs-load-test`: ```bash ydbd bs-load-test -s $SERVER --protobuf "$PROTO" ``` -### Подача нагрузки через viewer UI +### Viewer UI {#ui}  -<br> -UI позволяет по proto-описанию создать нагружающего актора либо на одной текущей ноде, либо сразу на всех нодах тенанта (если страница принадлежит тенанту). За созданными акторами можно сделить на той же странице. + +UI позволяет по proto-описанию создать нагружающий актор либо на одной текущей ноде, либо сразу на всех нодах тенанта (если страница принадлежит тенанту). За созданными акторами можно следить на той же странице. ## Примеры {#load-examples} @@ -99,4 +101,4 @@ Event: { MemoryLoadStart: { IntervalUs: 1000 BlockSize: 4096 }} -```
\ No newline at end of file +``` diff --git a/ydb/docs/ru/core/development/vdisk-load-start.md b/ydb/docs/ru/core/development/vdisk-load-start.md index e862de77d15..c7bfc89beed 100644 --- a/ydb/docs/ru/core/development/vdisk-load-start.md +++ b/ydb/docs/ru/core/development/vdisk-load-start.md @@ -1,6 +1,7 @@ -# Нагрузка на VDisk +# VDisk нагрузка + +## Структура {#proto} -## Описание ```proto message TVDiskLoadStart { optional uint64 Tag = 1; @@ -41,4 +42,6 @@ message TVDiskLoadStart { // minimum distance kept between current Step of written blobs and CollectStep of barriers optional uint32 StepDistance = 15; } -```
\ No newline at end of file +``` + +{% include notitle [addition](../_includes/addition.md) %} diff --git a/ydb/docs/ru/core/toc_i.yaml b/ydb/docs/ru/core/toc_i.yaml index 9a1cae1458a..b9ef46ae865 100644 --- a/ydb/docs/ru/core/toc_i.yaml +++ b/ydb/docs/ru/core/toc_i.yaml @@ -27,7 +27,7 @@ items: items: - name: Тестирование с помощью нагружающих акторов href: development/testing-load-actor.md - - name: key-value нагрузка + - name: KV нагрузка href: development/key-value-load-start.md - name: KQP нагрузка href: development/kqp-load-start.md @@ -35,7 +35,7 @@ items: href: development/load-start.md - name: Остановка нагрузки href: development/load-stop.md - - name: Нагрузка, проверяющая память + - name: Проверка производительности памяти href: development/memory-load-start.md - name: PDisk нагрузка на запись href: development/pdisk-load-start.md |