При тестировании сервера многоадресной передачи UDP, который я написал на Windows 7 Ultimate x64, мне пришло в голову самое любопытное. Воспроизведение музыки с foobar2000 в фоновом режиме значительно улучшилось скорость передачи сервера еще и понесла небольшую потерю пакетов. Выключение музыки сразу же снизило скорость передачи до приемлемых уровней, но также вызвало потерю пакетов. (У меня есть клиентское приложение, которое разговаривает с сервером и сообщает о неподтвержденных пакетах)Рекомендации по высокопроизводительным сетевым приложениям
Я знаю о том, что поведение в режиме «вверх» (вверх и вниз) для работы мультимедиа и сетевых приложений хорошо сочетается, но я, конечно же, не ожидал, что игра музыка улучшит производительность сети, а также значительно снизит производительность сети.
Что я могу сделать с точки зрения кода в моем приложении-сервере, чтобы он выполнял последовательно, воспроизводить музыку или нет на Vista и выше? Я бы, конечно, хотел бы не сообщать всем моим клиентам о том, как настроить свой реестр, чтобы получить приемлемые скорости передачи, а также хотел бы, чтобы они просто не «играли музыку», чтобы получить приемлемые скорости передачи. На мой взгляд, приложение должно «работать».
Я думаю, что решение включает в себя что-то вроде приоритетов процесса, MMCSS или, возможно, некоторых других неясных вызовов Windows API, чтобы заставить его делать The Right Thing (TM) здесь.
Кроме того, извините, но создание воспроизводимого тестового примера - это нетривиальное количество работ. Дросселирование происходит только тогда, когда драйвер для физического сетевого адаптера активно выполняет работу и не может быть воспроизведен с использованием интерфейса обратной петли. Для тестирования нужно было бы реализовать клиентскую реализацию, реализацию сервера и физическое сетевое оборудование.
Когда вы говорите «играет музыку», вы имеете в виду, что он играет музыку вашего HD и использует звуковую карту? Или это потоковая передача через ту же сетевую карту? – Toad
@reinier: Да, foobar2000 медленно загружает данные с HD и потокового аудио на мой внешний аудиоинтерфейс через USB 2.0. –