プロセスアフィニティが無効なプロセッサに設定されている場合、プロセスはどうなりますか?

プロセスアフィニティが無効なプロセッサに設定されている場合、プロセスはどうなりますか?

私は40個のコアと80個のスレッドを備えたハイパースレッドIvy BridgeシステムでCentos7を実行しています。

次のforループは、pid <= 80のすべてのプロセスのプロセッサの好みを示しています。

for pid in $(ps -e -o pid=); do  if ((pid<=80))  ;   then   taskset -pc $pid  ;  fi; done

すべての仮想プロセッサがイネーブルの場合、その出力は次のようになります。

pid 1's current affinity list: 0-79
pid 2's current affinity list: 0-79
pid 4's current affinity list: 0
pid 6's current affinity list: 0
pid 7's current affinity list: 0
pid 8's current affinity list: 0-79
pid 9's current affinity list: 0-79
pid 10's current affinity list: 0-79
pid 11's current affinity list: 0
pid 12's current affinity list: 1
pid 13's current affinity list: 1
pid 14's current affinity list: 1
pid 16's current affinity list: 1
pid 18's current affinity list: 2
pid 19's current affinity list: 2
pid 20's current affinity list: 2
pid 22's current affinity list: 2
pid 24's current affinity list: 3
pid 25's current affinity list: 3
pid 26's current affinity list: 3
pid 28's current affinity list: 3
pid 30's current affinity list: 4
pid 31's current affinity list: 4
pid 32's current affinity list: 4
pid 34's current affinity list: 4
pid 36's current affinity list: 5
pid 37's current affinity list: 5
pid 38's current affinity list: 5
pid 40's current affinity list: 5
pid 41's current affinity list: 6
pid 42's current affinity list: 6
pid 43's current affinity list: 6
pid 45's current affinity list: 6
pid 46's current affinity list: 7
pid 47's current affinity list: 7
pid 48's current affinity list: 7
pid 50's current affinity list: 7
pid 51's current affinity list: 8
pid 52's current affinity list: 8
pid 53's current affinity list: 8
pid 54's current affinity list: 8
pid 55's current affinity list: 8
pid 56's current affinity list: 9
pid 57's current affinity list: 9
pid 58's current affinity list: 9
pid 60's current affinity list: 9
pid 61's current affinity list: 10
pid 62's current affinity list: 10
pid 63's current affinity list: 10
pid 65's current affinity list: 10
pid 66's current affinity list: 11
pid 67's current affinity list: 11
pid 68's current affinity list: 11
pid 70's current affinity list: 11
pid 71's current affinity list: 12
pid 72's current affinity list: 12
pid 73's current affinity list: 12
pid 74's current affinity list: 12
pid 75's current affinity list: 12
pid 76's current affinity list: 13
pid 77's current affinity list: 13
pid 78's current affinity list: 13
pid 80's current affinity list: 13

何らかの理由で、Linuxは多くのシステムプロセスのプロセッサの好みを特定のプロセッサに設定することにしました。特に、PIDが66から80の間のプロセスの場合、プロセッサの好みはプロセッサ11、12又は13に設定される。

これで、プロセッサIDが10より大きいすべての仮想プロセッサを無効にし、forループを再実行します。結果は次のとおりです。

pid 1's current affinity list: 0-9
pid 2's current affinity list: 0-9
pid 4's current affinity list: 0
pid 6's current affinity list: 0
pid 7's current affinity list: 0
pid 8's current affinity list: 0-9
pid 9's current affinity list: 0-9
pid 10's current affinity list: 0-9
pid 11's current affinity list: 0
pid 12's current affinity list: 1
pid 13's current affinity list: 1
pid 14's current affinity list: 1
pid 16's current affinity list: 1
pid 18's current affinity list: 2
pid 19's current affinity list: 2
pid 20's current affinity list: 2
pid 22's current affinity list: 2
pid 24's current affinity list: 3
pid 25's current affinity list: 3
pid 26's current affinity list: 3
pid 28's current affinity list: 3
pid 30's current affinity list: 4
pid 31's current affinity list: 4
pid 32's current affinity list: 4
pid 34's current affinity list: 4
pid 36's current affinity list: 5
pid 37's current affinity list: 5
pid 38's current affinity list: 5
pid 40's current affinity list: 5
pid 41's current affinity list: 6
pid 42's current affinity list: 6
pid 43's current affinity list: 6
pid 45's current affinity list: 6
pid 46's current affinity list: 7
pid 47's current affinity list: 7
pid 48's current affinity list: 7
pid 50's current affinity list: 7
pid 51's current affinity list: 8
pid 52's current affinity list: 8
pid 53's current affinity list: 8
pid 54's current affinity list: 8
pid 55's current affinity list: 8
pid 56's current affinity list: 9
pid 57's current affinity list: 9
pid 58's current affinity list: 9
pid 60's current affinity list: 9
pid 61's current affinity list: 
pid 62's current affinity list: 
pid 63's current affinity list: 
pid 65's current affinity list: 
pid 66's current affinity list: 
pid 67's current affinity list: 
pid 68's current affinity list: 
pid 70's current affinity list: 
pid 71's current affinity list: 
pid 72's current affinity list: 
pid 73's current affinity list: 
pid 74's current affinity list: 
pid 75's current affinity list: 
pid 76's current affinity list: 
pid 77's current affinity list: 
pid 78's current affinity list: 
pid 80's current affinity list: 

pid = 1のプロセスの好みは0-79の代わりに0-9を表示します。これがまさに私が期待したものです。ただし、66から80の間のpidを持つプロセスには関連付けリストは表示されません。これは、好みのリストが0〜9または異なることを意味しますか?システムが正常に動作しているように見えるので、これらの別々のプロセスが正しく動作しているようです。

もちろん、元のアフィニティが無効になっているプロセッサに設定されている他のプロセスもたくさんあります。ほぼ1000行の出力を表示するのではなく、最初の80プロセスの結果のみを表示します。

ベストアンサー1

おすすめ記事