Опрос
Вы участвуете в программе Windows Insider?
Популярные новости
Обсуждаемые новости

Воспроизведение мультимедиа снижает сетевую пропускную способность Vista

Напечатать страницу
31.08.2007 11:26 | deeper2k

Некоторое время назад различные форумы единогласно заговорили о снижении сетевой пропускной способности на Vista-компьютерах при воспроизведении мультимедиа-контента. Масло в огонь подбавили и Slashdot и Эдриан Кингсли-Хьюджс (Adrian Kingsley-Hughes) с Zdnet.

Многие из пользователей, отрапортовавших о существовании проблемы, четко подметили, что снижение сетевой пропускной способности при воспроизведении мультимедиа напрямую связано с механизмами, используемыми Multimedia Class Scheduler Service (MMCSS) - абсолютно новым для Windows компонентом, который подробно освещен в серии публикаций в TechNet Magazine о изменениях в ядре Windows Vista. Воспроизведение мультимедиа требует постоянного уровня потока, а при его отсутствии воспроизведение может проходить с рывками и замираниями. Служба MMCSS запускает в рамках процесса Svchost.exe, где автоматически производится распределение приоритетов для воспроизведения аудио/видео с целью предотвратить перераспределение ресурсов CPU на другие процессы:



Когда приложение начинает воспроизведение, различные мультимедийные API, используемые данным приложением, обращатся к службе MMCSS с целью повысить приоритетность потока до уровня реального времени, в который входят приоритеты с индексами от 16 до 31, и это повторяется каждые 8мсек в зависимости от того, сколько ресурсов требуется потоку. Поскольку другие потоки работают в динамическом диапазоне приоритетов с индексами ниже 15, любое – даже требовательное к ресурсам процессора – приложение никоим образом не влияет на воспроизведение.

Можно видеть скачок текущего индекса приоритета при воспроизведении аудио или видеоклипа в Windows Media Player (WMP), если запустить Reliability and Performance Monitor (Start->Run->Perfmon), выбрать Performance Monitor и добавить значение Priority Current для всех потоков Wmplayer в объекте Thread. Установите масштаб шкалы на 31 (максимальное значение приоритета в Windows) и вы не сможете не заметить поток, показанный на нижеприведенном скриншоте с приоритетом 21:



В дополнение к другим потокам, воспроизведение мультимедиа может страдать от сетевой активности. Когда система принимает сетевой пакет, происходит обращение к процессору, а драйвер устройства, которое принимает пакет, производит прерывание путем запуска Interrupt Service Routine (ISR). Прерывания, выполняемые другими устройствами, блокируются запущенной процедурой ISR, которая выполняет довольно длительную передачу данных на или с устройства через обращение Deferred Procedure Call (DPC), запускаемое с активированным прерыванием. Когда выполняется DPC с активированным прерыванием, оно получает преимущество над другими потоками независимо от приоритета, что может стать помехой потокам, воспроизводящим мультимедиа.

DPC-обработка полученных сетевых пакетов - это наиболее дорогая в смысле ресурсов процессора процедура, поскольку подразумевает передачу пакетов TCP/IP-драйверу, что на деле выливается в достаточно продолжительные вычисления. TCP/IP-драйвер выверяет каждый пакет, определяет пакетный протокол, обновляет состояние соединения, находит принимающее приложение и копирует полученные данные в буфер приложения. Нижеприведенный скриншот Process Explorer иллюстрирует, сколь существенно возрастает использование ресурсов CPU для DPC при копировании большого файла с другого компьютера:



Тесты MMCSS в ходе разработки Vista показали, что даже при активированном распределении приоритетов большие объемы сетевого траффика могут становится причиной несоответствия потоков воспроизведения требованиям, что может вызвать замирания в воспроизведении. Использованные в MMCSS механизмы, препятствующие прерыванию воспроизведения, были доработаны с целью предотвращения прерываний сетевой активностью. Была добавлена команда, которая посылается NDIS-драйверу, который передает пакеты для обработки TCP/IP-драйвером в количестве, равном 10 пакетам в миллисекунду (10000 пакетов в секунду).

