web-dev-qa-db-ja.com

タスクセットのコア番号の質問

ハイパースレッディングが有効になっているクアッドコアCPUがあります。つまり、8つの論理コアがあります。アプリケーションを4つのコアのみを使用するように制限し、この4つのコアを異なる物理コアにする必要があります。どのタスクセットオプション(コア番号)を使用する必要がありますか? :

  • taskset -c 0,1,2,3コマンドまたは
  • タスクセット-c0,2,4,6コマンド

ありがとうございました。

7
Artem Bergkamp

/proc/cpuinfoを見ると、どのコアがどのプロセッサ上にあるかを確認できます。たとえば、デュアルコアCPUを搭載したマシンでは次のようになります。

processor   : 0
(snip)
core id     : 0
cpu cores   : 2

プロセッサの最初のコアの場合:

processor   : 1
(snip)
core id : 1
cpu cores   : 2

2番目に。

だから、一般的に言えば、私はあなたが望むだろうと思います:

taskset -c 0,1,2,3

または:

taskset -c 4,5,6,7
5
malcolmpdx

次のように使用できます。

taskset -c -p 0-3 pid

1
YugiReddy

CPU Set(cset) を確認して、アプリケーションのCPUシールドグループを作成できます。このようにして、実際のコアが重要な作業に使用されていることを確認できます。私は通常、リアルタイムで低レイテンシのアプリケーションに対して(Nehalemシステムで)ハイパースレッディングを無効にします。

これは、タスクセットよりも少し整理されたcsetを使用して、特定のアプリケーション/プロセス用のCPUのグループを作成するためのチュートリアルです。 https://rt.wiki.kernel.org/index.php/Cpuset_management_utility/tutorial

コア数と場所の割り当てを決定する限り、以下を参照してください。 http://dag.wieers.com/blog/is-hyper-threading-enabled-on-a-linux-system

ハイパースレッディングを有効にしたクアッドコアNehalemにリンクされたユーティリティの簡単な実行は、次のようになります。

[root@XXX ~/hwloc-1.0.3]# ./utils/lstopo 
Machine (7980MB) + Socket #0 + L3 #0 (8192KB)
  L2 #0 (256KB) + L1 #0 (32KB) + Core #0
    PU #0 (phys=0)
    PU #1 (phys=4)
  L2 #1 (256KB) + L1 #1 (32KB) + Core #1
    PU #2 (phys=1)
    PU #3 (phys=5)
  L2 #2 (256KB) + L1 #2 (32KB) + Core #2
    PU #4 (phys=2)
    PU #5 (phys=6)
  L2 #3 (256KB) + L1 #3 (32KB) + Core #3
    PU #6 (phys=3)
    PU #7 (phys=7)
1
ewwhite