Browse Source

description of the "ydb workload transfer topic-to-table" command

Описание команды "ydb workload transfer topic-to-table"
abcdef 1 year ago
parent
commit
d0cac1198f

+ 1 - 0
ydb/docs/ru/core/reference/ydb-cli/commands/workload/_includes/index.md

@@ -26,3 +26,4 @@
 * [ClickBench](../../../workload-click-bench.md) - аналитический бенчмарк ClickBench (https://github.com/ClickHouse/ClickBench).
 * [TPC-H](../../../workload-tpch.md) - TPC-H бенчмарк (https://www.tpc.org/tpch/).
 * [Topic](../../../workload-topic.md) - Topic нагрузка.
+* [Transfer](../../../workload-transfer.md) - Transfer нагрузка.

+ 2 - 0
ydb/docs/ru/core/reference/ydb-cli/toc_i.yaml

@@ -120,6 +120,8 @@ items:
       href: workload-kv.md
     - name: Topic нагрузка
       href: workload-topic.md
+    - name: Transfer нагрузка
+      href: workload-transfer.md
     - name: TPC-H нагрузка
       href: workload-tpch.md
   - name: Работа с конфигурацией

+ 150 - 0
ydb/docs/ru/core/reference/ydb-cli/workload-transfer.md

@@ -0,0 +1,150 @@
+# Transfer нагрузка
+
+Запускает нагрузку в виде транзакций {{ ydb-short-name }}, в которых участвуют топик и таблица. Данные вычитываются из топика и записываются в таблицу. Для имитации реальной нагрузки можно задавать различные входные параметры: число сообщений, размер сообщений, целевую скорость записи, число читателей и писателей, число партиций. В процессе работы на консоль выводятся результаты: количество записанных сообщений, скорость записи сообщений и т.д.
+
+{% include [ydb-cli-profile.md](../../_includes/ydb-cli-profile.md) %}
+
+## Инициализация тестового окружения {#init}
+
+Перед запуском нагрузки необходимо инициализировать тестовое окружение. Для этого можно использовать команду `{{ ydb-cli }} workload transfer topic-to-table init`. Она создаст топик и таблицу с нужными параметрами.
+
+Общий вид команды:
+```bash
+{{ ydb-cli }} [global options...] workload transfer topic-to-table init [options...]
+```
+* `global options` — [глобальные параметры](commands/global-options.md).
+* `options` - параметры подкоманды.
+
+Посмотреть описание команды:
+
+```bash
+{{ ydb-cli }} workload transfer topic-to-table init --help
+```
+
+Параметры подкоманды:
+Имя параметра        | Описание параметра          | Значение по умолчанию
+---|---|---
+`--topic`            | Имя топика                  | `transfer-topic`      
+`--consumer-prefix`  | Префикс имени читателей     | `workload-consumer`   
+`--table`            | Имя таблицы                 | `transfer-table`      
+`--consumers`        | Количество читателей топика | `1`                   
+`--topic-partitions` | Количество партиций топика  | `128`                 
+`--table-partitions` | Количество партиций таблицы | `128`                 
+
+После выполнения подкоманды `init` будут созданы таблица, топик и читатели. Имена читателей создаются по правилу `${CONSUMER_PREFIX}-${INDEX}`. Значение `${INDEX}` — это целое число от 0 и до значения параметра `--consumers` минус 1.
+
+Например, команда
+```bash
+{{ ydb-cli }} --profile quickstart workload transfer topic-to-table init --consumers 2 --topic-partitions 143 --table-partitions 237
+```
+создаст топик `transfer-topic` с 2 читателями и 143 партициями и таблицу `transfer-table` с 237 партициями. Имена читателей `workload-consumer-0` и `workload-consumer-1`.
+
+## Запуск нагрузочного теста {#run}
+
+Тест моделирует нагрузку от приложения, которое получает сообщения из топика, обрабатывает их и записывает результаты обработки в таблицу БД.
+
+Во время работы программы имитируются рабочие потоки двух видов:
+* Входной поток: в топик пишутся сообщения в режиме без транзакций. Пользователь может управлять скоростью записи, размером сообщений, количеством писателей.
+* Поток обработки: из топика читаются сообщения и записываются в таблицу с использованием транзакций {{ ydb-short-name }}. 
+
+В рамках одной транзакции в потоке обработки выполняются следующие действия:
+* пока не истёк период `--commit-period`, читаются сообщения из топика;
+* по истечении периода, выполняется одна команда `UPSERT` над таблицей и команда `COMMIT` для фиксации транзакции.
+
+Общий вид команды:
+```bash
+{{ ydb-cli }} [global options...] workload transfer topic-to-table run [options...]
+```
+* `global options` — [глобальные параметры](commands/global-options.md).
+* `options` - параметры подкоманды.
+
+Посмотреть описание команды:
+
+```bash
+{{ ydb-cli }} workload transfer topic-to-table run --help
+```
+
+Параметры подкоманды:
+Имя параметра              | Описание параметра          | Значение по умолчанию 
+---|---|---
+`--seconds`, `-s`          | Продолжительность теста в секундах            | `60`                 
+`--window`, `-w`           | Длительность окна сбора статистики в секундах | `1`                 
+`--quiet`, `-q`            | Выводить только итоговый результат теста      | `0`                 
+`--print-timestamp`        | Печатать время вместе со статистикой каждого временного окна | `0`                 
+`--percentile`             | Процентиль в выводе статистики                | `50`                 
+`--warmup`                 | Время прогрева теста в секундах. В течение этого времени не вычисляется статистика, оно необходимо для устранения переходных процессов при старте | `5`                 
+`--topic`                  | Имя топика | `transfer-topic`                 
+`--consumer-prefix`        | Префикс имени читателей | `workload-consumer`                 
+`--table`                  | Имя таблицы | `transfer-table`                 
+`--producer-threads`, `-p` | Количество потоков писателей | `1`                 
+`--consumer-threads`, `-t` | Количество потоков читателей | `1`                 
+`--consumers`, `-c`        | Количество читателей | `1`                 
+`--message-size`, `-m`     | Размер сообщения в байтах. Возможно задание в КБ, МБ, ГБ путем добавления суффиксов `K`, `M`, `G` соответственно | `10240`                 
+`--message-rate`           | Целевая суммарная скорость записи. В сообщениях в секунду. Исключает использование параметра `--byte-rate` | `0`                 
+`--byte-rate`              | Целевая суммарная скорость записи. В байтах в секунду. Исключает использование параметра --message-rate. Возможно задание в КБ/с, МБ/с, ГБ/с путем добавления суффиксов `K`, `M`, `G` соответственно | `0`                 
+`--commit-period`          | Период между вызовами `COMMIT`. В секундах  | `10`                 
+
+Например, команда
+```bash
+{{ ydb-cli }} --profile quickstart workload transfer topic-to-table run
+```
+запустит тест продолжительностью 60 секунд. Данные за первые 5 секунд не будут учитываться в статистике работы. Пример вывода на консоль
+
+```text
+Window  Write speed     Write time      Inflight        Lag             Lag time        Read speed      Full time
+#       msg/s   MB/s    percentile,ms   percentile,msg  percentile,msg  percentile,ms   msg/s   MB/s    percentile,ms
+1       0       0       0               0               0               0               0       0       0
+2       0       0       0               0               0               0               0       0       0
+3       0       0       0               0               0               0               0       0       0
+4       0       0       0               0               0               0               0       0       0
+5       0       0       0               0               0               0               0       0       0
+6       103     1       911             78              0               0               103     1       914
+7       103     1       983             78              0               0               103     1       984
+8       103     1       1103            80              0               0               103     1       1106
+9       103     1       1003            85              0               0               103     1       1004
+10      103     1       1003            86              0               0               103     1       1006
+11      103     1       1015            85              0               0               103     1       1019
+12      103     1       1047            91              0               0               103     1       1043
+13      103     1       999             88              0               0               103     1       1003
+14      103     1       1063            85              0               0               103     1       1064
+15      103     1       1003            89              0               0               103     1       1008
+16      103     1       999             88              0               0               103     1       1003
+17      103     1       1071            78              0               0               103     1       1077
+...
+```
+
+* `Window` — порядковый номер временного окна сбора статистики.
+* `Write speed` — скорость записи сообщений писателями. В сообщениях в секунду и в мегабайтах в секунду.
+* `Write time` — процентиль времени записи сообщения в мс.
+* `Inflight` — максимальное число сообщений, ожидающих подтверждения по всем партициям.
+* `Lag` — максимальное число сообщений, ожидающих чтения, в окне сбора статистики. Учитываются сообщения по всем партициям.
+* `Lag time` — процентиль времени задержки сообщений в мс.
+* `Read speed` — скорость чтения сообщений читателями. В сообщениях в секунду и в мегабайтах в секунду.
+* `Full time` — процентиль времени полной обработки сообщения, от записи писателем до чтения читателем в мс.
+
+## Удаление тестового окружения {#clean}
+
+После завершения теста можно удалить тестовое окружение.
+
+Общий вид команды:
+```bash
+{{ ydb-cli }} [global options...] workload transfer topic-to-table clean [options...]
+```
+* `global options` — [глобальные параметры](commands/global-options.md).
+* `options` - параметры подкоманды.
+
+```bash
+{{ ydb-cli }} workload transfer topic-to-table clean --help
+```
+
+Параметры подкоманды:
+Имя параметра        | Описание параметра          | Значение по умолчанию 
+---|---|---
+`--topic`            | Имя топика                  | `transfer-topic`      
+`--table`            | Имя таблицы                 | `transfer-table`      
+
+Например, команда
+```bash
+{{ ydb-cli }} --profile quickstart workload transfer topic-to-table clean
+```
+удалит топик `transfer-topic`, его читателей и таблицу `transfer-table`