sched_setattr(2) - wariua/manpages-ko GitHub Wiki

NAME

sched_setattr, sched_getattr - ์Šค์ผ€์ค„๋ง ์ •์ฑ…๊ณผ ์†์„ฑ ์„ค์ •ํ•˜๊ณ  ์–ป๊ธฐ

SYNOPSIS

#include <sched.h>

int sched_setattr(pid_t pid, struct sched_attr *attr,
                  unsigned int flags);

int sched_getattr(pid_t pid, struct sched_attr *attr,
                  unsigned int size, unsigned int flags);

DESCRIPTION

sched_setattr()

sched_setattr() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์€ pid๋กœ ์ง€์ •ํ•œ ID์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์œ„ํ•œ ์Šค์ผ€์ค„๋ง ์ •์ฑ…๊ณผ ์—ฐ๊ด€ ์†์„ฑ๋“ค์„ ์„ค์ •ํ•œ๋‹ค. pid๊ฐ€ 0์ด๋ฉด ํ˜ธ์ถœ ์Šค๋ ˆ๋“œ์˜ ์Šค์ผ€์ค„๋ง ์ •์ฑ…๊ณผ ์†์„ฑ์„ ์„ค์ •ํ•˜๊ฒŒ ๋œ๋‹ค.

policy์— ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์œผ๋กœ ํ˜„์žฌ ๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” ๋‹ค์Œ์˜ "์ผ๋ฐ˜" (์ฆ‰ ๋น„์‹ค์‹œ๊ฐ„) ์Šค์ผ€์ค„๋ง ์ •์ฑ…๋“ค์„ ์ง€์›ํ•œ๋‹ค.

SCHED_OTHER
ํ‘œ์ค€ ๋ผ์šด๋“œ ๋กœ๋นˆ ์‹œ๊ณต์œ  ์ •์ฑ…
SCHED_BATCH
"๋ฐฐ์น˜" ๋ฐฉ์‹ ํ”„๋กœ์„ธ์Šค ์‹คํ–‰
SCHED_IDLE
์•„์ฃผ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„์˜ ๋ฐฐ๊ฒฝ ์ž‘์—… ์‹คํ–‰

์‹คํ–‰ ๊ฐ€๋Šฅ ์Šค๋ ˆ๋“œ๋“ค ๊ฐ€์šด๋ฐ ์‹คํ–‰ํ•  ๊ฒƒ์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ์‹์„ ์ •๋ฐ€ํ•˜๊ฒŒ ์ œ์–ดํ•ด์•ผ ํ•˜๋Š” ํŠน์ˆ˜ํ•œ ์‹œ๊ฐ„ ์ œ์•ฝ์  ์‘์šฉ๋“ค์„ ์œ„ํ•ด ๋‹ค์–‘ํ•œ "์‹ค์‹œ๊ฐ„" ์ •์ฑ…๋“ค๋„ ์ง€์›ํ•œ๋‹ค. ํ”„๋กœ์„ธ์Šค์—์„œ ์–ธ์ œ ์ด ์ •์ฑ…๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ๊ทœ์น™์€ sched(7)๋ฅผ ๋ณด๋ผ. policy์— ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์‹ค์‹œ๊ฐ„ ์ •์ฑ…๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

SCHED_FIFO
์„ ์ž…์„ ์ถœ ์ •์ฑ…
SCHED_RR
๋ผ์šด๋“œ ๋กœ๋นˆ ์ •์ฑ…

๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” ๋‹ค์Œ ์ •์ฑ…๋„ ์ง€์›ํ•œ๋‹ค.

SCHED_DEADLINE
๋งˆ๊ฐ ์Šค์ผ€์ค„๋ง ์ •์ฑ…. ์ž์„ธํ•œ ๋‚ด์šฉ์€ sched(7) ์ฐธ๊ณ .

attr ์ธ์ž๋Š” ์ง€์ •ํ•œ ์Šค๋ ˆ๋“œ๋ฅผ ์œ„ํ•œ ์ƒˆ ์Šค์ผ€์ค„๋ง ์ •์ฑ…๊ณผ ์†์„ฑ๋“ค์„ ๊ทœ์ •ํ•˜๋Š” ๊ตฌ์กฐ์ฒด์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ์ด๋‹ค. ์ด ๊ตฌ์กฐ์ฒด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ์ด๋‹ค.

