Man page - pthread_getaffinity_np(3)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

PTHREAD_SETAFFINITY_NP

名 前
書 åŧ
čĒŦ 明
čŋ” り 値
エ ナ ãƒŧ
バ ãƒŧ ジ ョ ãƒŗ
åąž 性
æē– 拠
æŗ¨ 意
例
é–ĸ 逪 項 į›Ž
こ ぎ 文 書 ãĢ つ い ãĻ

名 前

pthread_setaffinity_np, pthread_getaffinity_np - ゚ ãƒŦ ッ ド ぎ CPU affinity ぎ 設 厚 /取 åž— を 行 う

書 åŧ

#define _GNU_SOURCE /* See feature_test_macros(7) */
#include <pthread.h>

int pthread_setaffinity_np(pthread_t thread , size_t cpusetsize ,
const cpu_set_t *
cpuset );
int pthread_getaffinity_np(pthread_t
thread , size_t cpusetsize ,
cpu_set_t *
cpuset );

-pthread で ã‚ŗ ãƒŗ パ イ ãƒĢ し ãĻ ãƒĒ ãƒŗ ク す る 。

čĒŦ 明

pthread_setaffinity_np () é–ĸ 数 は 、 ゚ ãƒŦ ッ ド thread ぎ CPU affinity マ ゚ ク ãĢ cpuset が 指 す CPU 集 合 を 設 厚 す る 。 å‘ŧ ãŗ å‡ē し が 成 功 し 、 そ ぎ ゚ ãƒŦ ッ ド が įž 在 cpuset で 指 厚 さ れ た CPU 上 で が 原 行 さ れ ãĻ い ãĒ い å ´ 合 は 、 ゚ ãƒŦ ッ ド は 指 厚 さ れ た CPU ぎ い ず れ か ãĢ į§ģ 動 さ れ る 。

pthread_getaffinity_np () é–ĸ 数 は 、 ゚ ãƒŦ ッ ド thread ぎ CPU affinity マ ゚ ク を 、 cpuset が 指 す バ ッ フ ã‚Ą ãƒŧ ãĢ å…Ĩ れ ãĻ čŋ” す 。

CPU affinity マ ゚ ク ぎ čŠŗ į´° ãĢ つ い ãĻ は 、 sched_setaffinity (2) を 参 į…§ し ãĻ ãģ し い 。 CPU 集 合 ぎ 操 äŊœ や 取 åž— を 行 う 際 ãĢ 刊 ᔍ で き る マ ク ロ įž¤ ぎ čĒŦ 明 は CPU_SET (3) を 参 į…§ し ãĻ ãģ し い 。

åŧ• 数 cpusetsize は cpuset が 指 す バ ッ フ ã‚Ą ãƒŧ ぎ 長 さ (バ イ ト 単 äŊ ) で あ る 。 通 常 は 、 こ ぎ åŧ• 数 ãĢ は sizeof(cpu_set_t) を 指 厚 す る ( CPU_SET (3) ãĢ 書 か れ ãĻ い る マ ク ロ を äŊŋ ãŖ ãĻ CPU 集 合 を 動 įš„ ãĢ 剞 り åŊ“ ãĻ ãĻ い る å ´ 合 ãĢ は 、 åˆĨ ぎ 値 ãĢ ãĒ る こ と も あ る )。

čŋ” り 値

成 功 す る と 、 こ れ ら ぎ é–ĸ 数 は 0 を čŋ” す 。 エ ナ ãƒŧ ぎ å ´ 合 、 0 äģĨ 外 ぎ エ ナ ãƒŧ į•Ē åˇ を čŋ” す 。

エ ナ ãƒŧ

EFAULT

指 厚 さ れ た ãƒĄ ãƒĸ ãƒĒ ãƒŧ ã‚ĸ ド ãƒŦ ゚ が į„Ą 劚 で あ る 。

EINVAL

