diff options
| author | iofik <[email protected]> | 2026-02-25 14:02:41 +0300 |
|---|---|---|
| committer | iofik <[email protected]> | 2026-02-25 15:06:35 +0300 |
| commit | 02e0966b2c68a74e2525633c92fa8219e9b8ef4a (patch) | |
| tree | 9ce1da30a748a3cd4bcba409b849b66ac057d38b /library/cpp/monlib/encode/encoder.cpp | |
| parent | 855659a66a2797ef31a5dd908a1730685c9ce656 (diff) | |
/0: Implement TExecutorSet and TExecutorSetManager
## Абстракция управления executor’ами (TExecutorSet, TExecutorSetManager)
### Что сделано
Вводится единый слой для работы с пулами потоков agent’а: main, background и IO.
**TExecutorSet** — представление набора executor’ов:
- `Main()`, `Background()`, `IO()` — одинаковый интерфейс для всех трёх пулов
- IO возвращает тот же объект, что и Main, когда `separate_io_thread_pool == 0`, иначе — отдельный executor
**TExecutorSetManager** — создание и владение executor’ами:
- `GetExecutors(EExecutorPool pool)` — возвращает нужный набор; пока используются только `Global` и `Metrics` (оба отдают один и тот же набор)
- `Start()`, `Stop()` — жизненный цикл
- Main создаётся сразу, Background и IO — лениво при первом обращении
**Рефакторинг TAgent**:
- Вместо отдельных полей `TaskExecutor`, `BackgroundTaskExecutor`, `IOTaskExecutor` и `DelayedExecutor` используется `ExecutorSetManager`
- Обращения к executor’ам идут через `ExecutorSetManager->GetExecutors(EExecutorPool::Global)`
- FSNotifier, MemoryQuotaManager, AgentContext, CountersUpdater работают с глобальными executor’ами
**RegisterCountersWith**:
- Регистрирует счётчики main, background, IO (если включён отдельный IO-пул) и delayed
- Раньше IO-счётчики не учитывались — это исправлено
**Тесты**:
- Добавлен gtest-модуль `executor_set_tests` в `tests/gtests/`:
- Проверяются GetExecutors, доступность Main, ленивая инициализация Background
- Поведение IO при `separate_io_thread_pool == 0` и `> 0`
- Start/Stop и параметр pool в GetExecutors
### Цель
Подготовка к PR1: выделение отдельных пулов для pipelines. Сейчас меняется только абстракция, без изменения конфигурации и без добавления dedicated pools.
commit_hash:0f1b2205c474db1b601a72f063916333a74882d6
Diffstat (limited to 'library/cpp/monlib/encode/encoder.cpp')
0 files changed, 0 insertions, 0 deletions