struct sched_attr {
    u32 size;              /* ์ด ๊ตฌ์กฐ์ฒด์˜ ํฌ๊ธฐ */
    u32 sched_policy;      /* ์ •์ฑ… (SCHED_*) */
    u64 sched_flags;       /* ํ”Œ๋ž˜๊ทธ */
    s32 sched_nice;        /* ๋‚˜์ด์Šค ๊ฐ’ (SCHED_OTHER,
                              SCHED_BATCH) */
    u32 sched_priority;    /* ๊ณ ์ • ์šฐ์„ ์ˆœ์œ„ (SCHED_FIFO,
                              SCHED_RR) */
    /* ๋‚˜๋จธ์ง€ ํ•„๋“œ๋“ค์€ SCHED_DEADLINE ์šฉ */
    u64 sched_runtime;
    u64 sched_deadline;
    u64 sched_period;
};

์ด ๊ตฌ์กฐ์ฒด์˜ ํ•„๋“œ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

size

์ด ํ•„๋“œ๋Š” sizeof(struct sched_attr)์ฒ˜๋Ÿผ ํ•ด์„œ ๊ตฌ์กฐ์ฒด์˜ ๋ฐ”์ดํŠธ ๋‹จ์œ„ ํฌ๊ธฐ๋กœ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค. ์ œ๊ณตํ•œ ๊ตฌ์กฐ์ฒด๊ฐ€ ์ปค๋„ ๊ตฌ์กฐ์ฒด๋ณด๋‹ค ์ž‘์œผ๋ฉด ์ถ”๊ฐ€ ํ•„๋“œ๋“ค์ด '0'์ธ ๊ฒƒ์œผ๋กœ ์ƒ์ •ํ•œ๋‹ค. ์ œ๊ณตํ•œ ๊ตฌ์กฐ์ฒด๊ฐ€ ์ปค๋„ ๊ตฌ์กฐ์ฒด๋ณด๋‹ค ํฌ๋ฉด ์ปค๋„์—์„œ๋Š” ๋ชจ๋“  ์ถ”๊ฐ€ ํ•„๋“œ๋“ค์ด 0์ธ์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค. 0์ด ์•„๋‹ˆ๋ฉด sched_setattr()์ด E2BIG ์˜ค๋ฅ˜๋กœ ์‹คํŒจํ•˜๋ฉฐ ์ปค๋„ ๊ตฌ์กฐ์ฒด์˜ ํฌ๊ธฐ๋ฅผ ๋‹ด๋„๋ก size๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค.

์‚ฌ์šฉ์ž ๊ณต๊ฐ„ sched_attr ๊ตฌ์กฐ์ฒด์˜ ํฌ๊ธฐ๊ฐ€ ์ปค๋„ ๊ตฌ์กฐ์ฒด ํฌ๊ธฐ์™€ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ๋•Œ์˜ ์œ„ ๋™์ž‘ ๋ฐฉ์‹์„ ํ†ตํ•ด ํ–ฅํ›„ ์ธํ„ฐํŽ˜์ด์Šค ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋„ˆ๋ฌด ํฐ ๊ตฌ์กฐ์ฒด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์ด์ƒํ•œ ์‘์šฉ์ด ์žˆ์„ ๋•Œ ํ–ฅํ›„์— ์ปค๋„ sched_attr ๊ตฌ์กฐ์ฒด์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง€๋”๋ผ๋„ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š๊ฒŒ ๋œ๋‹ค. ๋˜ํ•œ ํ–ฅํ›„์— ๋” ํฐ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ sched_attr ๊ตฌ์กฐ์ฒด๋ฅผ ์•Œ๊ณ  ์žˆ๋Š” ์‘์šฉ์—์„œ ์ž๊ธฐ๊ฐ€ ์ง€๊ธˆ ๊ทธ ํฐ ๊ตฌ์กฐ์ฒด๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์˜ค๋ž˜๋œ ์ปค๋„ ์ƒ์—์„œ ๋™์ž‘ ์ค‘์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค.

sched_policy
์ด ํ•„๋“œ๋Š” ์œ„์— ๋‚˜์—ดํ•œ `SCHED_*` ๊ฐ’๋“ค ์ค‘ ํ•˜๋‚˜๋กœ ์Šค์ผ€์ค„๋ง ์ •์ฑ…์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
sched_flags

