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