LINUX.ORG.RU

xanmod... рвет linux-rt в low-latency аудио задачах???

 , , , ,


3

5

Я в шоке…

Годами, буквально годами пытаюсь получить минимальную задержку при обработке аудио на ноутбуке с 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 так выходит, какие опции, или модификации, могут повлиять на то что стало вот так?

ИТАК

Пожалуй подведу окончательные итоги.

  1. Практически все широко распространенные в сети рекомендации надо читать навыворот. Почему - отдельный вопрос.

  2. Лучше всего для обеспечения low-latency при работе с аудио подходит обычное, общего назначения ядро. Даже ванильное ядро с kernel.org может обеспечить экстремально низкую задержку на моем музейном железе.

  3. Ядро linux_rt подходит заметно хуже. Я не знаю почему. Видимо оно для совсем других задач, а то что оно работало со звуком лучше - дела давно минувших дней. Современные версии обычного ядра работают лучше.

  4. Рекомендации по настройке ядра, по CONFIG_HZ, PREEMPT - можно выполнять, можно нет. Низкая задержка достижима с любыми вариантами этих настроек.

  5. Желательно собирать ядро с минимальной конфигурацией. по-видимому я столкнулся с тем, что на конфигурации от Arch Linux на моем железе что-то лишнее мешало.

★★★★

Последнее исправление: James_Holden (всего исправлений: 3)
Ответ на: комментарий от James_Holden

Влияние сети не проверял, но браузер ужасно мешает. Подозреваю, что из-за того, что видео и USB как-то пересекаются. Ноутбук…
Задержку могу проверить.
Проверил выход на вход. Alsa.
Если отключить PDC(компенсацию) - 1мс.
Если не отключать - -3мс. То есть, клик на записываемой дорожке оказывается раньше чем на источнике.

S_Paul ★★★★★
()
Последнее исправление: S_Paul (всего исправлений: 1)

А у меня свои итоги. Сколько смог вчера посидел на лаптопе и встройке. Xanmod-неxanmod, крути что хочешь, никакого плюса. Перформанс-ондеманд-шедутил - никакой значительной разницы, на уровне плацебо. Удаление tlp немного помогло, заработал bespokesynth на 48000/128, но всё равно с редкими, но слышимыми щелчками. Самое главное - если не подрубать приложения к выходу, то буффер можно ставить любой, иксрунов как бы и нет, ни внутри приложения, ни снаружи не видно (работаю через raysession). Затык в пайпвари? Или в звуковухе? Надо, конечно, попробовать на голом джеке, но что-то подсказывает, что всё будет ровно также.

Вернуть былую резвость не удаётся. Может быть из-за понаустановленного софта, который притягивает «нехорошие» библиотеки? Но как тогда быть? Софт нужен, держать отдельную систему для музыки, отдельную для 3дэ, отдельную для всего... Ну его нафиг.

R_He_Po6oT ★★★★★
()
Ответ на: комментарий от R_He_Po6oT

заработал bespokesynth на 48000/128, но всё равно с редкими, но слышимыми щелчками

Ну во-первых, какая у тебя при этом загрузка процессора?

Во-вторых, на арчевских ядрах, и даже на ванильном с арчевским конфигом у меня ровно такая же картина. Еле-еле работает 48000/128.

В третьих - в арче Xanmod зачем-то собирается еще и с патчами от арча. Так что не удивительно.

В четвертых - а как у тебя настроено pipewire? Загружен ли realtime модуль вообще? С дефолтными настройками у меня еще хуже чем ты описываешь.

James_Holden ★★★★
() автор топика
Ответ на: комментарий от James_Holden

Конфиги были сначала старые, с которыми когда-то работало на ура. В /etc/pipewire/jack.conf был выставлен буффер и ещё что-то. Но теперь эта штука работает по другому, так что, удалил конфиг и поставил этот, как его, медиасешшон, или как его. Но не помогло. Потом выставил модуль rtkit в настройках, как тут https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Performance-tuning но тоже не помогло. Снёс и поставил всё дефолтное, тот же эффект. Но чего я не понял - работал ли этот модуль рилтаймовый?

