トップ回答者
ndis.sysのCore割り当て

質問
-
サーバーから画像をネットワークで受信して、クライアント側で画像処理して動画表示するシステムを作成しています。
サーバーからは33msec(1/30)毎に画像が出力され、クライアント側でこのデータを受信して、画像処理しています。画像処理はパイプライン構造をしており、マルチスレッド動作しております。6コアのCPU搭載のCPUを使用しているのですが、画像データを受信するDLLの挙動をXperfなどで観測すると、画像データを受信する仕事をしている時だけ、ndis.sysが常にCore0に割り当てられて動作しています。
画像通信は負荷の軽い仕事で、アイドル状態の場合が多いのですが、このときは、コア0以外にも割り当てられているのですが、受信動作をするときだけ、常にcore0でndis.sysが動作しています。これはndis.sysの仕様なのでしょうか?複数のネットワークカードで試してみましたが、みな同じ症状を示します。
OSはWindows7 Proです。
ご存知の方がいましたら、是非、教えてください。
- 移動 星 睦美 2013年9月18日 5:13 Visual C++
回答
すべての返信
-
フォーラム オペレーターの星 睦美です。
yoshimartina さん、投稿ありがとうございます。Windows7 とネットワーク ドライバ 関連の情報が集まりやすいのではないかと思いますので、私のほうでWindows クライアント開発 - 全般 フォーラム に質問を移動させていただきますね。
※フォーラムで役立つ回答がありましたら、投稿者からの[回答としてマーク]をお願いします。
フォーラム オペレーター 星 睦美 - MSDN Community Support
- 編集済み 星 睦美 2013年9月18日 5:33 修正
-
今回は私のほうでも何か関連した情報がないか探してみました。
以下のTechNet ブログのReceive Side Scaling (RSS)の説明が参考になるのではないかと思いますので、ご紹介します。(参考情報)
・予期せぬ挙動が!? 新機能 Scalable Networking Pack をご存知ですか?:yoshimartina さんが質問されているように、Windows Server 2008 以降の OS (Windows Vista、Windows 7、Windows Server 2008 R2、Windows 8、Windows Server 2012) では、ネットワーク アダプターに関しては、複数のプロセッサに処理を分散する RSS (Receive-side Scaling) 機能があります。
RSS を有効にして利用することにより、ネットワーク処理が複数のプロセッサに分散されるようになりますので、yoshimartina さんの環境でRSS 機能が有効化されているかどうか確認してみてはいかがでしょうか?※RSS が有効となるには、NIC が NDIS 6 のインターフェースをサポートしていなければなりません。かつ、ハードウェアが、複数プロセッサでの受信処理をサポートしていること (MSI-X 機能) が必要です。
また、NDIS がオフロード機能全体の有効/無効を決定するタスクオフロード (TaskOffload) が有効でなければなりません。以下のコマンドにて、タスクオフロードが有効になっていることを確認できます。
netsh interface ipv4 show global
netsh interface ipv6 show globalタスクオフロードを有効にする方法。
netsh interface ipv4 set global taskoffload=enabled
netsh interface ipv6 set global taskoffload=enabledRSS が有効になっているかを確認する方法。
netsh interface tcp show globalRSS を有効にする方法。
netsh interface tcp set global rss=enabled
こちらの情報がお役にたちましたら幸いです。
フォーラム オペレーター 星 睦美 - MSDN Community Support
-
yoshimartina さん、返信ありがとうございます。
さきにお馬鹿 さんからの返信でWindows 7 と Windows Server 2008 R2 でのプロセッサの電源管理 をご紹介いただきました。その中のコア保留(core parking) に関する説明が参考になるのではないかと思います。
コア保留に関しては以下のようなブログもありますので、参考までにご紹介しておきます。
・Windows 7 で Core Parking を利用する方法:
Windows 7 のOS 機能に関して疑問な点やさらに情報が必要な場合には、開発者向けのMSDN フォーラムよりも TechNet -Windows 7 全般 フォーラム で関連した知識をもつユーザーと情報交換することができると思います。
よろしければご活用ください。
フォーラム オペレーター 星 睦美 - MSDN Community Support
- 編集済み 星 睦美 2013年9月27日 5:19 改行