meta data for this page
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revision | |||
| wiki:nas:xigmanas:performance_tuning [2026/08/06 08:20] – mchus | wiki:nas:xigmanas:performance_tuning [2026/08/07 05:46] (current) – mchus | ||
|---|---|---|---|
| Line 72: | Line 72: | ||
| Объём: ориентир "2× RAM" для legacy-железа; | Объём: ориентир "2× RAM" для legacy-железа; | ||
| + | |||
| + | ===== ZFS: latency vs throughput ===== | ||
| + | |||
| + | На слабом CPU/ | ||
| + | |||
| + | ^ Параметр ^ Дефолт ^ Значение ^ Требует ребута ^ Причина ^ | ||
| + | | vfs.zfs.txg.timeout | 5с | 1с | Нет (live sysctl) | Короче окно накопления транзакционной группы — короче потенциальный стопор на её фиксации | | ||
| + | | vfs.zfs.dirty_data_max_percent | 10% от RAM | 5% | Да — read-only tunable, только через loader.conf | Меньше данных копится в памяти перед принудительным сбросом на диск | | ||
| + | | vfs.zfs.vdev.async_write_max_active | 10 | 3 | Нет (live sysctl) | Глубина очереди записи на vdev — на старых дисках без развитого NCQ большая очередь удлиняет отклик для операций, | ||
| + | | vfs.zfs.vdev.sync_write_max_active | 10 | 3 | Нет (live sysctl) | То же для синхронных записей | | ||
| + | |||
| + | < | ||
| + | # loader.conf / sysctl.conf | ||
| + | vfs.zfs.txg.timeout=1 | ||
| + | vfs.zfs.dirty_data_max_percent=5 | ||
| + | vfs.zfs.vdev.async_write_max_active=3 | ||
| + | vfs.zfs.vdev.sync_write_max_active=3 | ||
| + | </ | ||
| + | |||
| + | **arc_min — не трогать.** Может казаться логичным зафиксировать минимальный размер ARC, чтобы не проседал под нагрузкой, | ||
| + | |||
| + | ===== vnode-лимит при большом числе мелких файлов ===== | ||
| + | |||
| + | `kern.maxvnodes` — верхняя граница живых vnode в системе. Если по дереву датасета проходит live filesystem watcher (см. статью про тюнинг Syncthing — секция про fsWatcher/ | ||
| + | |||
| + | Диагностика: | ||
| ===== Проверка: | ===== Проверка: | ||
| Line 98: | Line 124: | ||
| 0 6 * * * root for d in ada0 ada1 ada2 ada3; do / | 0 6 * * * root for d in ada0 ada1 ada2 ada3; do / | ||
| </ | </ | ||
| + | |||
| + | ===== Cron: подводные камни ===== | ||
| + | |||
| + | * Задачи с интервалом вида `@300` (в отличие от задач с фиксированным временем `H:M`) отсчитываются **от момента старта демона cron**, а не от часов. После `service cron restart` расписание таких задач сдвигается — первый цикл наступит не сразу, а через полный интервал от рестарта. | ||
| + | * Пустой узел `< | ||
| + | * После правки `config.xml` через `xmlstarlet` — обязательна верификация чтением значения обратно из файла **и** из живого `/ | ||
| ===== Параметры, | ===== Параметры, | ||
| Line 105: | Line 137: | ||
| | HDD standby timer | задаётся в **минутах**, | | HDD standby timer | задаётся в **минутах**, | ||
| | Power Mode CPU | adaptive | не проседает на всплесках нагрузки (в отличие от minimum), не расходует лишнее (в отличие от maximum) | | | Power Mode CPU | adaptive | не проседает на всплесках нагрузки (в отличие от minimum), не расходует лишнее (в отличие от maximum) | | ||
| - | |||