特定の CPU コアをターゲットにしてノード プロセスを開始するにはどうすればよいですか?
ノード クラスターを見たことがありますが、異なるコアで 2 つの異なるプロセスを開始することに興味があります。
コマンドラインからノードを起動するときにこれを行う方法があると想定していました。
ノード myapp.js
違いがある場合、WindowsとLinuxの両方でこれを行う方法を知りたいです。
特定の CPU コアをターゲットにしてノード プロセスを開始するにはどうすればよいですか?
ノード クラスターを見たことがありますが、異なるコアで 2 つの異なるプロセスを開始することに興味があります。
コマンドラインからノードを起動するときにこれを行う方法があると想定していました。
ノード myapp.js
違いがある場合、WindowsとLinuxの両方でこれを行う方法を知りたいです。
一般に、スケジューラーは何の助けも借りずにこれをうまく処理します。実際、これが問題になる状況は 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