|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Stas Sergeev 2:5020/3456.28 10 Jan 2002 01:56:10 To : Sergey_Afonin Subject : Re: Sound (2.4.17, KDE 2.2.2, i815) --------------------------------------------------------------------------------
SA> arts от KDE 2.2.2, а, может, и от более ранних перестал
SA> в некоторой степени, условен. Первые несколько минут после
SA> запуска KDE artsd чем-то усиленно занимается, кушая 80-99 %%
SA> CPU. Результат занятий может быть как успешный, так и нет.
SA> Собственно вопрос - никто с причиной еще не разобрался ?
Hаблюдал я похожее, причина была в следующем: артс, даже когда ему делать
нечего, всё равно пишет в /dev/dsp нули зачем-то. При этом он использует
select() для определения момента, когда можно записывать. Hо, так как записывать
желательно целый фрагмент за один вызов write(), он ещё использует ioctl()
SNDCTL_DSP_GETOSPACE чтобы убедиться, что есть хотя бы один полностью свободный
фрагмент.
Так вот, он рассчитывает, что poll() будет устанавливать POLLOUT именно тогда,
когда свободен целый фрагмент, в то время как некоторые драйвера считают, что
POLLOUT можно устанавливать уже тогда, когда записать можно хотя бы один байт
(или вообще poll там сломан). В результате select() не отправляет артса в
спячку, и тот гоняет select() и ioctl() в цикле.
Когда ему это надоедает, он либо говорит "CPU overloaded, aborting", либо
перестаёт писать нули в устройство.
---
* Origin: (2:5020/3456.28)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/46543c3ceb68.html, оценка из 5, голосов 10
|