numactl は非常に便利な ライブラリであるが、どのように実行しているのか気になったので、strace をかけてみた。
ハードウェアの情報の取得には、
以下の 2つのディレクトリを見に行っているようだ。
/sys/devices/system/node
/sys/devices/system/cpu
というわけで、これらのファイルを眺めてみる。
以下、Istanbul(6cores) x 4sockets での結果の抜粋。
● /sys/devices/system/node 内の情報
% cat /sys/devices/system/node/online
0-3
% cat /sys/devices/system/node/possible
0-3
● /sys/devices/system/cpu 内の情報
% cat /sys/devices/system/cpu/possible
0-31
% cat /sys/devices/system/cpu/online
0-23
% cat /sys/devices/system/cpu/offline
24-31
% cat /sys/devices/system/cpu/present
0-23
% for i in {0..3}
cat /sys/devices/system/node/node$i/cpulist
0,4,8,12,16,20
3,7,11,15,19,23
2,6,10,14,18,22
1,5,9,13,17,21
これらのファイルを見る事でプロセッサの構成を知る事ができる。
ハードウェアの情報の取得には、
以下の 2つのディレクトリを見に行っているようだ。
/sys/devices/system/node
/sys/devices/system/cpu
というわけで、これらのファイルを眺めてみる。
以下、Istanbul(6cores) x 4sockets での結果の抜粋。
● /sys/devices/system/node 内の情報
% cat /sys/devices/system/node/online
0-3
% cat /sys/devices/system/node/possible
0-3
● /sys/devices/system/cpu 内の情報
% cat /sys/devices/system/cpu/possible
0-31
% cat /sys/devices/system/cpu/online
0-23
% cat /sys/devices/system/cpu/offline
24-31
% cat /sys/devices/system/cpu/present
0-23
% for i in {0..3}
cat /sys/devices/system/node/node$i/cpulist
0,4,8,12,16,20
3,7,11,15,19,23
2,6,10,14,18,22
1,5,9,13,17,21
これらのファイルを見る事でプロセッサの構成を知る事ができる。