Перейти к содержимому
Последнее обновление

Pipeline Tracing

Введение​

В движке выполнения Pipeline в Apache Doris дерево плана выполнения каждого Instance разбивается на несколько Pipeline Tasks, которые планируются и выполняются собственным планировщиком Pipeline. При большом количестве Pipeline Tasks распределение этих Tasks по потокам и ядрам CPU становится важным фактором, влияющим на производительность выполнения.

Инструмент Pipeline Tracing позволяет наблюдать за процессом планирования для конкретного запроса или за определённый период времени, упрощая анализ производительности и поиск узких мест.

Порядок использования​

1. Запись данных планирования​

Используйте HTTP-интерфейсы, чтобы включать и отключать запись процесса планирования на BE и настраивать её режим. Эти настройки действуют только на выбранный BE.

НазначениеHTTP-команда
Отключить запись Pipeline Tracingcurl -X POST http://{be_host}:{http_port}/api/pipeline/tracing?type=disable
Создавать отдельную запись для каждого запросаcurl -X POST http://{be_host}:{http_port}/api/pipeline/tracing?type=perquery
Создавать запись трассировки за фиксированный периодcurl -X POST http://{be_host}:{http_port}/api/pipeline/tracing?type=periodic
Задать длительность периода (в секундах)curl -X POST http://{be_host}:{http_port}/api/pipeline/tracing?dump_interval=60

Примеры команд:

# Disable Pipeline Tracing recording
curl -X POST http://{be_host}:{http_port}/api/pipeline/tracing?type=disable

# Produce one record per query
curl -X POST http://{be_host}:{http_port}/api/pipeline/tracing?type=perquery

# Produce a tracing record over a fixed period
curl -X POST http://{be_host}:{http_port}/api/pipeline/tracing?type=periodic

# Set the period length to 60 seconds
curl -X POST http://{be_host}:{http_port}/api/pipeline/tracing?dump_interval=60

2. Преобразование формата данных​

Записанные данные сохраняются в каталоге log/tracing соответствующего BE. Используйте скрипт преобразования из doris/tools/pipeline-tracing/, чтобы преобразовать исходные данные в формат JSON, который может загрузить Perfetto:

cd doris/tools/pipeline-tracing/
python3 origin-to-show.py -s <SOURCE_FILE> -d <DEST>.json

Параметры:

ПараметрЗначение
-s <SOURCE_FILE>Путь к исходному файлу трассировки, созданному BE
-d <DEST>.jsonПуть к выходному файлу JSON для визуализации

Более подробные инструкции см. в файле README.md в этом каталоге.

3. Визуализация в Perfetto​

  1. Откройте Perfetto.

  2. Нажмите Open trace file и выберите файл JSON, созданный на предыдущем шаге.

  3. Просмотрите результат планирования:

    Perfetto также позволяет увидеть, как одна и та же Task планируется на разных ядрах CPU:

Часто задаваемые вопросы​

В: Где находятся файлы трассировки?

Они находятся в каталоге log/tracing соответствующего BE. Имя файла содержит временную метку и информацию о запросе.

В: Влияет ли включение Pipeline Tracing на производительность?

Запись трассировки создаёт некоторые накладные расходы. Включайте её только на время анализа планирования и отключайте с помощью type=disable после завершения анализа.