Man page - cpu_zero_s(3)

Packages contains this manual

Available languages:

en fr ja ru

Manual

CPU_SET

ๅ ๅ‰
ๆ›ธ ๅผ
่ชฌ ๆ˜Ž
ๅ‹• ็š„ ใซ ๅคง ใ ใ• ใŒ ๆฑบ ใพ ใ‚‹ CPU ้›† ๅˆ
่ฟ” ใ‚Š ๅ€ค
ใƒ ใƒผ ใ‚ธ ใƒง ใƒณ
ๆบ– ๆ‹ 
ๆณจ ๆ„
ใƒ ใ‚ฐ
ไพ‹
้–ข ้€ฃ ้ … ็›ฎ
ใ“ ใฎ ๆ–‡ ๆ›ธ ใซ ใค ใ„ ใฆ

ๅ ๅ‰

CPU_SET, CPU_CLR, CPU_ISSET, CPU_ZERO, CPU_COUNT, CPU_AND, CPU_OR, CPU_XOR, CPU_EQUAL, CPU_ALLOC, CPU_ALLOC_SIZE, CPU_FREE, CPU_SET_S, CPU_CLR_S, CPU_ISSET_S, CPU_ZERO_S, CPU_COUNT_S, CPU_AND_S, CPU_OR_S, CPU_XOR_S, CPU_EQUAL_S - CPU ้›† ๅˆ ใ‚’ ๆ“ ไฝœ ใ™ ใ‚‹ ใŸ ใ‚ ใฎ ใƒž ใ‚ฏ ใƒญ

ๆ›ธ ๅผ

#define _GNU_SOURCE /* feature_test_macros(7) ๅ‚ ็…ง */
#include <sched.h>

void CPU_ZERO(cpu_set_t * set );

void CPU_SET(int cpu , cpu_set_t * set );
void CPU_CLR(int
cpu , cpu_set_t * set );
int CPU_ISSET(int
cpu , cpu_set_t * set );

int CPU_COUNT(cpu_set_t * set );

void CPU_AND(cpu_set_t * destset ,
cpu_set_t *
srcset1 , cpu_set_t * srcset2 );
void CPU_OR(cpu_set_t *
destset ,
cpu_set_t *
srcset1 , cpu_set_t * srcset2 );
void CPU_XOR(cpu_set_t *
destset ,
cpu_set_t *
srcset1 , cpu_set_t * srcset2 );

int CPU_EQUAL(cpu_set_t * set1 , cpu_set_t * set2 );

cpu_set_t *CPU_ALLOC(int num_cpus );
void CPU_FREE(cpu_set_t *
set );
size_t CPU_ALLOC_SIZE(int
num_cpus );

void CPU_ZERO_S(size_t setsize , cpu_set_t * set );

void CPU_SET_S(int cpu , size_t setsize , cpu_set_t * set );
void CPU_CLR_S(int
cpu , size_t setsize , cpu_set_t * set );
int CPU_ISSET_S(int
cpu , size_t setsize , cpu_set_t * set );

int CPU_COUNT_S(size_t setsize , cpu_set_t * set );

void CPU_AND_S(size_t setsize , cpu_set_t * destset ,
cpu_set_t *
srcset1 , cpu_set_t * srcset2 );
void CPU_OR_S(size_t
setsize , cpu_set_t * destset ,
cpu_set_t *
srcset1 , cpu_set_t * srcset2 );
void CPU_XOR_S(size_t
setsize , cpu_set_t * destset ,
cpu_set_t *
srcset1 , cpu_set_t * srcset2 );

int CPU_EQUAL_S(size_t setsize , cpu_set_t * set1 , cpu_set_t * set2 );

่ชฌ ๆ˜Ž

