質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

Q&A

解決済

1回答

2170閲覧

ソフトウェア割り込みの偏り

maikeru

総合スコア68

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

2グッド

1クリップ

投稿2019/10/27 12:13

QiitaのLinux ネットワークパフォーマンスの機能強化という記事に

何も設定していない場合はネットワークの割り込みは特定のCPUで行われるため、ネットワークの割り込みに関連づいたCPUの%siが高くなります

と記述されていました。手動で設定せずとも自動でMulti-QueueなNICな判別して割り込みを複数のCPUに分散させるものだと思っていたのですが現在も手動でRSSの設定を行う必要があるのでしょうか。
手元にLinuxマシンがないためどなたか教えていただけないでしょうか。
また、WindowsでもこのようなCPUごとのネットワークの割り込みの偏りはあるのでしょうか。

kyoya0819, matobaa👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gentaro

2019/10/27 12:54

元記事に質問コメントを投げないのは何故なんだろう。
guest

回答1

0

ベストアンサー

説明がちょっとざっくりしすぎてていたので、改めて説明を試みます。

Linuxの場合は(そしておそらくWindowsであろうとも)一部のNICのQueの割り込みは偏ります。
けれどもそれは、ドライバの作り込みやデフォルト設定値がそうなっているからです。

でもこの偏りは意図的なもので、一定の価値があります。

EtherフレームをPCが受信する場合の動作について想像してほしいのですが、
・L2通信でNICに到着する
・(ある種のNICによるネットワーク処理オフロードが行われる)
・DMA転送で、メインメモリにNICが書き込む
・OS/CPUが、各プロセスに書き込まれたメモリ領域を引き渡す

この辺りは、後藤さんの記事(たとえばこれ)を読んで想像してもらうとわかるのですが、モダンなCPUではメモリは、直接CPUに接続されているため(Non Unified Memory Access : NUMA)、このNUMAのCPU Coreのノードを超えるメモリアクセスは、CPUインターコネクトをまたいだアクセスが発生し、メモリアクセスレイテンシが増加し、CPU間及びCPU内部バスの帯域を圧迫することになります。

理想的には、受け取りたい仮想マシン/プロセスが走行しているCPU CoreにNICがDMAで書き込んでくれることですが、マルチキューのすべてのEtherフレームが、なんの考慮もなしにバラバラのCPUコアに割り振られると、仮想マシン/プロセスがネットワークの通信を拾うのに、CPU間のデータ転送が頻繁に発生してしまいます。

元来、割り込み、というのは、CPUの処理を一旦中断するため、多量な割り込み処理は本来やりたかったタスクに処理能力が割けない、という事態を巻き起こしかねません。
例えば少しでもコンピューティングパフォーマンスがほしい場合、ハイパフォーマンス・コンピューティングでは、ネットワーク転送量をできるだけ絞ったような処理になるようにプログラムされますから、割り込みが偏っていたほうが、他のCPUは余計な割り込み処理に振り回されることがなくて、そちらのほうが適しているということも言えるわけです。

NIC側からも、ドライバ側からも、ハードウェアに取り付けられて起動されるまで、どんなNUMAノード構成なのか、知る由もありませんから、結果的に、可変って事になってる場合が多いようです。

投稿2019/10/29 00:39

編集2019/10/30 00:46
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問