Я в шоке…
Годами, буквально годами пытаюсь получить минимальную задержку при обработке аудио на ноутбуке с jack, а теперь и с pipewire.
Платформа - Sandy Bridge, встроенное аудио Realtek ALC272.
Всегда считал нормой для этого ноутбука буфер 48000 Гц / 256 семплов (5,3 мс задержка) (кто в теме то поймет что это). Тут на ЛОРе мне много раз писали что это совсем не круто. Да я и на слух слышу задержку при игре на гитаре. Это все на обычном ядре, дефолтном в дистрибутивах. При меньшем буфере стабильно не работает.
Периодически я решал озаботиться улучшением, первое что советуют везде - использовать linux_rt вместо обычного ядра. Это немного улучшало ситуацию, можно было получить вдвое меньшую задержку 48000/128 (2,7 мс). Но не очень стабильно. Это - тоже совсем не айс!
И вот, чисто случайно, без объявления войны, я ставлю NixOS и в нем ядро xanmod 5.14. Происходит какая-то мистика!
Я выставляю 48000 / 64 (это уже 1.3 миллисекунды задержки). Все гранитно стабильно!
Выставляю 48000 / 32 (тридцать два, Карл!) - работает! Иногда похрюкивает.
КАК???? Это вообще законно??
Вопрос у меня вот в чем - как именно в xanmod так выходит, какие опции, или модификации, могут повлиять на то что стало вот так?
ИТАК
Пожалуй подведу окончательные итоги.
-
Практически все широко распространенные в сети рекомендации надо читать навыворот. Почему - отдельный вопрос.
-
Лучше всего для обеспечения low-latency при работе с аудио подходит обычное, общего назначения ядро. Даже ванильное ядро с kernel.org может обеспечить экстремально низкую задержку на моем музейном железе.
-
Ядро linux_rt подходит заметно хуже. Я не знаю почему. Видимо оно для совсем других задач, а то что оно работало со звуком лучше - дела давно минувших дней. Современные версии обычного ядра работают лучше.
-
Рекомендации по настройке ядра, по CONFIG_HZ, PREEMPT - можно выполнять, можно нет. Низкая задержка достижима с любыми вариантами этих настроек.
-
Желательно собирать ядро с минимальной конфигурацией. по-видимому я столкнулся с тем, что на конфигурации от Arch Linux на моем железе что-то лишнее мешало.