Для авторов Архив рассылки |
Русский 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, Просмотров всего: 20152, Рейтинг: Расскажи друзьям: Еще статьи на угад: Гид по тонкой настройке Windows Vista Компьютерная индустрия разочаровалась в Windows Vista Воспроизведение мультимедиа снижает сетевую пропускную способность Vista Windows Vista FAQ Ещё один прогноз на популярность Windows Vista Нелегальный KMS сервер активирует Windows Vista всем желающим Сколько памяти требуется Windows Vista на самом деле? Ваши комментарии:
|
|
Ссылка для скачивания на веб странице. Весь проект компилируется, все библиотеки включены. Всё бесплатно.
http://vbuilder.oflameron.ru/page0003.htm
Photo Web Cam - интересное приложение, делающее фотографии по расписанию и загружающее их на веб сервер. Я использовал бесплатный хостинг wallst.ru Приложение использовалось для наблюдения за дачей.
Приложение имеет много настроек - для подключения к серверу и для фотосъёмки. При этом настройки фотокамеры в приложении не проихводятся. Используются те, что заданы в настройках телефона. Это значительно упрощает код.
http://oflameron.ru/valleryshmelevE.jpg