DiskTester/ARCHITECTURE.md

54 lines
2.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### Архитектура выполнения
```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 - метаданные