์ด ํ•„๋“œ๋Š” ์Šค์ผ€์ค„๋ง ๋™์ž‘ ๋ฐฉ์‹์„ ์ œ์–ดํ•˜๋Š” ๋‹ค์Œ ํ”Œ๋ž˜๊ทธ๋ฅผ 0๊ฐœ ์ด์ƒ OR ํ•ด์„œ ๋‹ด๋Š”๋‹ค.

SCHED_FLAG_RESET_ON_FORK
fork(2)๋กœ ์ƒ์„ฑ๋œ ์ž์‹์ด ํŠน๊ถŒ์  ์Šค์ผ€์ค„๋ง ์ •์ฑ…์„ ๋ฌผ๋ ค๋ฐ›์ง€ ์•Š๋Š”๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ sched(7) ์ฐธ๊ณ .
SCHED_FLAG_RECLAIM (๋ฆฌ๋ˆ…์Šค 4.13๋ถ€ํ„ฐ)
์ด ํ”Œ๋ž˜๊ทธ๋Š” SCHED_DEADLINE ์Šค๋ ˆ๋“œ๊ฐ€ ๋‹ค๋ฅธ ์‹ค์‹œ๊ฐ„ ์Šค๋ ˆ๋“œ์—์„œ ์•ˆ ์“ด ๋Œ€์—ญํญ์„ ๊ฐ€์ ธ๋‹ค ์“ธ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
SCHED_FLAG_DL_OVERRUN (๋ฆฌ๋ˆ…์Šค 4.16๋ถ€ํ„ฐ)

์ด ํ”Œ๋ž˜๊ทธ๋Š” SCHED_DEADLINE ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰ ์‹œ๊ฐ„์„ ์ดˆ๊ณผํ–ˆ์„ ๋•Œ ์‘์šฉ์—์„œ ์•Œ๋ฆผ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. (์˜ˆ๋ฅผ ๋“ค๋ฉด) ๋œ ์„ธ๋ฐ€ํ•œ ์‹คํ–‰ ์‹œ๊ฐ„ ๊ณ„์‚ฐ์ด๋‚˜ ๋ถ€์ •ํ™•ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜ ํ• ๋‹น ๋•Œ๋ฌธ์— ๊ทธ๋ ‡๊ฒŒ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค. ์•Œ๋ฆผ์€ SIGXCPU ์‹œ๊ทธ๋„ ํ˜•ํƒœ์ด๊ณ  ์ดˆ๊ณผ ๋•Œ๋งˆ๋‹ค ์ƒ์„ฑ๋œ๋‹ค.

๊ทธ SIGXCPU ์‹œ๊ทธ๋„์€ ์Šค๋ ˆ๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ–ฅํ•œ๋‹ค. (signal(7) ์ฐธ๊ณ .) ์ด๋Š” ๋ฒ„๊ทธ๋ผ๊ณ  ๋ณผ ์ˆ˜๋„ ์žˆ๋‹ค. sched_setattr()์€ ์Šค๋ ˆ๋“œ๋ณ„ ์†์„ฑ์„ ์„ค์ •ํ•˜๋Š” ๋ฐ ์“ฐ์ด๊ณ  ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์‹คํ–‰ ์‹œ๊ฐ„์ด ์ดˆ๊ณผํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ์•„๋‹Œ ํ”„๋กœ์„ธ์Šค ๋‚ด ์Šค๋ ˆ๋“œ๋กœ ํ”„๋กœ์„ธ์Šค ์ง€ํ–ฅ ์‹œ๊ทธ๋„์ด ์ „๋‹ฌ๋˜๋ฉด ์‘์šฉ์—์„œ๋Š” ์–ด๋А ์Šค๋ ˆ๋“œ์—์„œ ์ดˆ๊ณผ๊ฐ€ ์ผ์–ด๋‚ฌ๋Š”์ง€ ์•Œ ๋ฐฉ๋ฒ•์ด ์—†๋‹ค.

