意味
nginxのは、デフォルトでオンになっていませんマルチコアCPUを活用し、我々はできるworker_processes
複数のワーカー命令を開始したが、労働者は最終的にどのCPUコア層スケジューリングシステム上で実行します。我々は増やすことができますworker_cpu_affinity
コマンドを実行している核ワーカーCPUに結合行われます、マルチコアCPUの性能のCPUをフルに活用するためです。CPUは、最も重要な資源、より多くのCPUコア、より良い性能を計算し、タスクれ、作業員が頻繁にCPUと一部のCPUを持って来るために予定されているので、キャッシュミスが特定のCPUにバインドされたnginxのワーカーによって回避することができます不均一な荷重核問題。
コンフィギュレーション
公式文書:http://nginx.org/en/docs/ngx_core_module.html#worker_cpu_affinity
1つのコンフィギュレーションを手動で結合します
手動でCPUのコア構成にバインドするために記述する必要がある、CPUは、多くのコアは、いくつかありますどのように、上のカーネルの1人の代表、0はコアがシャットダウンさを表します
例えば:CPU0〜CPU3にバインドされた各、4労働者を起動します
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;
または
CPU0 / CPU2にバインドされた作業員1; 2のワーカーを起動し、作業者2がCPU1 / CPU3にバインドされています
worker_processes 2;
worker_cpu_affinity 0101 1010;
自動的にバインド2の構成(推奨方法)
例えば:ワーカーの数に適応的に起動し、自動的にコアの同数開始およびCPUワーカーの数に対応したCPUコアに結合します。
特別な値の自動(1.9.10)が使用可能なCPUに自動的にワーカープロセスを結合できます
worker_processes auto;
worker_cpu_affinity auto;
また、nginxのワーカーのみ、特定のCPUコアに結合し、以下の構成によってCPUリソースの使用を制限することができます。
worker_cpu_affinity auto 01010101;
調整前
統計的プロセスのnginxのCPUコアが実行されている、あなたがコアの一部の上に複数のnginxのワーカープロセスがある見ることができる;およびCPUコアとスレッドの数との関係が変化している、ここでは、nginxのワーカープロセスは、コアCPUの間である示し動的スケジューリングであるため、CPUのキャッシュミスの確率は、このシナリオで発生する多くの(動的なスケジューリングと比較して)高いであろう。
# 第一次检查
[root@thatsit conf]# ps -eo pid,ni,pri,pcpu,psr,comm|grep nginx|awk '{++s[$(NF-1)]}END{for (i in s)print "core-id",i,"\t",s[i]}'|sort -nr -k 3
core-id 20 6
core-id 22 5
core-id 5 4
core-id 3 4
core-id 0 4
core-id 25 3
core-id 2 3
core-id 7 2
core-id 4 2
core-id 27 2
core-id 24 2
core-id 6 1
core-id 26 1
core-id 11 1
core-id 1 1
[root@thatsit nginx]#
# 第二次检查
[root@thatsit conf]# ps -eo pid,ni,pri,pcpu,psr,comm|grep nginx|awk '{++s[$(NF-1)]}END{for (i in s)print "core-id",i,"\t",s[i]}'|sort -nr -k 3
core-id 4 6
core-id 0 6
core-id 1 5
core-id 7 4
core-id 3 4
core-id 6 3
core-id 5 2
core-id 27 2
core-id 24 2
core-id 23 2
core-id 26 1
core-id 25 1
core-id 21 1
core-id 20 1
core-id 11 1
[root@thatsit conf]#
PS:2回の確認作業時間は秒単位で、非常に短い間隔です。
nginxののCPUアフィニティを設定します
自動車労働者の数は(nginxの前にあるworker_processes auto;
)が、構成されていませんworker_cpu_affinity
。この設定を追加します。
> worker_cpu_affinity auto;
調整後の確認
すべてのnginxの労働者は、各論理コアに結合する調節した後、労働者は、単一のコア上で実行されます。次の統計core-id 11
一つはnginxののマスター・プロセスである:nginxのプロセスには、2つの理由があります。
[root@thatsit conf]# ps -eo pid,ni,pri,pcpu,psr,comm|grep nginx|awk '{++s[$(NF-1)]}END{for (i in s)print "core-id",i,"\t",s[i]}'|sort -nr -k 3
core-id 11 2
core-id 9 1
core-id 8 1
core-id 7 1
core-id 6 1
core-id 5 1
core-id 4 1
core-id 39 1
core-id 38 1
core-id 37 1
core-id 36 1
core-id 35 1
core-id 34 1
core-id 33 1
core-id 32 1
core-id 31 1
core-id 3 1
core-id 30 1
core-id 29 1
core-id 28 1
core-id 27 1
core-id 26 1
core-id 25 1
core-id 24 1
core-id 23 1
core-id 22 1
core-id 21 1
core-id 2 1
core-id 20 1
core-id 19 1
core-id 18 1
core-id 17 1
core-id 16 1
core-id 15 1
core-id 14 1
core-id 13 1
core-id 12 1
core-id 1 1
core-id 10 1
core-id 0 1
[root@thatsit conf]#