Производительность и буферизация
Свирель 0.12.1 · документация разработчика
Содержание главы
- Базовые цифры
- Профиль памяти
- Тюнинг
Цифры ниже — ориентир для одного ядра x86_64 (i5-8400 класс), сборка 0.12.1.
Базовые цифры
| Сценарий | Скорость | CPU |
|---|---|---|
| файловый источник, короткие строки | ~180 тыс. записей/с | 0.6 ядра |
| json-lines с парсингом полей | ~70 тыс. записей/с | 0.8 ядра |
| 10 источников одновременно | ~120 тыс. записей/с | 1.1 ядра |
Профиль памяти
Память = буфер + стейт источников + кэш форматов. Буфер по умолчанию 16384 записи (~6 МБ при коротких строках). Длинные multiline-записи (стектрейсы) буферизуются целиком — при потоке стектрейсов размер буфера в байтах может вырасти десятикратно.
Внимание.
buffer.fixed в байтах не
поддерживается — фиксироваться может только количество записей. Для ограничения
памяти при multiline используйте multiline.max_bytes.Тюнинг
flush: interval 500ms— компромисс между потерями и syscall'ами;- фильтры
dropставьте первыми — они дешевле всего; - regex-rewrite'ы компилируются один раз, но 10+ rewrite'ов на запись заметны — объединяйте в один;
- выходу в файл отключите fsync (
fsync: never) — ОС сама сбросит.