sched_nice
์ด ํ•„๋“œ๋Š” `sched_policy`๋ฅผ `SCHED_OTHER`๋‚˜ `SCHED_BATCH`๋กœ ์ง€์ •ํ•  ๋•Œ ์„ค์ •ํ•  ๋‚˜์ด์Šค ๊ฐ’์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋‚˜์ด์Šค ๊ฐ’์€ -20(๋†’์€ ์šฐ์„ ์ˆœ์œ„)์—์„œ +19(๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„)๊นŒ์ง€ ๋ฒ”์œ„์˜ ์ˆ˜์ด๋‹ค. sched(7) ์ฐธ๊ณ .
sched_priority
์ด ํ•„๋“œ๋Š” `sched_policy`๋ฅผ `SCHED_FIFO`๋‚˜ `SCHED_RR`๋กœ ์ง€์ •ํ•  ๋•Œ ์„ค์ •ํ•  ๊ณ ์ • ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ด ์ •์ฑ…๋“ค์—์„œ ํ—ˆ์šฉํ•˜๋Š” ์šฐ์„ ์ˆœ์œ„ ๋ฒ”์œ„๋ฅผ sched_get_priority_min(2)๊ณผ sched_get_priority_max(2)๋ฅผ ์ด์šฉํ•ด ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋ฅธ ์ •์ฑ…์—์„œ๋Š” ์ด ํ•„๋“œ๋ฅผ 0์œผ๋กœ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค.
sched_runtime
์ด ํ•„๋“œ๋Š” ๋งˆ๊ฐ ์Šค์ผ€์ค„๋ง์˜ "๋Ÿฐํƒ€์ž„" ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋‚˜๋…ธ์ดˆ ๋‹จ์œ„๋กœ ๋‚˜ํƒ€๋‚ธ ๊ฐ’์ด๋‹ค. ์ด ํ•„๋“œ์™€ ๋‹ค์Œ์˜ ๋‘ ํ•„๋“œ๋Š” `SCHED_DEADLINE` ์Šค์ผ€์ค„๋ง์—์„œ๋งŒ ์“ด๋‹ค. ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ sched(7)๋ฅผ ๋ณด๋ผ.
sched_deadline
์ด ํ•„๋“œ๋Š” ๋งˆ๊ฐ ์Šค์ผ€์ค„๋ง์˜ "๋งˆ๊ฐ" ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋‚˜๋…ธ์ดˆ ๋‹จ์œ„๋กœ ๋‚˜ํƒ€๋‚ธ ๊ฐ’์ด๋‹ค.
sched_period
์ด ํ•„๋“œ๋Š” ๋งˆ๊ฐ ์Šค์ผ€์ค„๋ง์˜ "์ฃผ๊ธฐ" ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋‚˜๋…ธ์ดˆ ๋‹จ์œ„๋กœ ๋‚˜ํƒ€๋‚ธ ๊ฐ’์ด๋‹ค.

flags ์ธ์ž๋Š” ํ–ฅํ›„ ์ธํ„ฐํŽ˜์ด์Šค ํ™•์žฅ์„ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค. ํ˜„์žฌ ๊ตฌํ˜„์—์„œ๋Š” 0์œผ๋กœ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค.

sched_getattr()

sched_getattr() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์€ pid๋กœ ์ง€์ •ํ•œ ID์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์œ„ํ•œ ์Šค์ผ€์ค„๋ง ์ •์ฑ…๊ณผ ๊ด€๋ จ ์†์„ฑ๋“ค์„ ๊ฐ€์ ธ์˜จ๋‹ค. pid๊ฐ€ 0์ด๋ฉด ํ˜ธ์ถœ ์Šค๋ ˆ๋“œ์˜ ์Šค์ผ€์ค„๋ง ์ •์ฑ…๊ณผ ์†์„ฑ์„ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋œ๋‹ค.

size ์ธ์ž๋Š” ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์— ์•Œ๋ ค์ ธ ์žˆ๋Š” sched_attr ๊ตฌ์กฐ์ฒด์˜ ํฌ๊ธฐ๋กœ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ ๊ฐ’์ด ์ ์–ด๋„ ์ตœ์ดˆ ๊ณต๊ฐœ๋œ sched_attr ๊ตฌ์กฐ์ฒด์˜ ํฌ๊ธฐ๋งŒํผ์€ ๋˜์–ด์•ผ ํ•˜๋ฉฐ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด EINVAL ์˜ค๋ฅ˜๋กœ ํ˜ธ์ถœ์ด ์‹คํŒจํ•œ๋‹ค.

