Windows 7 Ultimate x64 で作成した UDP マルチキャスト サーバーをテストしているときに、非常に興味深いことに遭遇しました。バックグラウンドで foobar2000 を使用して音楽を再生すると、サーバーの伝送速度が大幅に改善されましたが、わずかなパケット損失も発生しました。音楽をオフにすると、すぐに伝送速度が許容レベル以下に低下しましたが、パケット損失も発生しませんでした. (サーバーと通信し、未確認のパケットを報告するクライアントアプリケーションがあります)
メディアとネットワーク アプリケーションをうまく連携させるための Vista の (およびそれ以上の) スロットリング動作については認識していますが、音楽を再生することでネットワーク パフォーマンスが向上することや、音楽をオフにすることでネットワーク パフォーマンスが大幅に低下するとはまったく予想していませんでした。
Vista 以降で音楽を再生するかどうかに関係なく、サーバー アプリケーションが一貫して動作するように、コードの観点からこれについて何ができますか? すべてのクライアントに、許容できる伝送速度を得るためにレジストリを微調整する方法を知らせる必要はなく、許容できる伝送速度を得るために単純に「音楽を再生」することも避けたいと考えています。私の意見では、アプリケーションは「うまく機能する」はずです。
ソリューションには、プロセスの優先順位、MMCSS、またはおそらく他のあいまいな Windows API 呼び出しに沿った何かが含まれていると考えています。
また、申し訳ありませんが、再現可能なテスト ケースを作成することは、かなりの作業量です。スロットリング動作は、物理 NIC のドライバーがアクティブに動作しており、ループバック インターフェイスを使用して再現できない場合にのみ発生します。クライアント実装、サーバー実装、およびテスト用の物理ネットワーク ハードウェアが必要です。