cpu_set_t ใƒ‡ ใƒผ ใ‚ฟ ๆง‹ ้€  ไฝ“ ใฏ CPU ้›† ๅˆ ใ‚’ ่กจ ็พ ใ— ใฆ ใ„ ใ‚‹ ใ€‚ CPU ้›† ๅˆ ใฏ sched_setaffinity (2) ใ‚„ ๅŒ ๆง˜ ใฎ ใ‚ค ใƒณ ใ‚ฟ ใƒผ ใƒ• ใ‚ง ใƒผ ใ‚น ใง ไฝฟ ็”จ ใ• ใ‚Œ ใฆ ใ„ ใ‚‹ ใ€‚

cpu_set_t ใƒ‡ ใƒผ ใ‚ฟ ๅž‹ ใฏ ใƒ“ ใƒƒ ใƒˆ ใƒž ใ‚น ใ‚ฏ ใจ ใ— ใฆ ๅฎŸ ่ฃ… ใ• ใ‚Œ ใฆ ใ„ ใ‚‹ ใ€‚ ใ— ใ‹ ใ— ใ€ ใƒ‡ ใƒผ ใ‚ฟ ๆง‹ ้€  ไฝ“ ใฏ ใ ใฎ ๅฎŸ ่ฃ… ใ‚’ ๆ„ ่ญ˜ ใ› ใš ใซ ๆ‰ฑ ใ† ใน ใ ใง ใ‚ ใ‚Š ใ€ CPU ้›† ๅˆ ใฎ ใ™ ใน ใฆ ใฎ ๆ“ ไฝœ ใฏ ใ€ ใ“ ใฎ ใƒš ใƒผ ใ‚ธ ใง ่ชฌ ๆ˜Ž ใ• ใ‚Œ ใฆ ใ„ ใ‚‹ ใƒž ใ‚ฏ ใƒญ ใ‚’ ้€š ใ— ใฆ ่กŒ ใ† ใน ใ ใง ใ‚ ใ‚‹ ใ€‚

ไปฅ ไธ‹ ใฎ ใƒž ใ‚ฏ ใƒญ ใŒ CPU ้›† ๅˆ set ใ‚’ ๆ“ ไฝœ ใ™ ใ‚‹ ใŸ ใ‚ ใซ ๆ ไพ› ใ• ใ‚Œ ใฆ ใ„ ใ‚‹ ใ€‚
CPU_ZERO
()

set ใ‚’ ใ‚ฏ ใƒช ใ‚ข ใ™ ใ‚‹ ใ€‚ ้›† ๅˆ ใซ ใฏ ไฝ• ใ‚‚ CPU ใŒ ๅซ ใพ ใ‚Œ ใช ใ„ ็Šถ ๆ…‹ ใจ ใช ใ‚‹ ใ€‚

CPU_SET ()

set ใซ cpu ใ‚’ ่ฟฝ ๅŠ  ใ™ ใ‚‹ ใ€‚

CPU_CLR ()

set ใ‹ ใ‚‰ cpu ใ‚’ ๅ‰Š ้™ค ใ™ ใ‚‹ ใ€‚

CPU_ISSET ()

CPU cpu ใŒ set ใฎ ใƒก ใƒณ ใƒ ใƒผ ใง ใ‚ ใ‚‹ ใ‹ ใ‚’ ๆคœ ๆŸป ใ™ ใ‚‹ ใ€‚

CPU_COUNT ()

set ใซ ๅซ ใพ ใ‚Œ ใ‚‹ CPU ๆ•ฐ ใ‚’ ่ฟ” ใ™ ใ€‚

cpu ๅผ• ๆ•ฐ ใŒ ๆŒ‡ ๅฎš ใ™ ใ‚‹ ๅ ด ๅˆ ใ€ ใ ใฎ ๅผ• ๆ•ฐ ใฏ ๅ‰ฏ ไฝœ ็”จ ใ‚’ ไผด ใ† ใน ใ ใง ใฏ ใช ใ„ ใ€‚ ไธŠ ่จ˜ ใฎ ใƒž ใ‚ฏ ใƒญ ใฏ ๅผ• ๆ•ฐ ใ‚’ ่ค‡ ๆ•ฐ ๅ›ž ่ฉ• ไพก ใ™ ใ‚‹ ๅฏ ่ƒฝ ๆ€ง ใŒ ใ‚ ใ‚‹ ใ‹ ใ‚‰ ใง ใ‚ ใ‚‹ ใ€‚

