From cc200f90a6145f23acdbe3de13c6d974e1781cca Mon Sep 17 00:00:00 2001 From: denis Date: Wed, 25 Mar 2026 17:53:16 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20ARCHITECTURE.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ARCHITECTURE.md | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 ARCHITECTURE.md diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md new file mode 100644 index 0000000..c6e9c6b --- /dev/null +++ b/ARCHITECTURE.md @@ -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 - метаданные +