์–ป์–ด ๋‚ธ ์Šค์ผ€์ค„๋ง ์†์„ฑ๋“ค์ด attr์ด ๊ฐ€๋ฆฌํ‚ค๋Š” sched_attr ๊ตฌ์กฐ์ฒด์˜ ํ•„๋“œ๋“ค๋กœ ๊ฐ„๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ปค๋„์—์„œ attr.size๋ฅผ ์ž๊ธฐ sched_attr ๊ตฌ์กฐ์ฒด์˜ ํฌ๊ธฐ๋กœ ์„ค์ •ํ•œ๋‹ค.

ํ˜ธ์ถœ์ž๊ฐ€ ์ œ๊ณตํ•œ attr ๋ฒ„ํผ๊ฐ€ ์ปค๋„์˜ sched_attr ๊ตฌ์กฐ์ฒด๋ณด๋‹ค ํฌ๋ฉด ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ๊ตฌ์กฐ์ฒด์˜ ์ถ”๊ฐ€ ๋ฐ”์ดํŠธ๋“ค์„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค. ํ˜ธ์ถœ์ž๊ฐ€ ์ œ๊ณตํ•œ ๊ตฌ์กฐ์ฒด๊ฐ€ ์ปค๋„์˜ sched_attr ๊ตฌ์กฐ์ฒด๋ณด๋‹ค ์ž‘๊ณ  ์ œ๊ณต๋œ ๋ฒ”์œ„ ๋ฐ–์—์„œ ์ปค๋„์ด ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•˜๋ฉด sched_getattr()์ด E2BIG ์˜ค๋ฅ˜๋กœ ์‹คํŒจํ•œ๋‹ค. sched_setattr()์—์„œ์ฒ˜๋Ÿผ ์ด๋Ÿฐ ๋™์ž‘ ๋ฐฉ์‹์„ ํ†ตํ•ด ํ–ฅํ›„ ์ธํ„ฐํŽ˜์ด์Šค ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

flags ์ธ์ž๋Š” ํ–ฅํ›„ ์ธํ„ฐํŽ˜์ด์Šค ํ™•์žฅ์„ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค. ํ˜„์žฌ ๊ตฌํ˜„์—์„œ๋Š” 0์œผ๋กœ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค.

RETURN VALUE

์„ฑ๊ณต ์‹œ sched_setattr()๊ณผ sched_getattr()์€ 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์˜ค๋ฅ˜ ์‹œ -1์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ์˜ค๋ฅ˜ ์›์ธ์„ ๋‚˜ํƒ€๋‚ด๋„๋ก errno๋ฅผ ์„ค์ •ํ•œ๋‹ค.

ERRORS

sched_getattr()๊ณผ sched_setattr() ๋ชจ๋‘ ๋‹ค์Œ ์ด์œ ๋กœ ์‹คํŒจํ•  ์ˆ˜ ์žˆ๋‹ค.

EINVAL
attr์ด NULL์ด๊ฑฐ๋‚˜, pid๊ฐ€ ์Œ์ˆ˜์ด๊ฑฐ๋‚˜, flags๊ฐ€ 0์ด ์•„๋‹ˆ๋‹ค.
ESRCH
ID๊ฐ€ pid์ธ ์Šค๋ ˆ๋“œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค.

๋”๋ถˆ์–ด sched_getattr()์ด ๋‹ค์Œ ์ด์œ ๋กœ ์‹คํŒจํ•  ์ˆ˜ ์žˆ๋‹ค.

E2BIG
size์™€ attr๋กœ ์ง€์ •ํ•œ ๋ฒ„ํผ๊ฐ€ ๋„ˆ๋ฌด ์ž‘๋‹ค.
EINVAL
size๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š๋‹ค. ์ฆ‰, sched_attr ๊ตฌ์กฐ์ฒด์˜ ์ตœ์ดˆ ๋ฒ„์ „(48๋ฐ”์ดํŠธ)๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ์‹œ์Šคํ…œ ํŽ˜์ด์ง€ ํฌ๊ธฐ๋ณด๋‹ค ํฌ๋‹ค.

๋”๋ถˆ์–ด sched_setattr()์ด ๋‹ค์Œ ์ด์œ ๋กœ ์‹คํŒจํ•  ์ˆ˜ ์žˆ๋‹ค.