The first CPU on the system corresponds to a cpu value of 0, the next CPU corresponds to a cpu value of 1, and so on. No assumptions should be made about particular CPUs being available, or the set of CPUs being contiguous, since CPUs can be taken offline dynamically or be otherwise absent. The constant CPU_SETSIZE (currently 1024) specifies a value one greater than the maximum CPU number that can be stored in cpu_set_t .

ไปฅ ไธ‹ ใฎ ใƒž ใ‚ฏ ใƒญ ใฏ CPU ้›† ๅˆ ใฉ ใ† ใ— ใฎ ่ซ– ็† ๆ“ ไฝœ ใ‚’ ่กŒ ใ† ใ€‚
CPU_AND
()

้›† ๅˆ srcset1 ใจ srcset2 ใฎ ็ฉ ้›† ๅˆ ใ‚’ destset ใซ ๆ ผ ็ด ใ™ ใ‚‹ (ๅ…ƒ ใฎ ้›† ๅˆ ใฎ ใ„ ใš ใ‚Œ ใ‹ ใŒ destset ใจ ใ— ใฆ ไฝฟ ็”จ ใ• ใ‚Œ ใ‚‹ ๅ ด ๅˆ ใ‚‚ ใ‚ ใ‚‹ )ใ€‚

CPU_OR ()

้›† ๅˆ srcset1 ใจ srcset2 ใฎ ๅ’Œ ้›† ๅˆ ใ‚’ destset ใซ ๆ ผ ็ด ใ™ ใ‚‹ (ๅ…ƒ ใฎ ้›† ๅˆ ใฎ ใ„ ใš ใ‚Œ ใ‹ ใŒ destset ใจ ใ— ใฆ ไฝฟ ็”จ ใ• ใ‚Œ ใ‚‹ ๅ ด ๅˆ ใ‚‚ ใ‚ ใ‚‹ )ใ€‚

CPU_XOR ()

้›† ๅˆ srcset1 ใจ srcset2 ใฎ XOR ใ‚’ destset ใซ ๆ ผ ็ด ใ™ ใ‚‹ (ๅ…ƒ ใฎ ้›† ๅˆ ใฎ ใ„ ใš ใ‚Œ ใ‹ ใŒ destset ใจ ใ— ใฆ ไฝฟ ็”จ ใ• ใ‚Œ ใ‚‹ ๅ ด ๅˆ ใ‚‚ ใ‚ ใ‚‹ )ใ€‚ XOR ใจ ใฏ ใ€ srcset1 ใ‹ srcset2 ใฎ ใ„ ใš ใ‚Œ ใ‹ ใซ ๅซ ใพ ใ‚Œ ใ‚‹ ใŒ ใ€ ไธก ๆ–น ใซ ใฏ ๅซ ใพ ใ‚Œ ใช ใ„ ้›† ๅˆ ใฎ ใ“ ใจ ใง ใ‚ ใ‚‹ ใ€‚

CPU_EQUAL ()

ไบŒ ใค ใฎ CPU ้›† ๅˆ ใŒ ๅ…จ ใ ๅŒ ใ˜ CPU ใ‚’ ๅซ ใ‚“ ใง ใ„ ใ‚‹ ใ‹ ใ‚’ ๆคœ ๆŸป ใ™ ใ‚‹ ใ€‚

ๅ‹• ็š„ ใซ ๅคง ใ ใ• ใŒ ๆฑบ ใพ ใ‚‹ CPU ้›† ๅˆ

