Man page - getcpu(2)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

GETCPU

名 前
書 式
説 明
返 り 値
エ ラ ー
バ ー ジ ョ ン
準 拠
注 意
関 連 項 目
こ の 文 書 に つ い て

名 前

getcpu - 呼 び 出 し 元 ス レ ッ ド が 動 作 し て い る CPU と NUMA ノ ー ド を 判 定 す る

書 式

#include <linux/getcpu.h>

int getcpu(unsigned * cpu , unsigned * node , struct getcpu_cache * tcache );

説 明

getcpu () シ ス テ ム コ ー ル は 、 呼 び 出 し 元 の ス レ ッ ド や プ ロ セ ス が 現 在 動 作 し て い る プ ロ セ ッ サ や ノ ー ド の 情 報 を 特 定 し 、 そ れ ぞ れ 引 数 cpu node が 指 す 整 数 に 書 き 込 む 。 プ ロ セ ッ サ 情 報 は CPU を 識 別 す る た め の 一 意 な 小 さ な 整 数 で あ る 。 ノ ー ド 情 報 は NUMAノ ー ド を 識 別 す る た め の 一 意 な 小 さ な 整 数 で あ る 。 cpu node の い ず れ か が NULL で あ れ ば 、 そ の 引 数 に 対 応 す る 情 報 の 書 き 込 み は 行 わ れ な い 。

こ の シ ス テ ム コ ー ル の 3 番 目 の 引 数 は 現 在 は 使 わ れ て お ら ず 、 Linux 2.6.23 以 前 へ の 移 植 性 が 必 要 な 場 合 以 外 は NULL を 渡 す べ き で あ る (「 注 意 」 を 参 照 )。

cpu に 格 納 さ れ た 情 報 が 最 新 だ と 保 証 で き る の は 、 シ ス テ ム コ ー ル が 呼 ば れ た 時 点 だ け で あ る 。 sched_setaffinity (2) を 使 っ て CPU affinity が 固 定 さ れ て い な い 限 り 、 カ ー ネ ル は い つ で も CPU を 変 更 し て も よ い (ス ケ ジ ュ ー ラ は キ ャ ッ シ ュ が 有 効 に 働 く よ う に CPU の 移 動 を 最 小 限 に し よ う と す る の で 、 通 常 は CPU が 変 更 さ れ る こ と は な い が 、 起 き る 可 能 性 は あ る )。 cpu node で 返 さ れ た 情 報 が 呼 び 出 し が 返 っ た 時 点 で す で に 最 新 の 状 況 と 異 な る 可 能 性 が あ り 、 呼 び 出 し 元 は こ の 可 能 性 を 考 慮 し て お か な け れ ば な ら な い 。

返 り 値

成 功 す る と 、 0 を 返 す 。 エ ラ ー の 場 合 、 -1 を 返 し 、 errno に エ ラ ー を 示 す 値 を 設 定 す る 。

エ ラ ー

EFAULT

引 数 が 呼 び 出 し た プ ロ セ ス の ア ド レ ス 空 間 外 を 指 し て い る 。

バ ー ジ ョ ン

getcpu () was added in kernel 2.6.19 for x86-64 and i386. Library support was added in glibc 2.29 (Earlier glibc versions did not provide a wrapper for this system call, necessitating the use of syscall (2).)

準 拠

getcpu () は Linux 固 有 で あ る 。

注 意

Linux makes a best effort to make this call as fast as possible. (On some architectures, this is done via an implementation in the vdso (7).) The intention of getcpu () is to allow programs to make optimizations with per-CPU data or for NUMA optimization.

tcache 引 数 は Linux 2.6.24 以 降 で は 使 用 さ れ な い 。 以 前 の バ ー ジ ョ ン の カ ー ネ ル で は 、 こ の 引 数 が NULL 以 外 の 場 合 、 こ の 引 数 に は 、 呼 び 出 し 元 が 割 り 当 て た ス レ ッ ド 専 用 の 記 憶 領 域 (thread-local storage) 内 の バ ッ フ ァ ー を 指 す ポ イ ン タ ー が 指 定 さ れ 、 こ の バ ッ フ ァ ー は getcpu () 用 の キ ャ ッ シ ュ 機 構 を 提 供 す る た め に 利 用 さ れ て い た 。 非 常 に 低 い 確 率 だ が 古 い 情 報 を 返 し て し ま う デ メ リ ッ ト は あ る も の の 、 こ の キ ャ ッ シ ュ を 使 う こ と で getcpu () シ ス テ ム コ ー ル を 高 速 化 で き た 。 こ の キ ャ ッ シ ュ 機 構 は CPU 間 で の ス レ ッ ド の 移 動 時 に 問 題 に な る と 考 え ら れ 、 こ の 引 数 は 今 で は 無 視 さ れ る よ う に な っ て い る 。

関 連 項 目

mbind (2), sched_setaffinity (2), set_mempolicy (2), sched_getcpu (3), cpuset (7), vdso (7)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 5.10 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は https://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。