The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

форумы  правила/FAQ  поиск  регистрация  вход/выход  слежка  RSS
"Раздел полезных советов: Разбираемся с 'треском' в PulseAudio"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от auto_tips (ok) on 08-Апр-17, 07:25 
++ Теория

При воспроизведении звука часть потока буферизируется перед отправкой в устройство. Существует два подхода к наполнению буфера: условно "старый" - статический буфер, состоящий из нескольких фрагментов, вставка каждого следующего фрагмента по прерыванию (IRQ). Его плюс в предсказуемости - он работает всегда, и всегда одинаково. Но есть у него и минусы - 50 прерываний в секунду не дают процессору заснуть и энергосберегать. Не дают они ему и шанса считать что-то тяжёлое - прерывания всё время "отвлекают" ядро на очень простую, но "зудливую" задачу. Элементарная задача воспроизведения звука становится неоправданно затратной. Вишенка на торте - постоянная задержка при захвате звука: даже тогда, когда мы хотим минимальную задержку, она будет >= нашему статическому буферу (обычно ~100 ms).

Второй подход (glitch free на языке маркетологов) подразумевает динамический буфер и вставку фрагмента по таймеру, без использования прерываний. Он лишён недостатков первого, но требует поддержки железом, приличных драйверов, "сознательности" приложения, которое должно запросить себе комфортный буфер (минимальный для программ захвата - 0-20ms, и большой для плееров - 200-2000ms).

Dropout - ситуация, в которой фрагмента не оказалось в буфере в момент его воспроизведения. Одновременно является самой частой причиной звуковых артефактов. Чем больше буфер, тем меньше шансов на dropout (но и задержка выше).

ALSA реализует и поддерживает только первый способ буферизации. PulseAudio реализует оба, по умолчанию использует второй.

++ Что делать? Кто виноват?

Если вы слышите артефакты при воспроизведении звука через PulseAudio, первым делом стоит перевести демон в "режим ALSA" и убедиться, что проблема в таймере:

/etc/pulse/default.pa:

   --- load-module module-udev-detect
   +++ load-module module-udev-detect tsched=0

   pulseaudio -k; pulseaudio --start (от пользователя)

Нагрузку на CPU можно уменьшить, увеличив размер фрагмента

/etc/pulse/daemon.conf:

   --- #default-fragments 4
   +++ default-fragments = 2
   --- #default-fragment-size-msec 25
   +++ default-fragment-size-msec 125

но это увеличит задержку. Задержку можно уменьшить (но это увеличит нагрузку на CPU)

/etc/pulse/daemon.conf:

   --- #default-fragments 4
   +++ default-fragments = 8
   --- #default-fragment-size-msec 25
   +++ default-fragment-size-msec 5

Параметры default-fragments и default-fragment-size-msec имеют силу только если вы выключили таймер (прописали tsched=0), или если он не поддерживается аппаратно.

Есть и менее радикальный вариант: принудительная буферизация на стороне таймера:

/etc/pulse/default.pa:

   --- load-module module-udev-detect
   +++ load-module module-udev-detect tsched_buffer_size=60000

На современных системах 60000 (это микросекунды) можно заменить на 30000 (или даже меньшее число, я использую 23000)

URL:
Обсуждается: http://www.opennet.ru/tips/info/3014.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от EuPhobos (ok) on 08-Апр-17, 07:25 
Может тут кто подскажет.
Программа, в данном случае игра, расчитана на ALSA, у PulseAudio поднимается sink с надписью alsa-plugin, но этот sink очень быстро падает и снова поднимается.
https://youtu.be/r9gEsDj1KRg (на видео артефакты OGL можно не смотреть)
И так несколько минут, потом всё отлично, через несколько минут опять повторяется, после чего когда прекращается этот флап могут остаться характерные для PA хрипы, и т.д.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от die_russofobs on 08-Апр-17, 09:56 
"[i]Но есть у него и минусы - 50 прерываний в секунду не дают процессору заснуть и энергосберегать. Не дают они ему и шанса считать что-то тяжёлое - прерывания всё время "отвлекают" ядро на очень простую, но "зудливую" задачу. Элементарная задача воспроизведения звука становится неоправданно затратной[/i]"
    - В винде ядро в играх отвлекается до 1000 раз в секунду только по таймеру  и  всёравно ...быстрее *NIX - судя по играм же в WINE.