ใ„ ใ ใค ใ‹ ใฎ ใ‚ข ใƒ— ใƒช ใ‚ฑ ใƒผ ใ‚ท ใƒง ใƒณ ใง ใฏ CPU ้›† ๅˆ ใฎ ๅคง ใ ใ• ใ‚’ ๅ‹• ็š„ ใซ ๆฑบ ใ‚ ใ‚‹ ่ƒฝ ๅŠ› (ไพ‹ ใˆ ใฐ ใ€ ๆจ™ ๆบ– ใฎ cpu_set_t ใƒ‡ ใƒผ ใ‚ฟ ๅž‹ ใง ๅฎš ็พฉ ใ• ใ‚Œ ใŸ ใ‚ˆ ใ‚Š ใ‚‚ ๅคง ใ ใ„ ้›† ๅˆ ใ‚’ ๅ‰ฒ ใ‚Š ๅฝ“ ใฆ ใ‚‹ ใช ใฉ ) ใŒ ๅฟ… ่ฆ ใจ ใช ใ‚‹ ใ“ ใจ ใŒ ใ‚ ใ‚‹ ใŸ ใ‚ ใ€ ็พ ๅœจ glibc ใฏ ใ“ ใ‚Œ ใซ ๅฏพ ๅฟœ ใ™ ใ‚‹ ใŸ ใ‚ ใซ ใ„ ใ ใค ใ‹ ใฎ ใƒž ใ‚ฏ ใƒญ ใ‚’ ๆ ไพ› ใ— ใฆ ใ„ ใ‚‹ ใ€‚

ไปฅ ไธ‹ ใฎ ใƒž ใ‚ฏ ใƒญ ใ‚’ ไฝฟ ใ† ใจ CPU ้›† ๅˆ ใฎ ๅ‰ฒ ใ‚Š ๅฝ“ ใฆ ใจ ่งฃ ๆ”พ ใŒ ใง ใ ใ‚‹ ใ€‚
CPU_ALLOC
()

0 ใ‹ ใ‚‰ num_cpus-1 ใพ ใง ใฎ ็ฏ„ ๅ›ฒ ใฎ CPU ใ‚’ ไฟ ๆŒ ใ™ ใ‚‹ ใฎ ใซ ๅ ๅˆ† ใช ๅคง ใ ใ• ใฎ CPU ้›† ๅˆ ใ‚’ ๅ‰ฒ ใ‚Š ๅฝ“ ใฆ ใ‚‹ ใ€‚

CPU_ALLOC_SIZE ()

0 ใ‹ ใ‚‰ num_cpus-1 ใพ ใง ใฎ ็ฏ„ ๅ›ฒ ใฎ CPU ใ‚’ ไฟ ๆŒ ใ™ ใ‚‹ ใฎ ใซ ๅฟ… ่ฆ ใช CPU ้›† ๅˆ ใฎ ๅคง ใ ใ• ใ‚’ ใƒ ใ‚ค ใƒˆ ๆ•ฐ ใง ่ฟ” ใ™ ใ€‚ ใ“ ใฎ ใƒž ใ‚ฏ ใƒญ ใŒ ่ฟ” ใ™ ๅ€ค ใฏ ใ€ ๅพŒ ่ฟฐ ใฎ CPU_*_S () ใƒž ใ‚ฏ ใƒญ ใฎ setsize ๅผ• ๆ•ฐ ใจ ใ— ใฆ ไฝฟ ็”จ ใง ใ ใ‚‹ ใ€‚

CPU_FREE ()

ไปฅ ๅ‰ ใซ CPU_ALLOC () ใง ๅ‰ฒ ใ‚Š ๅฝ“ ใฆ ใ‚‰ ใ‚Œ ใŸ CPU ้›† ๅˆ ใ‚’ ่งฃ ๆ”พ ใ™ ใ‚‹ ใ€‚