Поскольку стандартный размер Ethernet-фрейма равен 1500 байтам, предел в 10000 пакетов в секунду эквивалентен пропускной способности в 15МБ/с. 100Мб-ные сети имеют пропускную способность в 12МБ/с, поэтому если вы работаете в сети 100Мбит, то вы не заметите падения пропускной способности. Однако, если вы включены в 1Гб-ную сеть, и оба - отправитель и получатель пакетов - используют 1Гб-ные адаптеры, то вы столкнетесь с 15% снижением пропускной способности сети.

Более того, в коде NDIS допущена злополучная ошибка, усугубляющая проблему при использовании нескольких NIC-карт. Если, к примеру, в вашей системе присутствуют и проводной и беспроводной адаптеры, NDIS сможет обрабатывать не более 8000 пакетов в секунду, а три адаптера сократят эту цифру до 6000 пакетов в секунду. 6000 пакетов в секунду эквиваленты пропускной способности в 9МБ/с, поэтому при такой схеме падение производительности будет заметно и в 100Мб-ной сети.

Обратите внимание на иллюстрацию падения сетевой производительности на ноутбуке с тремя сетевыми адаптерами, которое было вызвано путем копирования объемного файла с другого компьютера сети с последующим запуском WMP и воспроизведением аудиотрека. Нижеприведенный скриншот наглядно показывает, как используемые 20% пропускной способности сети падают до отметки в 6% после начала воспроизведения музыкального трэка:



Можно проконтролировать число пакетов, обработанных NDIS, путем добавления счетчика "количество пакетов, полученных за одну секунду/packets recieved per second" в объекте Network в Performance Monitor. Ниже можно видеть существенное изменение числа принятых пакетов после запуска эксперимента. Количество пакетов, обработанных NDIS, не достигает теоретического максимума в 6000.



Несмотря на подобный уровень прерывания, Интернет-трафик - даже при высокоскоростном соединении - никоим образом не пострадает. Это все благодаря многочисленности промежуточных соединений между вашей системой и иными компьютерами сети, что сокращает путь пакета и, как следствие, сокращает скорость, с которой система передает информацию.

Жестко запрограммированный лимит был непредусмотрительным шагом с нашей стороны с надеждой на современные компьютеры с быстрыми процессорами с несколькими ядрами и гигабитными сетевыми адаптерами. Но сегодня в дополнение к работам по устранению существенного падения пропускной способности на компьютерах с несколькими адаптерами, команда сетевых разработчиков Microsoft активно сотрудничает с командой MMCSS с целью снизить влияние службы на сетевой траффик, при этом сохранив устойчивость к замираниям.


Источник: http://blogs.technet.com/markrussinovich
Перевод: deeper2k

Комментарии

Не в сети

Насколько я понял, не только сеть тормозит во время проигрывания мультимедиа, но и мультимедиа тормозит при работе сети. Причём даже если два соседних по локалки компьютера общаются только между собой, пакеты всё равно нужно обрабатывать.
Страшно представить, что будет, если смотреть видео по сети. Жёсткий лимит на количество пакетов - вообще верх невежества со стороны МС. И они ещё называют это безобразие, когда при просмотре видео сеть съедает 50% CPU, Операционной системой?
Я не видел пока ни одной версии Windows, которая бы хорошо умела работать с сетью. Куда там до IPv6!
Думаю не стоит говорить, что в Линуксе таких проблем не может быть by designe.

31.08.07 15:03
0
Не в сети

Жесть, а я то думал, что у m$ по всем основным направлениям работают первоклассные разработчики, бугаго.
Просто жесть.

31.08.07 15:28
0
Не в сети

Думаю не стоит говорить, что в Линуксе таких проблем не может быть by designe.


Верно. Загрузка с divx(560 x 304) - 23%, HDTV(1280 x 720) - 60%. Но это жрет сам mplayer, в котором я смотрю, а не сеть.
Насколько я понимаю, это, как и старый баг с тормазами при копировании "плата" за DRM?