Вывод: у Торвальдса&WINE&co - руки из Ж. :(
А, судя по современным минимальным системным запросам ядра и GUI, не уступающим тормозу Vist'е, за то всё Intel им всем - хорошо приплачивает...
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от leap42 (ok) on 08-Апр-17, 14:09 
виндовые игрушечки, идущее на винде быстрее, чем не на винде - это ожидаемый эффект. в wine нормально работает только то, за что платят бабки разработчикам wine, а всё остальное - побочный эффект. у Торвальдса всё в порядке с руками, поищите его код и поймёте. что сказать то хотели?
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от Аноним (??) on 08-Апр-17, 17:32 
Вендовое ядро быстрее *NIX. А что Венда не кластерах из Top500? Да и в датацентрах всё больше как-то не Винда.
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

5. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от Stax (ok) on 08-Апр-17, 19:09 
Ну, очевидно, у винды есть как минимум 3 очень неприятных проблемы - при которых ее не будет на кластерах, хоть бы и она была быстрее:
1) Стоит денег. Это когда лицензия на один ПК - не так страшно, а когда 10,000 лицензий нужно (причем серверной, которая поддерживает несколько процессоров. А она довольно дорогая даже с учетом всех возможных скидок) - она обойдется весьма недешево. Каждый узел кластера стараются любой ценой удешевить - блейд-системы, общее питание и охлаждение, отказ от дисков (по возможности) и т.п. Материнка, проц, интерконнект - это минимум, без него никуда, на остальном же стараются сэкономить. И доплата за лицензию тут будет очень некстати.
2) Она может выигрывать в скорости, но проигрывать в гибкости. Например, может не устраивать система обновлений, или убогие возможности управления ей через chef или ansible. Никому не хочется тратить кучу времени (которое - те же деньги) ради мизерного прироста, суммарно же выйдет проигрыш.
3) Она может быть быстрее для обычных приложений, игр и тп на одном процессоре, но проигрывать в задачах, которые важны для кластеров. Что в этом странного?
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от Аноним (??) on 10-Апр-17, 12:41 
Интересно, насколько актуальна статья на wiki?
https://www.freedesktop.org/wiki/Software/PulseAudio/Backend.../
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "Разбираемся с 'треском' в PulseAudio"  +1 +/
Сообщение от iPony on 10-Апр-17, 17:58 
Шёл 2017 год...
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от Crazy Alex (ok) on 10-Апр-17, 21:38 
1) 50 прерываний в секунду - это много и сильно нагружает систему? Really?

2) у пульса появились свои драйверы? Насколько я знаю - нет, и он всё равно звук в итоге гонит через альсу. Каким чудом тогда получается режим "без прерываний"?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

9. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от leap42 (ok) on 11-Апр-17, 02:06 
>> 50 прерываний в секунду - это много и сильно нагружает систему?
> прерывания всё время "отвлекают" ядро на очень простую ... задачу.
> элементарная задача
>> у пульса появились свои драйверы?

нет, приличные драйвера требуются именно от ALSA

>> Каким чудом тогда получается режим "без прерываний"?

монотонный таймер и высокий (отрицательный) приоритет

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от Аноним (??) on 11-Апр-17, 12:13 
> 1) Стоит денег.

Кластер тоже стоит денег. MS лучше получить что-то за воздух, чем вылететь с рынка кластеров. Более того они пытались и вылетели.

> 2) Она может выигрывать в скорости, но проигрывать в гибкости.

Это CS, может-не может не надо гадать, производительность измеряется на реальных задачах и бенчмарках.

> 3) Она может быть быстрее для обычных приложений

Что такое обычное приложение? 3D графика? так это к производителям игр и видеокарт, заслуг MS в быстрой или медленной игре нет. Что-то не слышно историй, что после выхода win10 игры стали быстрее чем были в win7.

Частота просыпания пульсы это про энергосбережение: чем дольше процессор в слипе, тем дольше телефон/ноут живёт от батарейки, какая разница сколько кадров в секунду на windows выдаёт игрушка оптимизированная под конкретную версию драйверов под windows от ATI или NVIDIA?

Пользуетесь отсутствием кнопки "к модератору", в http://www.opennet.ru/tips/ , чёртовы спамеры.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

11. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от Mihail Zenkov (ok) on 14-Апр-17, 09:44 
Думаю Алекс хотел сказать, что из alsa прерывания никуда не делись, а PA добавляет еще свои прерывания/таймер для заполнения собственного буфера.