ๅ ๅ‰ ใŒ "_S" ใง ็ต‚ ใ‚ ใ‚‹ ใƒž ใ‚ฏ ใƒญ ใฏ "_S" ใช ใ— ใฎ ๅŒ ใ˜ ๅ ๅ‰ ใฎ ใƒž ใ‚ฏ ใƒญ ใจ ๅŒ ็ญ‰ ใง ใ‚ ใ‚‹ ใ€‚ ใ“ ใ‚Œ ใ‚‰ ใฎ ใƒž ใ‚ฏ ใƒญ ใฏ "_S" ใช ใ— ใฎ ใ‚‚ ใฎ ใจ ๅŒ ใ˜ ๅ‹• ไฝœ ใ‚’ ใ™ ใ‚‹ ใŒ ใ€ ๅ‹• ็š„ ใซ ๅ‰ฒ ใ‚Š ๅฝ“ ใฆ ใ‚‰ ใ‚Œ ใŸ ใ€ ๅคง ใ ใ• ใŒ setsize ใƒ ใ‚ค ใƒˆ ใฎ CPU ้›† ๅˆ ใซ ๅฏพ ใ— ใฆ ๆ“ ไฝœ ใ‚’ ่กŒ ใ† ็‚น ใŒ ็•ฐ ใช ใ‚‹ ใ€‚

่ฟ” ใ‚Š ๅ€ค

CPU_ISSET () ใจ CPU_ISSET_S () ใฏ ใ€ cpu ใŒ set ใซ ๅซ ใพ ใ‚Œ ใฆ ใ„ ใ‚Œ ใฐ 0 ไปฅ ๅค– ใ‚’ ่ฟ” ใ— ใ€ ๅซ ใพ ใ‚Œ ใช ใ„ ๅ ด ๅˆ 0 ใ‚’ ่ฟ” ใ™ ใ€‚

CPU_COUNT () ใจ CPU_COUNT_S () ใฏ set ใซ ๅซ ใพ ใ‚Œ ใ‚‹ CPU ๆ•ฐ ใ‚’ ่ฟ” ใ™ ใ€‚

CPU_EQUAL () ใจ CPU_EQUAL_S () ใฏ ใ€ ไบŒ ใค ใฎ CPU ้›† ๅˆ ใŒ ็ญ‰ ใ— ใ‘ ใ‚Œ ใฐ 0 ไปฅ ๅค– ใ‚’ ่ฟ” ใ— ใ€ ็ญ‰ ใ— ใ ใช ใ„ ๅ ด ๅˆ 0 ใ‚’ ่ฟ” ใ™ ใ€‚

CPU_ALLOC () ใฏ ๆˆ ๅŠŸ ใ™ ใ‚‹ ใจ ใƒ ใ‚ค ใƒณ ใ‚ฟ ใƒผ ใ‚’ ่ฟ” ใ— ใ€ ๅคฑ ๆ•— ใ™ ใ‚‹ ใจ NULL ใ‚’ ่ฟ” ใ™ (ใ‚จ ใƒฉ ใƒผ ใฏ malloc (3) ใจ ๅŒ ใ˜ ใง ใ‚ ใ‚‹ )ใ€‚

CPU_ALLOC_SIZE () ใฏ ๆŒ‡ ๅฎš ใ• ใ‚Œ ใŸ ๅคง ใ ใ• ใฎ CPU ้›† ๅˆ ใ‚’ ๆ ผ ็ด ใ™ ใ‚‹ ใฎ ใซ ๅฟ… ่ฆ ใช ใƒ ใ‚ค ใƒˆ ๆ•ฐ ใ‚’ ่ฟ” ใ™ ใ€‚

ไป– ใฎ ้–ข ๆ•ฐ ใฏ ๅ€ค ใ‚’ ่ฟ” ใ• ใช ใ„ ใ€‚

ใƒ ใƒผ ใ‚ธ ใƒง ใƒณ