( pthread_setaffinity_np ()) affinity ビ ッ ト マ ゚ ク mask ãĢ 、 そ ぎ 時 į‚š で ã‚ˇ ゚ テ ム 上 ãĢ į‰Š ᐆ įš„ ãĢ 存 在 し ãĻ 、 か つ そ ぎ ゚ ãƒŦ ッ ド ãĢ 寞 し ãĻ 訹 可 さ れ ãĻ い る プ ロ ã‚ģ ッ ã‚ĩ が 一 つ も åĢ ぞ れ ãĻ い ãĒ い 。 ゚ ãƒŦ ッ ド ãĢ 寞 し ãĻ お ぎ プ ロ ã‚ģ ッ ã‚ĩ ぎ 刊 ᔍ が 訹 可 さ れ る か は 、 cpuset (7) で čĒŦ 明 さ れ ãĻ い る "cpuset" 抟 構 ãĢ 遊 ᔍ さ れ る åˆļ 限 ãĢ åŸē ãĨ い ãĻ æąē ぞ る 。

EINVAL

( pthread_setaffinity_np ()) cpuset が 、 ã‚Ģ ãƒŧ ネ ãƒĢ が ã‚ĩ ポ ãƒŧ ト す る CPU 集 合 ãĢ åĢ ぞ れ ãĒ い CPU を 指 厚 し ãĻ い た 。 (ã‚Ģ ãƒŧ ネ ãƒĢ ぎ 設 厚 ã‚Ē プ ã‚ˇ ョ ãƒŗ CONFIG_NR_CPUS ãĢ よ り 、 CPU 集 合 を 襨 įž す る ぎ ãĢ äŊŋ わ れ る ã‚Ģ ãƒŧ ネ ãƒĢ ぎ デ ãƒŧ ã‚ŋ 型 が ã‚ĩ ポ ãƒŧ ト す る CPU 集 合 ぎ ᝄ 回 が 厚 įžŠ さ れ る 。 )

EINVAL

( pthread_getaffinity_np ()) cpusetsize が ã‚Ģ ãƒŧ ネ ãƒĢ が äŊŋ ᔍ す る affinity マ ゚ ク ぎ 大 き さ よ り も 小 さ い 。

ESRCH

ID が thread ぎ ゚ ãƒŦ ッ ド が čĻ‹ つ か ら ãĒ か ãŖ た 。

バ ãƒŧ ジ ョ ãƒŗ

こ れ ら ぎ é–ĸ 数 は glibc バ ãƒŧ ジ ョ ãƒŗ 2.3.4 äģĨ 降 で 提 供 さ れ ãĻ い る 。

åąž 性

こ ぎ ᝀ で äŊŋ ᔍ さ れ ãĻ い る ᔍ čĒž ぎ čĒŦ 明 ãĢ つ い ãĻ は 、 attributes (7) を 参 į…§ 。

Image grohtml-45778-1.png

æē– 拠

こ れ ら ぎ é–ĸ 数 は 非 標 æē– ぎ GNU ãĢ よ る æ‹Ą åŧĩ で あ る 。 そ ぎ た め 、 名 前 ãĢ "_np" (nonportable; į§ģ 植 性 が ãĒ い ) と い う æŽĨ å°ž 辞 が äģ˜ ã„ ãĻ い る 。

æŗ¨ 意

pthread_setaffinity_np () を å‘ŧ ãŗ å‡ē し た 垌 、 そ ぎ ゚ ãƒŦ ッ ド が 原 際 ãĢ 原 行 さ れ る CPU 集 合 は 、 cpuset åŧ• 数 で 指 厚 さ れ た 集 合 と ã‚ˇ ゚ テ ム ãĢ 原 際 ãĢ 存 在 す る CPU 集 合 ぎ å…ą 通 部 分 ãĢ ãĒ る 。 ぞ た 、 cpuset (7) で čĒŦ 明 さ れ ãĻ い る "cpuset" 抟 構 が äŊŋ わ れ ãĻ い る å ´ 合 ãĢ は 、 そ ぎ ゚ ãƒŦ ッ ド が 原 行 さ れ る CPU 集 合 が ã‚ˇ ゚ テ ム ãĢ よ ãŖ ãĻ さ ら ãĢ åˆļ 限 さ れ る å ´ 合 が あ る 。 そ ぎ ゚ ãƒŦ ッ ド が 原 行 さ れ る 原 際 ぎ CPU 集 合 ãĢ 寞 す る こ れ ら ぎ åˆļ 限 は 、 ã‚Ģ ãƒŧ ネ ãƒĢ ãĢ よ り éģ™ ãŖ ãĻ 遊 ᔍ さ れ る 。