31.08.07 18:29
0
mmc +31
Не в сети

Я давно заметил что и без сети в Висте при использовании Медиацентра и плеера11 процессор сильно загружается.

31.08.07 22:36
0
MOrz -1
Не в сети

Вот помему у меня всё так тормозит...

31.08.07 23:31
0
Не в сети

сейчас сложилась пародаксальная ситуация: на подавляющем большенстве рабочих станций стоит заведомо некачественная, черезмерно требовательная к ресурсам и необосновано дорогая операционная система. такое положение дел явно не естественно и долго так продолжаться не может.
я думаю, в последующие годы мы будем наблюдать плавное выравнивание соотношения ОС на рынке. доля МС будет падать, а альтернативных систем - расти...

31.08.07 23:47
0
Не в сети

Теория Вендекапца утверждает, что стоит доли Windows упасть до критической отметки в 50%-70%, как это падение будет уже не остановить.
Причины доминирования Windows все мы помним, и среди них главное место занимают вовсе не достоинства этой ОС, а то, что МС вовремя "подсуетилась". Время исправит эту ошибку.

01.09.07 06:55
0
Не в сети

Сейчас они перенесли все разработки Венды в Индию, так как там дешевле. Поэтому и качество так упало. Реально Виста более глючная, чем win 95.

01.09.07 09:35
0
Не в сети

даа. пока ЛУЧШЕЙ осью от мелкософта следует считать 2003 сервер!

01.09.07 13:07
0
Не в сети

У меня воспроизведение музыки в висте может заткнуться просто во время выхода монитора из состояния простоя!!! Вот который день принимаю в голове судьбоносное решение о снесении этой дряти со своего компа. Thevista.ru только укрепляет меня в нём =) Спасибо вам! ;)))

01.09.07 13:54
0
Не в сети

эээ ...
че-то не понимаю ваших криков.

Черно по белому написано - что когда ты смотришь фильм, а ты в сети, то ОС предпринимает все попытки, что бы ты смотрел быз тормозов.
Единственная проблема при наличае нескольких сетевых адапторов.

Мудахлебы! Лишь бы поорать! -))


p.s. Linux'йды - У ВАС КОМПЛЕКЕКС НЕПОЛНОЦЕННОСТИ?!
Вы что на каждом углу кричите, что Windows говно?!

Попробуйте поорите так про вашего соседа Колю, который покрупнее, зато мозгов поменьше, думаю вам объяснят правила хороших манер...

p.p.s
p.s. - был написан, т.к. мне надоели стоны этих везде сующих свой нос болаболов. котороые только и орут - при тм по большей части фейковый бред.

01.09.07 18:20
0
Не в сети

Единственная проблема при наличае нескольких сетевых адапторов.


лол, у меня как раз два сетевых адаптера. Что делать тем, у кого езернет+вайфай? Т.е., виста для неудачнеков, у которых есть только одно сетевое устройство?

01.09.07 19:50
0
Не в сети

Ну патч не за горами + можешь юзать Wi-Fi хаб -))

02.09.07 00:12
0
Не в сети