Задумал я поставить Манджару с нуля. Заведу софт для звука родной, а левые всякие проги постараюсь ставить из флатпака, снапа и аппимеджей. Интересно, так основная система почище будет? А флатпако-снапопомойку можно в любой момент переставить.

R_He_Po6oT ★★★★★
()
Ответ на: комментарий от R_He_Po6oT

Но чего я не понял - работал ли этот модуль рилтаймовый?

А у тебя в списке процессов был rtkit-daemon?

Проверить насколько все работает можно, проверив приоритет процесса pipewire. По дефолту он обычный (если через кедовый гуи смотреть - на середине ползунок), если все настроено верно - высокий, почти максимум.

а левые всякие проги постараюсь ставить из флатпака, снапа и аппимеджей

По идее это сохранит систему чистой, но я слабо представляю что там именно может портить звук при установке из репов арча.

James_Holden ★★★★
() автор топика
Ответ на: комментарий от R_He_Po6oT

На моем древнючем стационарнике кстати у меня вообще валилово, там и 96000/32 с выходом в звуковуху тянет. Но там встройка VIA, мать ее, у нее проблема - capture не стартует. То есть запускаю запись, и все как заморожено - ничего не пишет. После шаманских ритуалов в alsamixer (я так до конца не понял пока каких именно) начинает все работать.

James_Holden ★★★★
() автор топика
Ответ на: комментарий от James_Holden

Так. Комп проснутый после дня в ждущем режиме, в свопе забит на 53% от 1 гига. Ядро 5.15.7-1-MANJARO, без никаких патчей. Дефолтный конфиг пайпвари и вареплумбера.

Не запущен ни один джековый клиент, просто ничем не занятая пайпваря. В процессах вижу rtkit-daemon с приоритетом 1, pipewire и pipewire-pulse, оба с приоритетом -11, и wireplumber с приоритетом 0.

Запустить джековые приложения без pw-jack не могу. (Помнится, говорили, что уже не надо, что само должно, но у меня не получается) Запускаю «pw-jack raysession», в нём сессия с bespokesynth и буффером в 1024, но сейчас даже его не вывозит, сыплет иксрунами:

!   28      0      0   0.0µs   0.0µs  0.00  0.00    0  Dummy-Driver
!   29      0      0   0.0µs   0.0µs  0.00  0.00    0  Freewheel-Driver
!   35      0      0   0.0µs   0.0µs  0.00  0.00    0  Midi-Bridge
!   42      0      0   0.0µs   0.0µs  0.00  0.00    0  v4l2_input.pci-0000_00_14.0-usb-0_6_1.0
!   44      0      0   0.0µs   0.0µs  0.00  0.00    0  alsa_output.pci-0000_00_03.0.hdmi-stereo
!   61      0      0   0.0µs   0.0µs  0.00  0.00    0  easyeffects_source
!   95      0      0   0.0µs   0.0µs  0.00  0.00    0  ee_sie_output_level
!  100      0      0   0.0µs   0.0µs  0.00  0.00    0  ee_sie_spectrum
   164    512  48000   3.6ms  29.3µs  0.34  0.00   68  alsa_output.pci-0000_00_1b.0.analog-stereo
    60      0      0  20.0µs  10.8µs  0.00  0.00   68   + easyeffects_sink
    72      0      0  13.2µs   5.5µs  0.00  0.00   69   + ee_soe_output_level
    77      0      0 174.1µs   7.4µs  0.02  0.00   68   + ee_soe_spectrum
    82      0      0  99.9µs 766.4µs  0.01  0.07   68   + ee_soe_autogain
   213    900  48000  24.3µs  34.5µs  0.00  0.00   68   + Firefox
   207      0      0  19.3µs   0.5µs  0.00  0.00   68   + ray-patch_to_osc
   191      0      0  22.0µs   3.5ms  0.00  0.33  101   + BespokeSynth
!  109      0      0   0.0µs   0.0µs  0.00  0.00    0  alsa_input.pci-0000_00_1b.0.analog-stereo
!  140      0      0   0.0µs   0.0µs  0.00  0.00    0  Firefox

П.с. В беспоке запущен пресет из демонстрационных файлов про арпеджиатор.

