11

Windows 7 Ultimate x64 で作成した UDP マルチキャスト サーバーをテストしているときに、非常に興味深いことに遭遇しました。バックグラウンドで foobar2000 を使用して音楽を再生すると、サーバーの伝送速度が大幅に改善されましたが、わずかなパケット損失も発生しました。音楽をオフにすると、すぐに伝送速度が許容レベル以下に低下しましたが、パケット損失も発生しませんでした. (サーバーと通信し、未確認のパケットを報告するクライアントアプリケーションがあります)

メディアとネットワーク アプリケーションをうまく連携させるための Vista の (およびそれ以上の) スロットリング動作については認識していますが、音楽を再生することでネットワーク パフォーマンスが向上することや、音楽をオフにすることでネットワーク パフォーマンスが大幅に低下するとはまったく予想していませんでした。

Vista 以降で音楽を再生するかどうかに関係なく、サーバー アプリケーションが一貫して動作するように、コードの観点からこれについて何ができますか? すべてのクライアントに、許容できる伝送速度を得るためにレジストリを微調整する方法を知らせる必要はなく、許容できる伝送速度を得るために単純に「音楽を再生」することも避けたいと考えています。私の意見では、アプリケーションは「うまく機能する」はずです。

ソリューションには、プロセスの優先順位、MMCSS、またはおそらく他のあいまいな Windows API 呼び出しに沿った何かが含まれていると考えています。

また、申し訳ありませんが、再現可能なテスト ケースを作成することは、かなりの作業量です。スロットリング動作は、物理 NIC のドライバーがアクティブに動作しており、ループバック インターフェイスを使用して再現できない場合にのみ発生します。クライアント実装、サーバー実装、およびテスト用の物理ネットワーク ハードウェアが必要です。

4

4 に答える 4

4

あなたが観察したのは、メディアプレーヤーがマシンのクロック解像度を1ミリ秒に設定したことの副作用です。

プレイ中のみ発生

副作用は、アプリのタイムスライスが小さくなり、これによりアプリが改善されることです。おそらく、アプリから多くの CPU が盗まれ、タイムスライスが長くなるためです。

テストするには、アプリ内でタイマーの分解能を 1 ミリ秒に設定し、メディアを再生せずにパフォーマンスを比較します。

clocres 設定がなく、メディアが再生されている場合と同じである必要があります。

于 2010-06-23T11:52:54.940 に答える
2

ネットワークプロトコル関連のコードを書いてから何年も経ちますが、推測してみます。

これはスループットとレイテンシーの問題だと思います。音楽を再生すると、I / Oの競合が発生し、パケットの送信に遅延が発生します。ただし、遅延が増えると、パケットがキューに入れられ、バッチ処理されてスループットが向上する可能性があります。

コードでこれに対処するには、自分でパケットをバッチで送信してみてください。データの準備ができたら、送信のために各パケットをシステムに送信していると想定しています。複数のパケットをグループ化し、同時にシステムに送信します。2つまたは3つのパケットのグループでさえ、特に各システムコールの間に独自の小さな遅延を導入する場合は、劇的な違いを生む可能性があります。

Googleでのクイック検索では、直接関連するリンクは見つかりませんでした。ただし、この概念は、Linuxのネットワークチューニングに関するこの説明、またはスループットを向上させるためのバッチ処理などの手法について説明しているこのFAQで確認できます。

于 2009-11-08T13:59:49.357 に答える
0

これは、プリミティブ アルゴリズムに基づいてスループットを管理する TSP/IP のように思えます。ここにあるホワイト ペーパーでは、より多くの背景情報を提供する必要があります。 http://www.asperasoft.com/?gclid=CICSzMqD8Z0CFShGagod_ltSMQ 彼らの製品は非常にうまく機能する UDP プロトコルです。

于 2009-11-04T09:29:38.780 に答える
0

Foobar には、さまざまな人が作成した多くのプラグインがあります。これらが問題の原因である可能性があります。本当の理由に近づくことを提案します。プラグインが無効になるたびに、プラグインを 1 つずつオフにしてテストを実行してみてください。

アイデアが役立つことを願っています。

于 2009-11-04T08:48:39.423 に答える