Обновить README.md
This commit is contained in:
parent
fdeb286025
commit
528f27f51f
102
README.md
102
README.md
@ -1,5 +1,101 @@
|
|||||||
# DiskTester
|
# DiskTester
|
||||||
|
|
||||||
Тестер дисковой подсистемы на Go с упором на операции
|
Тестер дисковой подсистемы на Go с упором на операции
|
||||||
с метаданными файловой системы (stat), что критично для приложений
|
с метаданными файловой системы (stat), что критично для приложений
|
||||||
типа Dovecot и других систем, активно работающих с атрибутами файлов.
|
активно работающих с атрибутами файлов.
|
||||||
|
|
||||||
|
|
||||||
|
### КЛЮЧЕВЫЕ ВОЗМОЖНОСТИ:
|
||||||
|
|
||||||
|
Операции:
|
||||||
|
* read - чтение файлов
|
||||||
|
* write - запись файлов
|
||||||
|
* stat - получение метаданных
|
||||||
|
* fsync - Принудительная запись на диск
|
||||||
|
* mkdir - Создание каталога
|
||||||
|
* rmdir - даление каталога
|
||||||
|
* readdir - Чтение содержимого каталога
|
||||||
|
|
||||||
|
Конфигурация:
|
||||||
|
* YAML файлы + command-line flags
|
||||||
|
* Гибкие веса операций (например: 70% stat, 20% read, 10% write)
|
||||||
|
* Настройка размеров файлов, глубины каталогов
|
||||||
|
* Количество workers, длительность теста
|
||||||
|
|
||||||
|
Метрики:
|
||||||
|
* IOPS (операций в секунду)
|
||||||
|
* Throughput (MB/s для read/write)
|
||||||
|
* Latency percentiles (p50, p95, p99)
|
||||||
|
* Раздельная статистика по типам операций
|
||||||
|
* JSON, csv отчеты
|
||||||
|
|
||||||
|
А также:
|
||||||
|
* Автоматическое создание тестовых данных
|
||||||
|
* Проверка существующих данных (не пересоздаёт)
|
||||||
|
* Warmup фаза для стабильности
|
||||||
|
* Thread-safe метрики
|
||||||
|
* Graceful shutdown
|
||||||
|
|
||||||
|
|
||||||
|
═══════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
### ИНТЕРПРЕТАЦИЯ РЕЗУЛЬТАТОВ:
|
||||||
|
|
||||||
|
```txt
|
||||||
|
--- Stat Operations ---
|
||||||
|
Count: 50339 ← выполнено 50,339 операций
|
||||||
|
IOPS: 838.98 ← 838 операций в секунду
|
||||||
|
Latency (p50): 234µs ← типичная операция: 0.234ms
|
||||||
|
Latency (p95): 1.123ms ← 95% операций: < 1.123ms
|
||||||
|
Latency (p99): 3.456ms ← 99% операций: < 3.456ms
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Что такое Latency (задержка)?
|
||||||
|
|
||||||
|
Latency - это время выполнения одной операции. Например:
|
||||||
|
|
||||||
|
Записать файл заняло 2.5 миллисекунды
|
||||||
|
Прочитать файл заняло 1.2 миллисекунды
|
||||||
|
Stat файла занял 0.3 миллисекунды
|
||||||
|
|
||||||
|
В массив latencies собирается время выполнения КАЖДОЙ операции:
|
||||||
|
|
||||||
|
### Зачем Percentiles (процентили)?
|
||||||
|
|
||||||
|
Среднее значение (average) - плохая метрика! Вот почему:
|
||||||
|
|
||||||
|
Пример 1: Обманчивое среднее
|
||||||
|
У вас 100 операций:
|
||||||
|
|
||||||
|
- 95 операций: 1ms
|
||||||
|
- 5 операций: 100ms
|
||||||
|
|
||||||
|
Среднее: (95×1 + 5×100) / 100 = 5.95ms
|
||||||
|
Но это НЕ отражает реальность! 95% пользователей видят 1ms, а среднее говорит про 6ms.
|
||||||
|
|
||||||
|
Percentiles решают эту проблему:
|
||||||
|
**p50 (медиана) - 50%** операций быстрее этого значения:
|
||||||
|
|
||||||
|
"Половина операций выполняется быстрее чем X"
|
||||||
|
Типичная производительность
|
||||||
|
|
||||||
|
**p95 - 95%** операций быстрее этого значения:
|
||||||
|
|
||||||
|
"95 из 100 операций выполняются быстрее чем X"
|
||||||
|
Показывает "почти всегда" производительность
|
||||||
|
|
||||||
|
**p99 - 99%** операций быстрее этого значения:
|
||||||
|
|
||||||
|
"99 из 100 операций выполняются быстрее чем X"
|
||||||
|
Показывает "худшие случаи" которые всё ещё регулярны
|
||||||
|
|
||||||
|
#### Интерпретация:
|
||||||
|
|
||||||
|
- **p50 = 500µs**: Типичный stat выполняется за полмиллисекунды
|
||||||
|
- **p95 = 2ms**: В 95% случаев stat занимает ≤ 2ms
|
||||||
|
- **p99 = 50ms**: Но 1% операций (100 из 10,000) занимают до 50ms!
|
||||||
|
|
||||||
|
**Проблема!** Эти 100 медленных операций - это когда пользователь открывает почтовый ящик и ждёт 50ms. Это заметно!
|
||||||
|
|
||||||
|
═══════════════════════════════════════════════════════════════
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user