ใƒž ใ‚ฏ ใƒญ CPU_ZERO (), CPU_SET (), CPU_CLR (), CPU_ISSET () ใฏ glibc 2.3.3 ใง ่ฟฝ ๅŠ  ใ• ใ‚Œ ใŸ ใ€‚

CPU_COUNT () ใฏ glibc 2.6 ใง ๅˆ ใ‚ ใฆ ็™ป ๅ ด ใ— ใŸ ใ€‚

CPU_AND (), CPU_OR (), CPU_XOR (), CPU_EQUAL (), CPU_ALLOC (), CPU_ALLOC_SIZE (), CPU_FREE (), CPU_ZERO_S (), CPU_SET_S (), CPU_CLR_S (), CPU_ISSET_S (), CPU_AND_S (), CPU_OR_S (), CPU_XOR_S (), CPU_EQUAL_S () ใฏ glibc 2.7 ใง ๅˆ ใ‚ ใฆ ็™ป ๅ ด ใ— ใŸ ใ€‚

ๆบ– ๆ‹ 

ใ“ ใ‚Œ ใ‚‰ ใฎ ใ‚ค ใƒณ ใ‚ฟ ใƒผ ใƒ• ใ‚ง ใƒผ ใ‚น ใฏ Linux ๅ›บ ๆœ‰ ใง ใ‚ ใ‚‹ ใ€‚

ๆณจ ๆ„

CPU ้›† ๅˆ ใ‚’ ่ค‡ ่ฃฝ ใ™ ใ‚‹ ใซ ใฏ ใ€ memcpy (3) ใ‚’ ไฝฟ ็”จ ใ™ ใ‚‹ ใ€‚

CPU ้›† ๅˆ ใฏ ใƒญ ใƒณ ใ‚ฐ ใƒฏ ใƒผ ใƒ‰ ๅ˜ ไฝ ใซ ๅ‰ฒ ใ‚Š ๅฝ“ ใฆ ใ‚‰ ใ‚Œ ใ‚‹ ใƒ“ ใƒƒ ใƒˆ ใƒž ใ‚น ใ‚ฏ ใช ใฎ ใง ใ€ ๅ‹• ็š„ ใซ ๅ‰ฒ ใ‚Š ๅฝ“ ใฆ ใ‚‰ ใ‚Œ ใŸ CPU ้›† ๅˆ ใฎ ๅฎŸ ้š› ใฎ CPU ๆ•ฐ ใฏ sizeof(unsigned long) ใฎ ๆฌก ใฎ ๅ€ ๆ•ฐ ใซ ๅˆ‡ ใ‚Š ไธŠ ใ’ ใ‚‰ ใ‚Œ ใ‚‹ ใ“ ใจ ใซ ใช ใ‚‹ ใ€‚ ใ‚ข ใƒ— ใƒช ใ‚ฑ ใƒผ ใ‚ท ใƒง ใƒณ ใฏ ใ€ ใ“ ใ‚Œ ใ‚‰ ใฎ ไฝ™ ๅˆ† ใช ใƒ“ ใƒƒ ใƒˆ ใฎ ๅ†… ๅฎน ใฏ ไธ ๅฎš ใจ ่€ƒ ใˆ ใ‚‹ ใน ใ ใง ใ‚ ใ‚‹ ใ€‚

ๅ ๅ‰ ใฏ ไผผ ใฆ ใ„ ใ‚‹ ใŒ ใ€ ๅฎš ๆ•ฐ CPU_SETSIZE ใฏ cpu_set_t ใƒ‡ ใƒผ ใ‚ฟ ๅž‹ ใซ ๅซ ใพ ใ‚Œ ใ‚‹ CPU ๆ•ฐ (ใค ใพ ใ‚Š ใ€ ไบ‹ ๅฎŸ ไธŠ ใƒ“ ใƒƒ ใƒˆ ใƒž ใ‚น ใ‚ฏ ๅ†… ใฎ ใƒ“ ใƒƒ ใƒˆ ใ‚ซ ใ‚ฆ ใƒณ ใƒˆ ) ใ‚’ ็คบ ใ™ ใฎ ใซ ๅฏพ ใ— ใฆ ใ€ ใƒž ใ‚ฏ ใƒญ CPU_*_S () ใฎ setsize ๅผ• ๆ•ฐ ใฏ ใƒ ใ‚ค ใƒˆ ๅ˜ ไฝ ใฎ ใ‚ต ใ‚ค ใ‚บ ใง ใ‚ ใ‚‹ ็‚น ใซ ๆณจ ๆ„ ใ™ ใ‚‹ ใ“ ใจ ใ€‚