Вот с данной точки куда мне идти? Я уже запутался.

R_He_Po6oT ★★★★★
()
Ответ на: комментарий от R_He_Po6oT

Дефолтный конфиг пайпвари

Так надо ей риалтайм модуль добавить, приоритет маловат - у меня -15.

Запустить джековые приложения без pw-jack не могу

Вот это пробовал ставить?

https://aur.archlinux.org/packages/pipewire-jack-dropin/

сессия с bespokesynth и буффером в 1024, но сейчас даже его не вывозит, сыплет иксрунами

Тут оно из двух - либо bespokesynth тупо сам не успевает на твоем железе (скорее всего), либо что-то со звуковухой на самом деле на уровне железа не то. Ну уж 1024 должно тянуть.

Попробуй просто скажем в Qtractor создать пустой проект и подключить его к микрофону напрямую и к выходу напрямую. Вот в таком случае при каком буфере начинает xrun’ами сыпать?

James_Holden ★★★★
() автор топика
Ответ на: комментарий от James_Holden

Так надо ей риалтайм модуль добавить

:) Какой и куда? Можешь выложить свои модификации пайпвареконфигов? Я так понимаю, ты что-то в никсосе добалял в конфиг и вносил туда отличия от стандартного конфига, да?

R_He_Po6oT ★★★★★
()
Ответ на: комментарий от James_Holden

А про bespokesynth - это самый быстрый способ «прогреть» систему. Пока в кутракторе загрузятся библиотеки, пока он расчехлится, потом упадёт, потом ещё чтонить... И итог будет тот же - иксруны, примерно с такой же периодичностью.

R_He_Po6oT ★★★★★
()
Ответ на: комментарий от R_He_Po6oT

Пока в кутракторе загрузятся библиотеки, пока он расчехлится

Хм хм… Вот я на 12 летнем ноуте своем вообще не думаю о таких вещах. Неужели так тормозит все? Ну может поэтому и иксруны…

pipewire.conf

https://pastebin.com/WjqAyjvS

pipewire-pulse.conf

https://pastebin.com/MvCSXZJ6

jack.conf

https://pastebin.com/K6g339Mc

client-rt.conf

https://pastebin.com/n9Y9RSTN

media-session.conf

https://pastebin.com/MaiauYzH

Остальное выглядит как дефолтное. Я не использую wireplumber.

James_Holden ★★★★
() автор топика
Ответ на: комментарий от James_Holden

????? Не вижу ничего интересного, кроме того, что не вижу явно указанной частоты 96000, с которой ты, вроде как, работаешь. Интересно, как он включает у тебя эту частоту?

Не нашёл что править в конфиге, только добавил

"default.clock.allowed-rates": [ 44100, 48000, 96000 ]
Ничего не поменялось.

Установил pipewire-media-session обратно. Ничего не поменялось.

Сделал «node.latency» 256/96000 в jack.conf и получил бардак. Поток кутрактора имеет частоту 256/96000, а alsa-output всё равно стоит 128/48000. В результате все ноты играются на октаву (или две?) ниже и в два раза медленнее. Брееед... Хочу просто работающую систему.

R_He_Po6oT ★★★★★
()
Ответ на: комментарий от R_He_Po6oT

Я принудительно задаю жестко размер буфера и частоту дискретизации перед работой со звуком при помощи pw-metadata, как описано в моей бомбилово теме про pipewire.

Потом скидываю на автомат, когда просто ютуб смотреть.

Посмотри еще, там в конфигах rt модуль почти везде добавлен.

James_Holden ★★★★
() автор топика
Ответ на: комментарий от James_Holden

Про rt-модуль - и у тебя и в манджаровских конфигах (подозреваю, что дефолтных вообще) присутствует строка с rt и rtkit. При чём не понял, почему в jack.conf она не rtkit, а rt? Но так и у тебя и у меня, значит всё на месте. Всё чем отличаются твои конфиги - убраны закомментированные сроки (ну и расширены конфиги дополнительных частот).

R_He_Po6oT ★★★★★
()
Ответ на: комментарий от James_Holden

Самосбор обычно шустрее.(у меня, по крайней мере)

S_Paul ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.