17

特定の CPU コアをターゲットにしてノード プロセスを開始するにはどうすればよいですか?

ノード クラスターを見たことがありますが、異なるコアで 2 つの異なるプロセスを開始することに興味があります。

コマンドラインからノードを起動するときにこれを行う方法があると想定していました。

ノード myapp.js

違いがある場合、WindowsとLinuxの両方でこれを行う方法を知りたいです。

4

2 に答える 2

15

一般に、スケジューラーは何の助けも借りずにこれをうまく処理します。実際、これが問題になる状況は 1 つしか見たことがありません....

私たちは 8 コアのボックスにノード サービスを展開していましたが、負荷テスト中に最も奇妙な観察を行いました... 実際、サービスは 8 よりも 7 ワーカーの方がパフォーマンスが優れていました。後で少しデバッグしたところ、すべてのネットワーク割り込みがコア 0 によって処理されています。コア 0 が他のコアと比較して負荷の 1/2 のシェアを持つように、15 個のワーカーを使用して遊んでいました。最終的には、より単純で予測可能であり、理論上のスループットを最大 7% 向上させるために複雑さを加えるだけの価値がなかったため、最終的に 7 つのワーカーを使用することになったと思います。

そうは言っても、Linux で CPU アフィニティを設定するには:

$ taskset -pc 3089
pid 3089's current affinity list: 0,1

$ taskset -p 3089
pid 3089's current affinity mask: 3 # core 0 = 0x1, core 1 = 0x2


$ taskset -pc 1,2,3 3089 
pid 3089's current affinity list: 0,1
pid 3089's new affinity list: 1
于 2012-09-21T00:41:03.430 に答える
5

Linuxtasksetでは、特定の CPU アフィニティでノードを実行するために使用できます。Windows でコマンドを使用して同じことを行う方法については、この投稿を参照してください。start

于 2012-09-14T22:09:16.540 に答える