研究日誌。

大規模なグラフ処理に対してメモリ階層構造を考慮した高性能なソフトウェアを開発。

コアの配置状況。

2008-07-15 18:38:41 | Weblog
どのようにコアが配置されているかを把握する方法について。

マルチコア・プロセッサ上で、/proc/cpuinfo を見ると8コアであれば、0~7までのプロセッサ番号が付くことになる。しかし、それだけではどのように配置されているかわからない。単純に連番になっているのではなく、またプロセッサによって異なるので、その都度調べる必要がある。

例えばどちらも QuadCore Xeon x 2 で計 8 コアの構成ではあるが、番号の振り方が異なる。以下は少しわかりづらいかもしれないが、プロセッサ番号を表している。一番深い括弧から、L2 共有コア、同一ダイ上のコア、ノード上のコアとなっている。

1、Intel(R) Xeon(R) CPU E5345 @ 2.33GHz (L2 4MB)
 [[0,2], [4,6]], [[1,3], [5,7]]

2、Intel(R) Xeon(R) CPU X5460 @ 3.16GHz (L2 6MB)
 [[0,4], [2,6]], [[1,5], [3,7]]


さて、どのように調べるかなのだが、/proc/cpuinfo を確認すると、processor, physical id, core id が記されている。以下のように書き出すとわかりやすいのだが、processor はコアに対しての通し番号、physical id は ダイの通し番号、core id はダイ内での通し番号になっている。よって、上のような構成であることがわかる。

1、Intel(R) Xeon(R) CPU E5345 @ 2.33GHz (L2 4MB)
processor   physical id   core id
        0             0         0
        1             1         0
        2             0         1
        3             1         1
        4             0         2
        5             1         2
        6             0         3
        7             1         3

2、Intel(R) Xeon(R) CPU X5460 @ 3.16GHz (L2 6MB)
processor   physical id   core id
        0             0         0
        1             1         0
        2             0         2
        3             1         2
        4             0         1
        5             1         1
        6             0         3
        7             1         3