Как добиться бесперебойной работы аудио при большой нагрузке?
иначе, лучше обращаться в техподдержку аудиопроигрывателя, который ты используешь
я бы, наверное, в таком случае ответил "никак" из вежливости =)
кстати WMP при проигрывании музыки очень неплохо переживает большые нагрузки на проц и винт (с видео уже конечно больше проблем)
думаю можно найти плагин, который повышает приоритет процесса
пишется этот плагин очень лекго (это всего лишь inproc COM компонет, который при создании и разрушении увеличивает и соотв уменьшает приоритет процесса)
если очень хочется, то можно поставить Media SDK, там будет визард, с пом его генерируешь background plugin
там будут два пустих метода, куда можно вписать изменения приоритета
Я юзаю STP. Он позволяет менять собственный приоритет - иногда это ощущается, а иногда - нет.
Для аудио-проигрывателя важнее i/o priority - есть такая штука в виндах ?
не видел. и в унихе своём не видел - правда, и повода не было.
Для аудио-проигрывателя важнее i/o priority - есть такая штука в виндах ?Нет, вроде
Зато в Longhorn появиятся определенные фишки. Типа можно будет забивать определенное кол-во мощи проца и io, которое будет гарантировано доставаться потоку.
Longhorn - это фантастика.
Типа можно будет забивать определенное кол-во мощи проца и io, которое будет гарантировано доставаться потоку.Скорее всего, для этого им потребуется поддержка со стороны процессора, ибо в тех же никсах на подобный вопрос отвечают что-то вроде "не представляется возможным".
пихать музыку в /dev/dsp*.
Поэтому её приоритет совпадает с приоритетом ввода-вывода.
---
...Я работаю антинаучным аферистом...
Неверно. Это лишь третье назначение. Первое - считывание музыки в закодированном виде с винта, второе - декодирование (включая эффекты).
Зато в Longhorn появиятся определенные фишки. Типа можно будет забивать определенное кол-во мощи проца и io, которое будет гарантировано доставаться потоку.В FreeBSD 8.0 или Linux 2.10.0 и не такие фишки будут.
Тут ведь еще проблема в проигрывателем в том, что винда повышает приоритет потока с активным окошком. Получается, что если ты разбтаешь с прогой, которая сильно проц нагружает, то она еще к тому же будет иметь боле высокий приоритет чем твой плеер, который висит на заднем плане. Увеличение приоритета процесса плеера эту проблему решает.
В Longhorn у них задача обеспечить плавность анимации, чтобы не дергалась. Даже если все это будет хорошо ускорятся аппаратно, т.е. в общем все это обилие анимации не будет жрать большой процент проц мощи, нужно регулярно управлять этим процессом анимации. Получается, что нужно мало проц мощности, но часто. Понятно, что управление чрез приоритет это не совсем то в этом случае. Короче интересно, что у них получится.
Ну расскажи. Просвети, так сказать.
Увеличение приоритета процесса плеера эту проблему решает.Ставил real time. До определённого момента помогает, но не более того.
Получается, что нужно мало проц мощности, но часто.в БСД эта проблема решается строкой в ядре HZ = 1000 - частота переключения между процессами.
Нее... Боюсь, мелкософтовцы без двухъядерных процессоров не обойдутся
В рамках данной задачи это (почти) одно и то же.
---
...Я работаю антинаучным аферистом...
---
...Я работаю антинаучным аферистом...
Задача _считывания_ с винта, который может быть under heavy load, намеренно пропущена? Собсно, всё из-за неё.
в БСД эта проблема решается строкой в ядре HZ = 1000 - частота переключения между процессамиИ что это решает проблему. Двадцать потоков будут гарантированно получать по 1% проц мощи каждую секунду, если при этом остальные 80% жрут другие проги. Что-то я в этом сомневаюсь.
Ведь нужно переключать не чаще, а "разумнее". Сегодня шедулер оперирует в терминах приоритетов. А это управление в относительных терминах. А для анимации нужны определенные гарантии без относительно того, какая общая нагрузка на проц в данный момент.
С приоритетами каждый тянет одеяло на себя. Можно конечно сделать реал тайм приоритет, делать что нужно, а потом засыпать до следующего раза. Но эта схема плохо работает, когда тебе нужно 20 таких потоков.
Не только, ещё memory pressure норовит вытеснить страницы памяти, используемые игралкой.
Задача _считывания_ с винта, который может быть under heavy load, намеренно пропущена? Собсно, всё из-за неё.С этим собираются поступать аналогично.
А для анимации нужны определенные гарантии без относительно того, какая общая нагрузка на проц в данный момент.Операционная система, в которой память может быть высвоплена не может давать никаких гарантий.
> С этим собираются поступать аналогично.
И получится хуйня. Во сколько порядков различается время переключения контекста процессора и время перемешения головки винта?
Почему же? А если в ней есть механизм для фиксирования страниц в памяти?
Да, но мало вероятно, что с этим могут быть проблемы у проги, которая регулятно эту память юзает.
Надо забацать что-то наподобие
nice -n read-pri cat /there/this.mp3 | nice -n dec-pri mpg321 -s - | nice -n play-pri mpg321 -
---
...Я работаю антинаучным аферистом...
И получится хуйня. Во сколько порядков различается время переключения контекста процессора и время перемешения головки винта?Просто сегодня запросы на io иду в очередь запросов, а потом в каком-то порядке выполняются. Соответственно можно как-то помечать запросы, чтобы согласно определенным квотам отдавать предпочтение сначала помеченным запросам.
Это конечно лечит. Но вот можно ли сделать mlock не на heap, а на свой собственный text?
Вот и ощути разницу между "мало вероятно", и "гарантировать".
Но если прога выделяет дополнительную память во время работы, то тут гарантия кончается.
Нужно заранее выделить всю память, что плохо совмещается с использованием языков высокого уровня,
в которых память выделяется незаметно для разработчика.
В данном случае - взять ОСРВ, и соответствующие приложения для неё.
А почему? во всяком случае в С++ ты можешь написать свой собственный аллокатор, который берет память из залоченного участка.
Как ты узнаешь, сколько памяти надо зарезервировать?
---
...Я работаю антинаучным аферистом...
Ыыыыыыыыы.... А почему ее надо резервировать? Я видимо чего-то не догоняю.
---
...Я работаю антинаучным аферистом...
Просто сегодня запросы на io иду в очередь запросов, а потом в каком-то порядке выполняются. Соответственно можно как-то помечать запросы, чтобы согласно определенным квотам отдавать предпочтение сначала помеченным запросам.Назови мне IO систему, которая гарантирует время ответа.
Потому что, если в процессе проигрования фильма потребуется дополнительная память, неизвестно, сколько времени потребуется на её выделение.
Сначала надо назвать, какая модель жёсткого диска гарантирует время ответа (при своей исправности
потом, какой контроллер и шина ввода/вывода гарантируют время доставки данных в память.
У диска может быть куча запросов в очереди, шину могут надолго занять другие приложения.
Но домохозяйкам гарантия не нужна, иначе они не использовали бы систему,
в EULA к которой содержится полный WARRANTY DISCLAIMER.
Хотя тоже можно ввести понятие гарантированной памяти. Т.е. локать, но не давать залокать больше 80% оперативки.
Если память, к которой обрашается прога по несколько раз в сек, вытесняется в своп, то значит в системе большие траблы в наличием достаточного кол-ва оперативки. Какая тут плавная анимация.Вот видишь, не каких гарантий.
Хотя тоже можно ввести понятие гарантированной памяти. Т.е. локать, но не давать залокать больше 80% оперативки.И так разрешить каждому процессу?
Использовать для этого голову и значит заниматься низкоуровневым программированием, со всеми вытекающими последствиями.
Figure 7: A Memory Pool's Free Buffer Lists
Memory is allocated and de-allocated from a pool with deterministic, often constant, timing.
песни, совершенно не надо заниматься низкоуровневым
программированием.
Со всеми вытекающими последствиями.
---
...Я работаю антинаучным аферистом...
RTOS, а не Windows.
С приложениями, которые довольствуются memory chunks of limited variety вместо обычной кучи.
> И так разрешить каждому процессу?
Вот ты смеёшься, а примерно так и сделают.
И что характерно, у домохозяек фильмы будут играться без пауз.
А у тебя - нет, потому что ты захочешь, чтоб в фоне скажем cvsup работал,
и раздавались другие фильмы по домашней локалке со скоростью 1Гбит/c,
да ещё и компилировалось что-нибудь.
> песни, совершенно не надо заниматься низкоуровневым
> программированием.
И сколько памяти нужно для Windows Media Player?
2. Меня это волнует?
---
...Я работаю антинаучным аферистом...
Назови мне IO систему, которая гарантирует время ответа.Тут имеется в виду, что тебе будет гарантировано, что предпочтение в доступе к винту получат проги, которым важно получать регулярно данные, а не те, которым все равно на пол секунды раньше или позже.
Как мне кажется, что с такими механизмами (какой-то гарантированный доступ к процу и диску плеер сможет, используя кэши определенного размера, выдавать плавную анимацию при довольно больших нагрузках на систему. Этого сегодня нет. Никто не собирается делать эти механизми идеальными. Ничего страшного, если при запуске какой-нибудь проги плеер пропустит пару кадров.
Вот и никто не знает.
> 2. Меня это волнует?
Никого не волнует. Поэтому проигрывание иногда затыкается.
Проблемы с выделение памяти тоже можно решить так или иначе. Например, с запасом выделять память, и если запас уменьшается, то параллельно основному потоку этот запас пополнять. Идея аналогичная тредпулу.
Блин. Тут говорят о гарантированности. Это решение не обеспечивает никаких гарантий.
При определенных условиях обеспечит. А кто сказал, что целесообразно обеспечивать более сильные гарантии. Сегодня вообще никто ничего не обеспечивает. Что-то можно сделать сегодня, но с очень большими усилиями. А так хоть появится api и поддержка со стороне кернеля. Собственно я только про этом и хотел сказать, когда упомянул новые фичи Longhorna.
---
...Я работаю антинаучным аферистом...
я не заметил
FreeBSD 8.0 и Linux 2.10.0 были шуткой
"Гарантии" тут понимаются общепринятым в IT-индустрии образом: никаких гарантий.
Except for the Limited Warranty and to the maximum extent permitted by applicable law, Microsoft and its suppliers provide the Productand support services (if any) AS IS AND WITH ALL FAULTS, and hereby disclaim all other warranties and conditions, either express, implied or statutory, including, but not limited to, any (if any) implied warranties, duties or conditions of merchantability, of fitness for a particular purpose, of reliability or availability, of accuracy or completeness of responses, of results, of workmanlike effort, of lack of viruses, and of lack of negligence, all with regard to the Product, and the provision of or failure to provide support or other services, information, software, and related content through the Product or otherwise arising out of the use of the Product.
---
...Я работаю антинаучным аферистом...
летом должна быть бета 1
2. К лету навыходит столько разных альф и бет.
---
...Я работаю антинаучным аферистом...
Млин, под 800 мегов оперативы, а винда всё равно свопится
Поясню ещё раз: в БСД послушать музыку без перебоев почему-то гораздо проще, нежели в винде - уже сейчас. Да вот вопрос: что можно делать на компе под виндой, если с компа скачивают фильмы в 40 потоков? При условии, что винт в системе единственный и ему уже три года, то есть особой скоростью работы он не отличается (5400 оборотов).
Про шары - это да, проблема. Нет вообще почти никаких настроек. И bandwidthcontroller не во всем помогает. Отойдешь от компа на пару минут, так даже при bandwidthcontroler все твои проги вытеснены в своп.
Короче маза одна: купить гиг оперативки и отключить своп.
И ждать Longhorn.
тогда лучше еще гиг прикупить
Поясню ещё раз: в БСД послушать музыку без перебоев почему-то гораздо проще, нежели в винде - уже сейчас.Как ? HZ = 1000 ?
Через rtprio.
Например, мамки, рекомендуемые под лонгхорн, будут нести в своем конструктиве аппаратный mp3-плеер
И отдельный винчестер, на котором будут храниться только mp3.
И отдельный винчестер, на котором будут храниться только mp3.Не обязательно.
Достаточно иметь свою память (можно даже не флаш)
128-256 Мб вполне достаточно.
Я не знаю, почему так, но когда с меня качают в 40 потоков под БСД, у меня не возникает желания отойти от компьютера. Всё просто работает, хоть реакция GUI и помедленней.
Кстати дефолт уже 1000.
Да, мне mplayer об этом постоянно напоминает, только руки как-то не доходят
---
...Я работаю антинаучным аферистом...
Оставить комментарий
hoha32
А там есть ответ на вопрос "Как добиться бесперебойной работы аудиопроигрывателя при большой нагрузке на процессор и дисковую подсистему?"