Добавить ARCHITECTURE.md
This commit is contained in:
parent
528f27f51f
commit
cc200f90a6
53
ARCHITECTURE.md
Normal file
53
ARCHITECTURE.md
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
### Архитектура выполнения
|
||||||
|
```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 - метаданные
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user