E2BIG
size์™€ attr๋กœ ์ง€์ •ํ•œ ๋ฒ„ํผ๊ฐ€ ์ปค๋„ ๊ตฌ์กฐ์ฒด๋ณด๋‹ค ํฌ๋ฉฐ ์ถ”๊ฐ€ ๋ฐ”์ดํŠธ๋“ค ์ค‘ ์ผ๋ถ€๊ฐ€ 0์ด ์•„๋‹ˆ๋‹ค.
EBUSY
SCHED_DEADLINE ์Šน์ธ ํ†ต์ œ ์‹คํŒจ. sched(7) ์ฐธ๊ณ .
EINVAL
attr.sched_policy๊ฐ€ ์•Œ๋ ค์ง„ ์ •์ฑ…์ด ์•„๋‹ˆ๊ฑฐ๋‚˜, attr.sched_flags๊ฐ€ SCHED_FLAG_RESET_ON_FORK ์™ธ์˜ ํ”Œ๋ž˜๊ทธ๋ฅผ ๋‹ด๊ณ  ์žˆ๊ฑฐ๋‚˜, attr.sched_priority๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š๊ฑฐ๋‚˜, attr.sched_policy๊ฐ€ SCHED_DEADLINE์ธ๋ฐ attr ๋‚ด์˜ ๋งˆ๊ฐ ์Šค์ผ€์ค„๋ง ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š๋‹ค.
EPERM
ํ˜ธ์ถœ์ž๊ฐ€ ์ ์ ˆํ•œ ํŠน๊ถŒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค.
EPERM
pid๋กœ ์ง€์ •ํ•œ ์Šค๋ ˆ๋“œ์˜ CPU ์นœํ™”์„ฑ ๋งˆ์Šคํฌ์— ์‹œ์Šคํ…œ์˜ ๋ชจ๋“  CPU๋“ค์ด ํฌํ•จ๋ผ ์žˆ์ง€ ์•Š๋‹ค. (sched_setaffinity(2) ์ฐธ๊ณ .)

VERSIONS

๋ฆฌ๋ˆ…์Šค 3.14์—์„œ ์ด ์‹œ์Šคํ…œ ํ˜ธ์ถœ๋“ค์ด ์ฒ˜์Œ ๋“ฑ์žฅํ–ˆ๋‹ค.

CONFORMING TO

์ด ์‹œ์Šคํ…œ ํ˜ธ์ถœ๋“ค์€ ๋น„ํ‘œ์ค€ ๋ฆฌ๋ˆ…์Šค ํ™•์žฅ์ด๋‹ค.

NOTES

sched_setattr()์€ sched_setscheduler(2), sched_setparam(2), nice(2), ๊ทธ๋ฆฌ๊ณ  (ํŠน์ • ์‚ฌ์šฉ์ž์—๊ฒŒ ์†ํ•œ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋‚˜ ํŠน์ • ๊ทธ๋ฃน์˜ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋“ค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ์ œ์™ธํ•˜๊ณ ) setpriority(2)์˜ ์ƒ์œ„์ง‘ํ•ฉ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ์œ ์‚ฌํ•˜๊ฒŒ sched_getattr()์€ sched_getscheduler(2), sched_getparam(2), ๊ทธ๋ฆฌ๊ณ  (๋ถ€๋ถ„์ ์œผ๋กœ) getpriority(2)์˜ ์ƒ์œ„์ง‘ํ•ฉ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

BUGS

๋ฆฌ๋ˆ…์Šค ๋ฒ„์ „ 3.15๊นŒ์ง€์—์„œ ERRORS ์ ˆ์—์„œ ๊ธฐ์ˆ ํ•˜๋Š” ๊ฒฝ์šฐ์— sched_setattr()์ด E2BIG ๋Œ€์‹  EFAULT ์˜ค๋ฅ˜๋กœ ์‹คํŒจํ–ˆ๋‹ค.

SEE ALSO

chrt(1), nice(2), sched_get_priority_max(2), sched_get_priority_min(2), sched_getaffinity(2), sched_getparam(2), sched_getscheduler(2), sched_rr_get_interval(2), sched_setaffinity(2), sched_setparam(2), sched_setscheduler(2), sched_yield(2), setpriority(2), pthread_setschedparam(3), pthread_setschedparam(3), pthread_setschedprio(3), capabilities(7), cpuset(7), sched(7)


2019-03-06

โš ๏ธ **GitHub.com Fallback** โš ๏ธ