### Архитектура выполнения ```txt ┌─────────────────────────────────────────────────────────────┐ │ TestRunner │ │ Создаёт N workers (по умолчанию 4) │ └──────┬──────────┬──────────┬──────────┬─────────────────────┘ │ │ │ │ ▼ ▼ ▼ ▼ Worker 1 Worker 2 Worker 3 Worker 4 │ │ │ │ │ │ │ │ ┌───▼──────────▼──────────▼──────────▼───┐ │ Общий пул из 1000 файлов │ │ file_0.dat, file_1.dat, ... file_999 │ └─────────────────────────────────────────┘ ``` Каждый worker работает в бесконечном цикле: ``` go for { 1. Выбрать операцию на основе весов (30% write, 30% read, 40% stat) 2. Выбрать случайный файл из пула 3. Выполнить операцию 4. Записать метрики 5. Повторить } ``` #### Ключевые моменты 1. Независимость workers * Каждый worker работает сам по себе * Никакой синхронизации между ними * Могут одновременно работать с одним файлом 2. Случайность выбора * Файл выбирается случайно из всего пула * Один файл может быть выбран несколько раз * Другой файл может не быть выбран вообще 3. Размеры динамические * Write каждый раз выбирает новый размер * Read читает текущий размер файла * Stat - метаданные