Лично меня эта фича устраивает.
Зачастую сижу в несеольких p2p сетях и просматриваю видео файлы.
((-

02.09.07 00:14
0
Не в сети

Deja_Vu похоже страдает каким-то психическим расстройством. Его мнения на тему часто противоположно меняются.

02.09.07 10:32
0
Не в сети

ой вру перепутал с DJ Bobo

02.09.07 10:33
0
Не в сети

Я давно заметил что и без сети в Висте при использовании Медиацентра и плеера11 процессор сильно загружается.


Хм, а что? Кто-то пользуется WMP11? Это даже поделием назвать нельзя. По-моему, авторов "фичи" со сбрасыванием плейлистов при выходе из wmp как минимум имеют серьезные проблемы с психикой.

Вы что на каждом углу кричите, что Windows говно?!


Да вы посмотрите на последние новости. Нет, я ничего не имею против xp - она у меня у стоит для игр. А вот виста - это такое подобие WinME. Часть вторая, так сказать. Понапихали, того что уже было у конкурентов, но довести до ума не успели. А висту еще точить и точить.

02.09.07 11:32
0
Не в сети

Черно по белому написано - что когда ты смотришь фильм, а ты в сети, то ОС предпринимает все попытки,


Дай угадаю - попытки завершаются провалом? Т.е. больше калечит, чем лечит?

02.09.07 11:33
0
Не в сети

Deja_Vu]Черно по белому написано - что когда ты смотришь фильм, а ты в сети, то ОС предпринимает все попытки, что бы ты смотрел быз тормозов.
Единственная проблема при наличае нескольких сетевых адапторов.


Кажется, кто-то читает по-диагонали, и пытается ещё осуждать других:

В дополнение к другим потокам, воспроизведение мультимедиа может страдать от сетевой активности. Когда система принимает сетевой пакет, происходит обращение к процессору, а драйвер устройства, которое принимает пакет, производит прерывание путем запуска Interrupt Service Routine (ISR). Прерывания, выполняемые другими устройствами, блокируются запущенной процедурой ISR, которая выполняет довольно длительную передачу данных на или с устройства через обращение Deferred Procedure Call (DPC), запускаемое с активированным прерыванием. Когда выполняется DPC с активированным прерыванием, оно получает преимущество над другими потоками независимо от приоритета, что может стать помехой потокам, воспроизводящим мультимедиа.{/quote писал:

02.09.07 11:47
0
Не в сети

Deja_Vu писал:p.s. Linux'йды - У ВАС КОМПЛЕКЕКС НЕПОЛНОЦЕННОСТИ?!
Вы что на каждом углу кричите, что Windows говно?!

Ты бы разобрался что ли сначала в предмете разговора... Почитай для начала хотя бы вот это: http://blog.rlove.org/2007/08/those-dang-dpcs-clogging-mmcss.html

Like Vista, Linux separates interrupt handling into two distinct components, a top half (the ISR) and a bottom half. The bottom half is a mechanism for deferring work away from the interrupt handler (see Chapter 7 in Linux Kernel Development). Vista's DPC mechanism is a bottom half implementation that sounds similar to Linux's workqueues, which allow the deferment of work from one context (typically interrupt) to another. As with the DPC mechanism, workqueues run in process context, with interrupts enabled, generally (although not necessarily) with priority over other tasks on the system. Workqueues, as with DPCs, are well-suited for deferring the processing of networking work from the ISR to a later point, when interrupts are enabled.

Unlike DPCs, however, the Linux parallel does not consume nearly half of your CPU. In fact, in repeated tests involving both "copying a large file from another system" and a simple unabated ping flood, I was unable to consume any tangible amount of processor. That is, Linux can achieve high utilization of a GigE network interface with only minimal CPU usage.

Комментарии, думаю, излишни...

02.09.07 11:49
0
Не в сети

во-первых, фича выключается.

во-вторых. у меня два адаптера, проирываю и музыку и видео, сижу активно в p2p. НИКОГДА не встречался с этой проблемой.

думаю МС отмазывается. проблема где-то глубже.

например, проблема с Internet Connection Sharing, на самом деле, лежит глубоко в косяках реализации Winsock в Vista.

03.09.07 00:30
0
Не в сети

Откуда такие цифры?? У меня при ХД 1920 загрузка на оба ядра не превышает 20%!! На помойку старые компы!

08.09.07 14:25
0
Для возможности комментировать войдите в 1 клик через

По теме

Акции MSFT
420.55 0.00
Акции торгуются с 17:30 до 00:00 по Москве
Все права принадлежат © ms insider @thevista.ru, 2022
Сайт является источником уникальной информации о семействе операционных систем Windows и других продуктах Microsoft. Перепечатка материалов возможна только с разрешения редакции.
Работает на WMS 2.34 (Страница создана за 0.056 секунд (Общее время SQL: 0.034 секунд - SQL запросов: 95 - Среднее время SQL: 0.00036 секунд))
Top.Mail.Ru