ใ€Œ ๆ›ธ ๅผ ใ€ ใซ ๆ›ธ ใ‹ ใ‚Œ ใฆ ใ„ ใ‚‹ ๅผ• ๆ•ฐ ใจ ่ฟ” ใ‚Š ๅ€ค ใฎ ใƒ‡ ใƒผ ใ‚ฟ ๅž‹ ใฏ ใ€ ใ ใ‚Œ ใž ใ‚Œ ใฎ ๅ ด ๅˆ ใง ใฉ ใ‚“ ใช ๅž‹ ใŒ ๆœŸ ๅพ… ใ• ใ‚Œ ใ‚‹ ใ‹ ใฎ ใƒ’ ใƒณ ใƒˆ ใง ใ‚ ใ‚‹ ใ€‚ ใ— ใ‹ ใ— ใช ใŒ ใ‚‰ ใ€ ใ“ ใ‚Œ ใ‚‰ ใฎ ใ‚ค ใƒณ ใ‚ฟ ใƒผ ใƒ• ใ‚ง ใƒผ ใ‚น ใฏ ใƒž ใ‚ฏ ใƒญ ใจ ใ— ใฆ ๅฎŸ ่ฃ… ใ• ใ‚Œ ใฆ ใ„ ใ‚‹ ใŸ ใ‚ ใ€ ใ“ ใฎ ใƒ’ ใƒณ ใƒˆ ใ‚’ ๅฎˆ ใ‚‰ ใช ใ‹ ใฃ ใŸ ๅ ด ๅˆ ใซ ใ€ ใ‚ณ ใƒณ ใƒ‘ ใ‚ค ใƒฉ ใŒ ๅฟ… ใš ใ— ใ‚‚ ๅ…จ ใฆ ใฎ ๅž‹ ใ‚จ ใƒฉ ใƒผ ใ‚’ ๆ• ๆ‰ ใง ใ ใ‚‹ ใจ ใฏ ้™ ใ‚‰ ใช ใ„ ใ€‚

ใƒ ใ‚ฐ

glibc 2.8 ไปฅ ๅ‰ ใฎ 32 ใƒ“ ใƒƒ ใƒˆ ใƒ— ใƒฉ ใƒƒ ใƒˆ ใƒ• ใ‚ฉ ใƒผ ใƒ  ใง ใฏ ใ€ CPU_ALLOC () ใฏ ๅฟ… ่ฆ ใช ็ฉบ ้–“ ใฎ ๅ‰ฒ ใ‚Š ๅฝ“ ใฆ ใ‚’ ไบŒ ๅบฆ ่กŒ ใ„ ใ€ CPU_ALLOC_SIZE () ใฏ ๆœฌ ๆฅ ใ‚ ใ‚‹ ใน ใ ๅ€ค ใฎ ไบŒ ๅ€ ใฎ ๅ€ค ใ‚’ ่ฟ” ใ™ ใ€‚ ใ“ ใฎ ใƒ ใ‚ฐ ใฏ ใƒ— ใƒญ ใ‚ฐ ใƒฉ ใƒ  ใฎ ๅ‹• ไฝœ ใซ ใฏ ๅฝฑ ้Ÿฟ ใ‚’ ไธŽ ใˆ ใช ใ„ ใฏ ใš ใ  ใŒ ใ€ ็„ก ้ง„ ใซ ใƒก ใƒข ใƒช ใƒผ ใ‚’ ๆถˆ ่ฒป ใ— ใ€ ๅ‹• ็š„ ใซ ๅ‰ฒ ใ‚Š ๅฝ“ ใฆ ใ‚‰ ใ‚Œ ใŸ CPU ้›† ๅˆ ใซ ๅฏพ ใ— ใฆ ๆ“ ไฝœ ใ‚’ ่กŒ ใ† ใƒž ใ‚ฏ ใƒญ ใฎ ๅ‹• ไฝœ ใฎ ๅŠน ็އ ใŒ ไธ‹ ใŒ ใ‚‹ ็ต ๆžœ ใจ ใช ใ‚‹ ใ€‚ ใ“ ใ‚Œ ใ‚‰ ใฎ ใƒ ใ‚ฐ ใฏ glibc 2.9 ใง ไฟฎ ๆญฃ ใ• ใ‚Œ ใŸ ใ€‚

