sched_setaffinity(2) - wariua/manpages-ko GitHub Wiki
sched_setaffinity, sched_getaffinity - ์ค๋ ๋์ CPU ์นํ์ฑ ๋ง์คํฌ ์ค์ ํ๊ณ ์ป๊ธฐ
#define _GNU_SOURCE /* feature_test_macros(7) ์ฐธ๊ณ */
#include <sched.h>
int sched_setaffinity(pid_t pid, size_t cpusetsize,
const cpu_set_t *mask);
int sched_getaffinity(pid_t pid, size_t cpusetsize,
cpu_set_t *mask);
์ค๋ ๋์ CPU ์นํ์ฑ ๋ง์คํฌ๋ ๊ทธ ์ค๋ ๋๊ฐ ์ด๋ค CPU๋ค ์์์ ๋ ์ ์๋์ง ๊ฒฐ์ ํ๋ค. ๋ค์ค ํ๋ก์ธ์ ์์คํ ์์ CPU ์นํ์ฑ ๋ง์คํฌ๋ฅผ ์ค์ ํ๋ ๊ฒ์ผ๋ก ์ฑ๋ฅ ์ด๋์ ์ป์ ์ ์๋ค. ์๋ฅผ ๋ค์ด ํ CPU๋ฅผ ํน์ ์ค๋ ๋์๊ฒ ๋ ์ ์ํค๋ฉด (์ฆ, ๊ทธ ์ค๋ ๋์ ์นํ์ฑ ๋ง์คํฌ๋ฅผ ํ CPU๋ง ๋ํ๋ด๊ฒ ์ค์ ํ๊ณ ๋ค๋ฅธ ๋ชจ๋ ์ค๋ ๋์ ์นํ์ฑ ๋ง์คํฌ๋ฅผ ๊ทธ CPU๋ฅผ ๋ฐฐ์ ํ๊ฒ ์ค์ ํ๋ฉด) ๊ทธ ์ค๋ ๋์ ์ต๋ํ์ ์คํ ์๋๋ฅผ ๋ณด์ฅํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค. ์ค๋ ๋๊ฐ ํ CPU์์๋ง ๋๋๋ก ์ ์ฝํ๋ฉด ์ค๋ ๋๊ฐ ํ CPU์์ ์คํ์ ์ค๋จํ๊ณ ๋ค๋ฅธ CPU์์ ์คํ์ ์ฌ๊ฐํ ๋ ๋ฐ์ํ๋ ์บ์ ๋ฌดํจํ๋ก ์ธํ ์ฑ๋ฅ ๋น์ฉ์ ํผํ๊ฒ ๋๊ธฐ๋ ํ๋ค.
mask
๊ฐ ๊ฐ๋ฆฌํค๋ "CPU ์ธํธ"์ธ cpu_set_t
๊ตฌ์กฐ์ฒด๋ก CPU ์นํ์ฑ ๋ง์คํฌ๋ฅผ ํํํ๋ค. CPU ์ธํธ๋ฅผ ์กฐ์ํ๊ธฐ ์ํ ๋งคํฌ๋ก๋ค์ CPU_SET(3)์์ ๊ธฐ์ ํ๋ค.
sched_setaffinity()
๋ ID๊ฐ pid
์ธ ์ค๋ ๋์ CPU ์นํ์ฑ ๋ง์คํฌ๋ฅผ mask
๊ฐ ๋ํ๋ด๋ ๊ฐ์ผ๋ก ์ค์ ํ๋ค. pid
๊ฐ 0์ด๋ฉด ํธ์ถ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ๋ค. cpusetsize
์ธ์๋ mask
๊ฐ ๊ฐ๋ฆฌํค๋ ๋ฐ์ดํฐ์ (๋ฐ์ดํธ ๋จ์) ๊ธธ์ด์ด๋ค. ๋ณดํต์ ์ด ์ธ์๋ฅผ sizeof(cpu_set_t)
๋ผ๊ณ ์ง์ ํ๊ฒ ๋ ๊ฒ์ด๋ค.
pid
๋ก ์ง์ ํ ์ค๋ ๋๊ฐ ํ์ฌ mask
์ ์ง์ ํ CPU๋ค ์ค ํ๋์์ ๋๊ณ ์์ง ์์ผ๋ฉด mask
์ ์ง์ ํ CPU๋ค ์ค ํ๋๋ก ์ค๋ ๋๋ฅผ ์ฎ๊ธด๋ค.
sched_getaffinity()
๋ ID๊ฐ pid
์ธ ์ค๋ ๋์ ์นํ์ฑ ๋ง์คํฌ๋ฅผ mask
๊ฐ ๊ฐ๋ฆฌํค๋ cpu_set_t
๊ตฌ์กฐ์ฒด์ ์จ๋ฃ๋๋ค. cpusetsize
์ธ์๋ mask
์ (๋ฐ์ดํธ ๋จ์) ํฌ๊ธฐ๋ฅผ ๋ํ๋ธ๋ค. pid
๊ฐ 0์ด๋ฉด ํธ์ถ ์ค๋ ๋์ ๋ง์คํฌ๋ฅผ ๋ฐํํ๋ค.
์ฑ๊ณต ์ sched_setaffinity()
์ sched_getaffinity()
๋ 0์ ๋ฐํํ๋ค. ์ค๋ฅ ์ -1์ ๋ฐํํ๋ฉฐ errno
๋ฅผ ์ ์ ํ ์ค์ ํ๋ค.
EFAULT
- ์ ๊ณตํ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ์ ํจํ์ง ์๋ค.
EINVAL
- ์นํ์ฑ ๋นํธ ๋ง์คํฌ
mask
๊ฐ ํ์ฌ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์์คํ ์์ ์์ผ๋ฉด์cpuset
cgroup์ด๋ cpuset(7)์์ ๊ธฐ์ ํ๋ "cpuset" ๋ฉ์ปค๋์ฆ์ผ๋ก ๋ถ๊ณผํ ์ ์๋ ์ ์ฝ์ ๋ฐ๋ผ ์ค๋ ๋์๊ฒ ํ์ฉ๋ ํ๋ก์ธ์๋ฅผ ํ๋๋ ํฌํจํ๊ณ ์์ง ์๋ค. EINVAL
- (
sched_getaffinity()
, ๊ทธ๋ฆฌ๊ณ 2.6.9 ์ ์ ์ปค๋์์๋sched_setaffinity()
๋)cpusetsize
๊ฐ ์ปค๋์์ ์ฐ๋ ์นํ์ฑ ๋ง์คํฌ์ ํฌ๊ธฐ๋ณด๋ค ์๋ค. EPERM
- (
sched_setaffinity()
) ํธ์ถ ์ค๋ ๋๊ฐ ์ ์ ํ ํน๊ถ์ ๊ฐ์ง๊ณ ์์ง ์๋ค. ํธ์ถ์์ ์คํจ ์ฌ์ฉ์ ID๊ฐ `pid`๊ฐ ๊ฐ๋ฆฌํค๋ ์ค๋ ๋์ ์ค์ ์ฌ์ฉ์ ID๋ ์คํจ ์ฌ์ฉ์ ID์ ๊ฐ๊ฑฐ๋ ํธ์ถ์๊ฐ ์ค๋ ๋pid
์ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค์์CAP_SYS_NICE
์ญ๋ฅ์ ์์ ํ๊ณ ์์ด์ผ ํ๋ค. ESRCH
- ID๊ฐ
pid
์ธ ์ค๋ ๋๋ฅผ ์ฐพ์ ์ ์๋ค.
๋ฆฌ๋
์ค ์ปค๋ 2.5.8์์ CPU ์นํ์ฑ ์์คํ
ํธ์ถ๋ค์ด ๋์
๋์๋ค. glibc 2.3์์ ์์คํ
ํธ์ถ ๋ํผ๋ค์ด ๋์
๋์๋ค. ์ฒ์์ glibc ์ธํฐํ์ด์ค์๋ unsigned int
ํ์
์ธ cpusetsize
์ธ์๊ฐ ํฌํจ๋ผ ์์๋ค. glibc 2.3.3์์ cpusetsize
์ธ์๊ฐ ์ ๊ฑฐ๋์๋ค๊ฐ glibc 2.3.4์์ size_t
ํ์
์ผ๋ก ๋์ด์๋ฌ๋ค.
์ด ์์คํ ํธ์ถ๋ค์ ๋ฆฌ๋ ์ค ์ ์ฉ์ด๋ค.
sched_setaffinity()
ํธ์ถ ํ์ ์ค๋ ๋๊ฐ ์ค์ ๋ก ๋๊ฒ ๋ CPU๋ค์ ์งํฉ์ mask
์ธ์์ ์ง์ ํ ์งํฉ๊ณผ ์์คํ
์ ์ค์ ์กด์ฌํ๋ CPU๋ค์ ์งํฉ์ ๊ต์งํฉ์ด๋ค. cpuset(7)์์ ๊ธฐ์ ํ๋ "cpuset" ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉด ์ค๋ ๋๊ฐ ๋๋ CPU ์งํฉ์ ์์คํ
์์ ์ถ๊ฐ๋ก ์ ์ฝํ ์๋ ์๋ค. ์ค๋ ๋๊ฐ ๋๊ฒ ๋ ์ค์ CPU๋ค์ ์งํฉ์ ๋ํ ์ด ์ ์ฝ๋ค์ ์ปค๋์ด ์กฐ์ฉํ ์ ์ฉํ๋ค.
์์คํ
์์ ์ฌ์ฉ ๊ฐ๋ฅํ CPU๋ค์ ์๋ฅผ ์์๋ด๋ ๋ค์ํ ๋ฐฉ๋ฒ์ด ์๋ค. /proc/cpuinfo
์ ๋ด์ฉ์ ํ์ธํ๊ฑฐ๋, sysconf(3)๋ฅผ ์ด์ฉํด _SC_NPROCESSORS_CONF
๋ฐ _SC_NPROCESSORS_ONLN
๋งค๊ฐ๋ณ์์ ๊ฐ์ ์ป๊ฑฐ๋, /sys/devices/system/cpu/
ํ์ CPU ๋๋ ํฐ๋ฆฌ ๋ชฉ๋ก์ ๋ค์ฌ๋ค ๋ณผ ์ ์๋ค.
sched(7)์์ ๋ฆฌ๋ ์ค ์ค์ผ์ค๋ง ์ฒด๊ณ๋ฅผ ๊ธฐ์ ํ๋ค.
์นํ์ฑ ๋ง์คํฌ๋ ์ค๋ ๋๋ณ ์์ฑ์ด๋ฏ๋ก ์ค๋ ๋ ๊ทธ๋ฃน ๋ด์ ์ค๋ ๋๋ง๋ค ๋
๋ฆฝ์ ์ผ๋ก ์กฐ์ ํ ์ ์๋ค. gettid(2) ํธ์ถ์ด ๋ฐํํ ๊ฐ์ pid
์ธ์๋ก ์ ๋ฌํ ์ ์๋ค. pid
๋ฅผ 0์ผ๋ก ์ง์ ํ๋ฉด ํธ์ถ ์ค๋ ๋์ ์์ฑ์ ์ค์ ํ๊ฒ ๋๊ณ getpid(2) ํธ์ถ์ด ๋ฐํํ ๊ฐ์ ์ ๋ฌํ๋ฉด ์ค๋ ๋ ๊ทธ๋ฃน์ ์ฃผ ์ค๋ ๋์ ์์ฑ์ ์ค์ ํ๊ฒ ๋๋ค. (POSIX ์ค๋ ๋ API๋ฅผ ์ฐ๊ณ ์๋ค๋ฉด sched_setaffinity()
๋์ pthread_setaffinity_np(3)๋ฅผ ์ฌ์ฉํ๋ผ.)
isolcpus
๋ผ๋ ๋ถํ
์ต์
์ ์ด์ฉํด ๋ถํ
์์ ์ ํ ๊ฐ ์ด์์ CPU๋ฅผ ๊ฒฉ๋ฆฌํ ์ ์๋ค. ๊ทธ๋ฌ๋ฉด ๊ทธ CPU๋ค๋ก ์ด๋ค ํ๋ก์ธ์ค๋ ์ค์ผ์ค ๋์ง ์๋๋ค. ์ด ๋ถํ
์ต์
์ ์ฌ์ฉํ ๋ค์์๋ sched_setaffinity()
๋ cpuset(7) ๋ฉ์ปค๋์ฆ์ ํตํด์๋ง ๊ทธ ๊ฒฉ๋ฆฌ๋ CPU๋ก ํ๋ก์ธ์ค๋ฅผ ์ค์ผ์ค ํ ์ ์๋ค. ์์ธํ ๋ด์ฉ์ ์ปค๋ ์์ค ํ์ผ Documentation/admin-guide/kernel-parameters.txt
๋ฅผ ๋ณด๋ผ. ๊ทธ ํ์ผ์์ ์ธ๊ธํ๋ฏ isolcpus
๊ฐ CPU๋ฅผ ๊ฒฉ๋ฆฌํ๋ ์ ํธ ๋ฉ์ปค๋์ฆ์ด๋ค. (์ด์ ๋๋น๋๋ ๊ฒ์ ์์คํ
์์ ๋ชจ๋ ํ๋ก์ธ์ค๋ค์ CPU ์นํ์ฑ์ ์๋์ผ๋ก ์ค์ ํ๋ ๊ฒ์ด๋ค.)
fork(2)๋ฅผ ํตํด ์์ฑ๋ ์์์ ๋ถ๋ชจ์ CPU ์นํ์ฑ ๋ง์คํฌ๋ฅผ ๋ฌผ๋ ค๋ฐ๋๋ค. execve(2)๋ฅผ ๊ฑฐ์น๋ฉด์ ์นํ์ฑ ๋ง์คํฌ๊ฐ ๋ณด์กด๋๋ค.
์ด ๋งค๋ด์ผ ํ์ด์ง์์ ๊ธฐ์ ํ๋ ๊ฒ์ CPU ์นํ์ฑ ํธ์ถ์ glibc ์ธํฐํ์ด์ค์ด๋ค. ์ค์ ์์คํ
ํธ์ถ ์ธํฐํ์ด์ค๋ ์ด์ง ๋ค๋ฅธ๋ฐ, CPU ์ธํธ์ ๊ธฐ๋ฐ ๊ตฌํ์ด ๋จ์ํ ๋นํธ ๋ง์คํฌ๋ผ๋ ์ฌ์ค์ ๋ฐ์ํ์ฌ mask
์ ํ์
์ด unsigned long *
์ด๋ค.
์ฑ๊ณต ์ ์ง์ง sched_getaffinity()
์์คํ
ํธ์ถ์ mask
๋ฒํผ๋ก ๋ณต์ฌ๋ ๋ฐ์ดํธ ์๋ฅผ ๋ฐํํ๋ค. ์ด๋ cpusetsize
์ ์ปค๋ ๋ด๋ถ์์ CPU ์งํฉ ํํ์ ์ฐ๋ cpumask_t
๋ฐ์ดํฐ ํ์
์ (๋ฐ์ดํธ ๋จ์) ํฌ๊ธฐ ์ค ์์ ์ชฝ์ด๋ค.
(unsigned long *
ํ์
๋นํธ ๋ง์คํฌ๋ก CPU ๋ง์คํฌ๋ฅผ ํํํ๋) ๊ธฐ๋ฐ ์์คํ
ํธ์ถ์์๋ CPU ๋ง์คํฌ์ ํฌ๊ธฐ์ ์ด๋ค ์ ์ฝ๋ ๋์ง ์๋๋ค. ํ์ง๋ง glibc์์ ์ฐ๋ cpu_set_t
๋ฐ์ดํฐ ํ์
์ ํฌ๊ธฐ๊ฐ 128๋ฐ์ดํธ๋ก ๊ณ ์ ๋์ด ์๋ค. ์ฆ, ํํํ ์ ์๋ ๊ฐ์ฅ ํฐ CPU ๋ฒํธ๊ฐ 1023์ด๋ค. ์ปค๋์ CPU ์นํ์ฑ ๋ง์คํฌ๊ฐ 1024๋ณด๋ค ํฌ๋ฉด ๋ค์ ํํ์ ํธ์ถ์ด EINVAL
์ค๋ฅ๋ก ์คํจํ๋ค.
sched_getaffinity(pid, sizeof(cpu_set_t), &mask);
๊ทธ ์ค๋ฅ๋ cpusetsize
์ ์ง์ ๋ mask
ํฌ๊ธฐ๊ฐ ์ปค๋์์ ์ฐ๋ ์นํ์ฑ ๋ง์คํฌ ํฌ๊ธฐ๋ณด๋ค ์์ ๊ฒฝ์ฐ์ ๊ธฐ๋ฐ ์์คํ
ํธ์ถ์ด ๋ด๋๋ ๊ฒ์ด๋ค. (์์คํ
CPU ํ ํด๋ก์ง์ ๋ฐ๋ผ์ ์ปค๋ ์นํ์ฑ ๋ง์คํฌ๊ฐ ์์คํ
์์ ํ์ฑ CPU ๊ฐ์๋ณด๋ค ์๋นํ ํด ์ ์๋ค.)
์ปค๋ CPU ์นํ์ฑ ๋ง์คํฌ๊ฐ ํฐ ์์คํ
์์ ์์
ํ ๋๋ mask
์ธ์๋ฅผ ๋์ ์ผ๋ก ํ ๋นํด์ผ ํ๋ค (CPU_ALLOC(3) ์ฐธ๊ณ ). ํ์ฌ ๊ทธ๋ ๊ฒ ํ๊ธฐ ์ํ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋ง์คํฌ ํฌ๊ธฐ๋ฅผ ๋์ด๋ฉฐ (ํธ์ถ์ด EINVAL
์ค๋ฅ๋ก ์คํจํ์ง ์์ ๋๊น์ง) sched_getaffinity()
ํธ์ถ์ ํด์ ํ์ํ ๋ง์คํฌ ํฌ๊ธฐ๋ฅผ ์์๋ด๋ ๊ฒ์ด๋ค.
CPU_ALLOC(3)์ด ์์ฒญํ ๊ฒ๋ณด๋ค ์ด์ง ํฐ CPU ์ธํธ๋ฅผ ํ ๋นํ ์๋ ์์์ ์ ์ํ๋ผ. (CPU ์ธํธ๊ฐ sizeof(long)
๋จ์๋ก ํ ๋น๋ ๋นํธ ๋ง์คํฌ๋ก ๊ตฌํ๋์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.) ๊ทธ๋ก ์ธํด sched_getaffinity()
๊ฐ ์์ฒญํ ํ ๋น ํฌ๊ธฐ ๋๋จธ์์ ๋นํธ๋ฅผ ์ค์ ํ ์ ์๋๋ฐ, ์ปค๋์ ๊ทธ ๋ช ๊ฐ์ ์ถ๊ฐ ๋นํธ๋ฅผ ๋ณด๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ ํธ์ถ์๊ฐ (ํ ๋น ์์ฒญ์ ํ๋ ๋นํธ ์๋งํผ ์ํํ๋ ๊ฒ์ด ์๋๋ผ) ๋ฐํ๋ ์ธํธ์ ๋นํธ๋ค์ ์ํํ๋ฉฐ ์ค์ ๋ ๋นํธ ์๋ฅผ ์ธ๋ค๊ฐ CPU_COUNT(3)๊ฐ ๋ฐํํ ๊ฐ์ ๋๋ฌํ์ ๋ ๋ฉ์ถฐ์ผ ํ๋ค.
์๋ ํ๋ก๊ทธ๋จ์์๋ ์์ ํ๋ก์ธ์ค๋ฅผ ๋ง๋ ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ถ๋ชจ์ ์์์ ๊ฐ๊ฐ ์ง์ ํ CPU์ ์๊ธฐ๋ฅผ ํ ๋นํ๊ณ ๋์ผํ ๋ฃจํ๋ฅผ ์คํํด์ CPU ์๊ฐ์ ์ข ์๋ชจํ๋ค. ์ข ๋ฃ ์ ์ ๋ถ๋ชจ๋ ์์ ํ๋ก์ธ์ค๊ฐ ๋๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฐ๋ค. ํ๋ก๊ทธ๋จ์์ ๋ช ๋ น ํ ์ธ์๋ฅผ ์ธ ๊ฐ ๋ฐ๋๋ค. ๋ถ๋ชจ์ฉ CPU ๋ฒํธ, ์์์ฉ CPU ๋ฒํธ, ๊ทธ๋ฆฌ๊ณ ๋ ํ๋ก์ธ์ค๊ฐ ์ํํด์ผ ํ ๋ฃจํ ๋ฐ๋ณต ํ์์ด๋ค.
์๋ ๊ฒฌ๋ณธ์ด ๋ณด์ฌ ์ฃผ๋ฏ ํ๋ก๊ทธ๋จ์ด ์คํ ์ ์ฐ๋ ์ค์ ์๊ฐ๊ณผ CPU ์๊ฐ์ ์์ ์ฝ์ด ๋ด ์บ์ฑ ํจ๊ณผ์ ํ๋ก์ธ์ค๋ค์ด ๊ฐ์ CPU๋ฅผ ์ฌ์ฉ ์ค์ธ์ง ์ฌ๋ถ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๊ฒ ๋๋ค.
๋จผ์ lscpu(1)
๋ฅผ ์ด์ฉํด ์ด (x86) ์์คํ
์ ๋ ์ฝ์ด๊ฐ ์๊ณ ๊ฐ๊ฐ์ ๋ CPU๊ฐ ์๋ค๋ ๊ฒ์ ์์๋ธ๋ค.
$ lscpu | egrep -i 'core.*:|socket'
Thread(s) per core: 2
Core(s) per socket: 2
Socket(s): 1
๊ทธ๋ฆฌ๊ณ ์ธ ๊ฐ์ง ๊ฒฝ์ฐ์์ ์์ ํ๋ก๊ทธ๋จ์ ๋์ ์๊ฐ์ ์ฐ๋ค. ๋ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ CPU์์ ๋ ๋, ๋ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ ์ฝ์ด์ ๋ค๋ฅธ CPU์์ ๋ ๋, ๊ทธ๋ฆฌ๊ณ ๋ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ์ฝ์ด์ ๋ค๋ฅธ CPU์์ ๋ ๋์ด๋ค.
$ time -p ./a.out 0 0 100000000
real 14.75
user 3.02
sys 11.73
$ time -p ./a.out 0 1 100000000
real 11.52
user 3.98
sys 19.06
$ time -p ./a.out 0 3 100000000
real 7.89
user 3.29
sys 12.07
#define _GNU_SOURCE
#include <sched.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
#define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); \
} while (0)
int
main(int argc, char *argv[])
{
cpu_set_t set;
int parentCPU, childCPU;
int nloops, j;
if (argc != 4) {
fprintf(stderr, "Usage: %s parent-cpu child-cpu num-loops\n",
argv[0]);
exit(EXIT_FAILURE);
}
parentCPU = atoi(argv[1]);
childCPU = atoi(argv[2]);
nloops = atoi(argv[3]);
CPU_ZERO(&set);
switch (fork()) {
case -1: /* ์ค๋ฅ */
errExit("fork");
case 0: /* ์์ */
CPU_SET(childCPU, &set);
if (sched_setaffinity(getpid(), sizeof(set), &set) == -1)
errExit("sched_setaffinity");
for (j = 0; j < nloops; j++)
getppid();
exit(EXIT_SUCCESS);
default: /* ๋ถ๋ชจ */
CPU_SET(parentCPU, &set);
if (sched_setaffinity(getpid(), sizeof(set), &set) == -1)
errExit("sched_setaffinity");
for (j = 0; j < nloops; j++)
getppid();
wait(NULL); /* ์์ ์ข
๋ฃ ๊ธฐ๋ค๋ฆฌ๊ธฐ */
exit(EXIT_SUCCESS);
}
}
lscpu(1)
, nproc(1)
, taskset(1)
, clone(2), getcpu(2), getpriority(2), gettid(2), nice(2), sched_get_priority_max(2), sched_get_priority_min(2), sched_getscheduler(2), sched_setscheduler(2), setpriority(2), CPU_SET(3), get_nprocs(3), pthread_setaffinity_np(3), sched_getcpu(3), capabilities(7), cpuset(7), sched(7), numactl(8)
2019-03-06