Про нагрузку от прерываний вы сильно преувеличили: я занимаюсь оптимизацией энергопотребления в rockbox - даже на древнем arm (при частоте 38.4 MHz) вызов ~394 прерываний в секунду для отсылки данных в ЦАП дает практически нулевую нагрузку, если данные лежат в кэше. Только при обращении к памяти возникает потребление, но это неизбежно.

Да и не понятно: почему вызов по таймеру должен потреблять меньше, чем прерывание? С прерыванием мы имеем гарантированное время отклика и можем вызывать его когда в буфере остался последний десяток байт. С таймером разброс время отклика будет большим: для предотвращения полного опустошения буфера, придется вызывать таймер в два раза чаще, чем прерывание.

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

12. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от Аноним (??) on 14-Апр-17, 11:38 
Пони, хоть ты и дикое необузданное животное, каких поискать ещё,
но тут я с тобой согласен.
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

13. "Разбираемся с 'треском' в PulseAudio"  –1 +/
Сообщение от leap42 (ok) on 14-Апр-17, 11:58 
может, я не прав, да, но powertop говорит однозначно: процессор сбрасывает частоту при работе по таймеру и не сбрасывает без него

почитайте Лёнину статью, может, она что-то прояснит:
http://0pointer.de/blog/projects/pulse-glitch-free.html

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

14. "Разбираемся с 'треском' в PulseAudio"  +1 +/
Сообщение от Mihail Zenkov (ok) on 14-Апр-17, 18:37 
> может, я не прав, да, но powertop говорит однозначно: процессор сбрасывает частоту
> при работе по таймеру и не сбрасывает без него

CPU не сбрасывает частоту не от количества прерываний (к примеру сейчас у меня ~700 в секунду и все ядра на минимуме), а от нагрузки на процессор. ИМХО у PA просто очень большой overhead.

Если прибить pa и использовать напрямую alsa, что говорит powertop?

> почитайте Лёнину статью, может, она что-то прояснит:
> http://0pointer.de/blog/projects/pulse-glitch-free.html

Первая часть (до glitch-free) в целом описывает все верно. А вот сам glitch-free нужно читать не как без-глючный, а как глюки-даром :) Как он сам правильно отметил - нельзя использовать системный таймер для заполнения аудиобуфера, так как у звуковой платы свой тактовый генератор и разница в отсчетах будет неизбежно. Но он героически пытается вычислить и компенсировать эту разницу ... Что получилось - многие слышали. Что мешало оставить прерывания в покое и просто часть их пропускать, если нет необходимости в минимальной задержке?

Да и вообще держать постоянно открытым устройство, когда нет звука, как минимум расточительно.

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

15. "Разбираемся с 'треском' в PulseAudio"  +1 +/
Сообщение от Главные Редакторы. Избранное on 16-Апр-17, 11:17 
Подтверждаю. Был лпыт с Убунтой12 устанвленной на нетбук с слабеньким процессором Атом. Запускаю просмотр Ютюб на Фаерфоксе: видео тормозит, заметен пропуск кадров, процессор загружается на 100%. Скачиваю это же видео в файл на диске. Включаю просмотр через VLC. Наблюдаю ту же картину: видео тормозит, заметен пропуск кадров, процессор загружается на 100%. В настройках VLC выбираю вывод звука через Аппаратный интерфейс Интел, после чего получаю такой расклад: видео отображается плавно и процессор загружается на 2-5%. Для меня с тех пор вопрос - что такое ПульсАудио, закрыт окончательно.
Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

16. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от Mihail Zenkov (ok) on 16-Апр-17, 19:22 
Для сравнения глянул нагрузку от jack на старом ноутбуке (2 x 1.66 MHz) с задержкой 11 ms (у PA она 25 ms по-умолчанию) - получил 0.4 - 0.5%.
Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

17. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от Аноним (??) on 17-Апр-17, 14:08 
это прекрасно все, вот только как жить без него? ;) ну т.е. если его снести на убунте то все будет работать как обычно? или понадобится кучу костылей для всего городить?
Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

18. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от Аноним (??) on 17-Апр-17, 14:10 
>[оверквотинг удален]
> Первая часть (до glitch-free) в целом описывает все верно. А вот сам
> glitch-free нужно читать не как без-глючный, а как глюки-даром :) Как
> он сам правильно отметил - нельзя использовать системный таймер для заполнения
> аудиобуфера, так как у звуковой платы свой тактовый генератор и разница
> в отсчетах будет неизбежно. Но он героически пытается вычислить и компенсировать
> эту разницу ... Что получилось - многие слышали. Что мешало оставить
> прерывания в покое и просто часть их пропускать, если нет необходимости
> в минимальной задержке?
> Да и вообще держать постоянно открытым устройство, когда нет звука, как минимум
> расточительно.