こ れ ら ぎ é–ĸ 数 は 、 ã‚ˇ ゚ テ ム ã‚ŗ ãƒŧ ãƒĢ sched_setaffinity (2) と sched_getaffinity (2) を äŊŋ ãŖ ãĻ 原 čŖ… さ れ ãĻ い る 。

(こ ぎ バ ãƒŧ ジ ョ ãƒŗ だ け で あ る が ) glibc 2.3.3 で は 、 こ れ ら ぎ é–ĸ 数 は cpusetsize åŧ• 数 を 持 ãŖ ãĻ い ãĒ か ãŖ た 。 内 部 で å‘ŧ ば れ る ã‚ˇ ゚ テ ム ã‚ŗ ãƒŧ ãƒĢ ãĢ æ¸Ą さ れ る CPU ã‚ģ ッ ト ぎ 大 き さ は 常 ãĢ sizeof(cpu_set_t) で あ ãŖ た 。

pthread_create (3) で äŊœ 成 さ れ る 新 し い ゚ ãƒŦ ッ ド は 、 äŊœ 成 者 ぎ CPU affinity マ ゚ ク を įļ™ æ‰ŋ す る 。

例

äģĨ 下 ぎ プ ロ グ ナ ム で は 、 ãƒĄ イ ãƒŗ ゚ ãƒŦ ッ ド は pthread_setaffinity_np () を äŊŋ ãŖ ãĻ č‡Ē 分 ぎ CPU affinity マ ゚ ク ãĢ CPU 0 か ら 7 が åĢ ぞ れ る よ う ãĢ 設 厚 し (ã‚ˇ ゚ テ ム 上 ãĢ は 0 か ら 7 ãĢ 寞 åŋœ す る CPU が 全 ãĻ 存 在 す る と は 限 ら ãĒ い )、 そ ぎ 垌 で pthread_getaffinity_np () を äŊŋ ãŖ ãĻ ゚ ãƒŦ ッ ド ãĢ 原 際 ãĢ 設 厚 さ れ た CPU affinity マ ゚ ク を įĸē čĒ し ãĻ い る 。

#define _GNU_SOURCE
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

#define handle_error_en(en, msg) \
do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0)

int
main(int argc, char *argv[])
{
int s;
cpu_set_t cpuset;
pthread_t thread;

thread = pthread_self();

/* Set affinity mask to include CPUs 0 to 7 */

CPU_ZERO(&cpuset);
for (int j = 0; j < 8; j++)
CPU_SET(j, &cpuset);

s = pthread_setaffinity_np(thread, sizeof(cpuset), &cpuset);
if (s != 0)
handle_error_en(s, "pthread_setaffinity_np");

/* Check the actual affinity mask assigned to the thread */

s = pthread_getaffinity_np(thread, sizeof(cpuset), &cpuset);
if (s != 0)
handle_error_en(s, "pthread_getaffinity_np");

printf("Set returned by pthread_getaffinity_np() contained:\n");
for (int j = 0; j < CPU_SETSIZE; j++)
if (CPU_ISSET(j, &cpuset))
printf(" CPU %d\n", j);

exit(EXIT_SUCCESS);
}

é–ĸ 逪 項 į›Ž

sched_setaffinity (2), CPU_SET (3), pthread_attr_setaffinity_np (3), pthread_self (3), sched_getcpu (3), cpuset (7), pthreads (7), sched (7)

こ ぎ 文 書 ãĢ つ い ãĻ

こ ぎ man ペ ãƒŧ ジ は Linux man-pages プ ロ ジ ェ ク ト ぎ ãƒĒ ãƒĒ ãƒŧ ゚ 5.10 ぎ 一 部 で あ る 。 プ ロ ジ ェ ク ト ぎ čĒŦ 明 と バ グ å ą 告 ãĢ é–ĸ す る 情 å ą は https://www.kernel.org/doc/man-pages/ ãĢ 書 か れ ãĻ い る 。