![]() |
Для авторов Архив рассылки |
Русский English | ||
![]() |
Путь: Panvasoft / Блог / Воспроизведение мультимедиа снижает сетевую пропускную способность Vista |
Некоторое время назад различные форумы единогласно заговорили о снижении сетевой пропускной способности на 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 с целью снизить влияние службы на сетевой траффик, при этом сохранив устойчивость к замираниям.
Категория: Windows Vista
Источник: blogs.technet.com/markrussinovich Опубликовал: Feeder, Дата: 31.8.2007, Просмотров сегодня: 1, Просмотров всего: 20772, Рейтинг: ![]() ![]() ![]() ![]() ![]() Расскажи друзьям: Еще статьи на угад: Воспроизведение мультимедиа снижает сетевую пропускную способность Vista Как управлять совместимостью приложений с Windows Vista DRM может является причиной того, что Microsoft ограничивает виртуализацию Windows Vista Я работаю с Windows Vista. Часть II: мультимедиа и интерактив - объять необъятное Ускоряем Windows Vista Установка Windows Vista с флэш-драйва USB 2.0 ReadyBoost работает, но это не чудо Ваши комментарии:
|
|
![]() |