опять таки спрашиваю, как жить на убунте без пульсы тогда?

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

19. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от Mihail Zenkov (ok) on 18-Апр-17, 09:37 
> опять таки спрашиваю, как жить на убунте без пульсы тогда?

Нет у меня ни пульсы, ни убунты :)
В интернете есть куча статей про отключение/удаление PA.

Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

20. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от anonymous (??) on 18-Апр-17, 10:54 
> Для сравнения глянул нагрузку от jack на старом ноутбуке (2 x 1.66
> MHz) с задержкой 11 ms (у PA она 25 ms по-умолчанию)
> - получил 0.4 - 0.5%.

Я так понял из документации на jack, что он полезен при realtime потребностях (запись звука, например). На обычном ноутбуке/десктопе он даёт какие-то преимущества в сравнии с просто использованием alsa с dmix?

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

21. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от Mihail Zenkov (ok) on 18-Апр-17, 13:05 
> На обычном ноутбуке/десктопе он даёт какие-то преимущества
> в сравнии с просто использованием alsa с dmix?

Нет. Он нужен для малой задержки (realtime) и для очень гибкого перенаправления звука между приложениями - реально нужен только тем, кто работает со звуком. Да и ресурсов он потребляет существенно больше (особенно памяти), чем alsa с dmix.

Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

22. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от Павел Самсонов email on 20-Апр-17, 09:21 
> Подтверждаю. Был лпыт с Убунтой12 устанвленной на нетбук с слабеньким процессором Атом.
> Запускаю просмотр Ютюб на Фаерфоксе: видео тормозит, заметен пропуск кадров, процессор
> загружается на 100%. Скачиваю это же видео в файл на диске.
> Включаю просмотр через VLC. Наблюдаю ту же картину: видео тормозит, заметен
> пропуск кадров, процессор загружается на 100%. В настройках VLC выбираю вывод
> звука через Аппаратный интерфейс Интел, после чего получаю такой расклад: видео
> отображается плавно и процессор загружается на 2-5%. Для меня с тех
> пор вопрос - что такое ПульсАудио, закрыт окончательно.

Pulse audio в моём представлении это как X сервер только для звука. Полезно при перенаправлении звука на другой комп.
У меня есть стандартный Debian jessie на Asus EE PC. Из коробки никаких проблем с Ютубом не было. Вроде через пульсаудио, я даже не знаю если честно.

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

23. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от pavlinux (ok) on 21-Апр-17, 15:42 
Долб... Ламповый усилок, SACD, loseless вас спасут.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

24. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от PnDx (ok) on 28-Апр-17, 11:23 
Особенно у Линуса commit 4ceb5db9757a удался. Хе-хе. 11 лет как бараны смотрели (по крайней мере, кому это по должности положено).
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

25. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от Ненужно on 10-Май-17, 20:00 
лишь бы не использовать чистую альсу...
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

26. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от Аноним (??) on 20-Май-17, 17:12 
Судя по https://www.freedesktop.org/wiki/Software/PulseAudio/Documen... tsched_buffer_size - это не микросекунды, а байты.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

27. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от Аноним (??) on 20-Май-17, 17:18 
Форум попортил ссылку: https://www.freedesktop.org/wiki/Software/PulseAudio/Documen...
Ответить | Правка | ^ к родителю #26 | Наверх | Cообщить модератору

28. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от Timur I. Davletshin email on 24-Май-17, 21:25 
В моём случае проблема с периодическим потрескиванием звука во встроенной карте решалась принудительным переходом с обычных прерываний на MSI (options snd_hda_intel enable_msi=1). До этого USB и звуковуха делили одно прерывание. Проверить статус можно в /proc/interrupts.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

29. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от Гриша Чайников on 19-Июн-17, 20:29 
Да вы задрали со своим треском. Уже много лет ншшшшшшшшт шшшшкакого тршшшшшшшшшшшшшшшшшшшшшш
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

30. "Разбираемся с 'треском' в PulseAudio"  +/
Сообщение от Тихонов on 26-Июн-17, 12:27 
В 2017 году стыдоба-то какая.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема


  Закладки на сайте
  Проследить за страницей
Created 1996-2017 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
Hosting by Ihor