nginxのCPUアフィニティ調整

意味

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]#

おすすめ

転載: www.cnblogs.com/thatsit/p/nginx-cpu-qin-he-xing-diao-zheng.html
おすすめ