ไพ‹

ไปฅ ไธ‹ ใฎ ใƒ— ใƒญ ใ‚ฐ ใƒฉ ใƒ  ใฏ ใ€ ๅ‹• ็š„ ใซ ๅ‰ฒ ใ‚Š ๅฝ“ ใฆ ใŸ CPU ้›† ๅˆ ใซ ๅฏพ ใ— ใฆ ใ„ ใ ใค ใ‹ ใฎ ใƒž ใ‚ฏ ใƒญ ใ‚’ ไฝฟ ็”จ ใ™ ใ‚‹ ไพ‹ ใ‚’ ็คบ ใ— ใฆ ใ„ ใ‚‹ ใ€‚

#define _GNU_SOURCE
#include <sched.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <assert.h>

int
main(int argc, char *argv[])
{
cpu_set_t *cpusetp;
size_t size;
int num_cpus;

if (argc < 2) {
fprintf(stderr, "Usage: %s <num-cpus>\n", argv[0]);
exit(EXIT_FAILURE);
}

num_cpus = atoi(argv[1]);

cpusetp = CPU_ALLOC(num_cpus);
if (cpusetp == NULL) {
perror("CPU_ALLOC");
exit(EXIT_FAILURE);
}

size = CPU_ALLOC_SIZE(num_cpus);

CPU_ZERO_S(size, cpusetp);
for (int cpu = 0; cpu < num_cpus; cpu += 2)
CPU_SET_S(cpu, size, cpusetp);

printf("CPU_COUNT() of set: %d\n", CPU_COUNT_S(size, cpusetp));

CPU_FREE(cpusetp);
exit(EXIT_SUCCESS);
}

้–ข ้€ฃ ้ … ็›ฎ

sched_setaffinity (2), pthread_attr_setaffinity_np (3), pthread_setaffinity_np (3), cpuset (7)

ใ“ ใฎ ๆ–‡ ๆ›ธ ใซ ใค ใ„ ใฆ

ใ“ ใฎ man ใƒš ใƒผ ใ‚ธ ใฏ Linux man-pages ใƒ— ใƒญ ใ‚ธ ใ‚ง ใ‚ฏ ใƒˆ ใฎ ใƒช ใƒช ใƒผ ใ‚น 5.10 ใฎ ไธ€ ้ƒจ ใง ใ‚ ใ‚‹ ใ€‚ ใƒ— ใƒญ ใ‚ธ ใ‚ง ใ‚ฏ ใƒˆ ใฎ ่ชฌ ๆ˜Ž ใจ ใƒ ใ‚ฐ ๅ ฑ ๅ‘Š ใซ ้–ข ใ™ ใ‚‹ ๆƒ… ๅ ฑ ใฏ https://www.kernel.org/doc/man-pages/ ใซ ๆ›ธ ใ‹ ใ‚Œ ใฆ ใ„ ใ‚‹ ใ€‚