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

NAME

ioprio_get, ioprio_set - I/O ์Šค์ผ€์ค„๋ง ํด๋ž˜์Šค ๋ฐ ์šฐ์„ ์ˆœ์œ„ ์–ป๊ธฐ/์„ค์ •ํ•˜๊ธฐ

SYNOPSIS

int ioprio_get(int which, int who);
int ioprio_set(int which, int who, int ioprio);

์ฃผ์˜: ์ด ์‹œ์Šคํ…œ ํ˜ธ์ถœ์— ๋Œ€ํ•œ glibc ๋ž˜ํผ๊ฐ€ ์—†๋‹ค. NOTES ์ฐธ๊ณ .

DESCRIPTION

ioprio_get() ๋ฐ ioprio_set() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์€ ํ•œ ๊ฐœ ๋˜๋Š” ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์˜ I/O ์Šค์ผ€์ค„๋ง ํด๋ž˜์Šค์™€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์–ป๊ณ  ์„ค์ •ํ•œ๋‹ค.

which์™€ who ์ธ์ž๋Š” ์‹œ์Šคํ…œ ํ˜ธ์ถœ์˜ ๋™์ž‘ ๋Œ€์ƒ์ด ๋˜๋Š” ์Šค๋ ˆ๋“œ(๋“ค)์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. which ์ธ์ž๋Š” who๋ฅผ ํ•ด์„ํ•˜๋Š” ๋ฐฉ์‹์„ ๊ฒฐ์ •ํ•˜๋ฉฐ ๋‹ค์Œ ๊ฐ’๋“ค ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

IOPRIO_WHO_PROCESS
who๊ฐ€ ํ”„๋กœ์„ธ์Šค ID๋‚˜ ์Šค๋ ˆ๋“œ ID์ด๋ฉฐ ๋‹จ์ผ ํ”„๋กœ์„ธ์Šค ๋‚ด์ง€ ์Šค๋ ˆ๋“œ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. who๊ฐ€ 0์ด๋ฉด ํ˜ธ์ถœ ์Šค๋ ˆ๋“œ๊ฐ€ ๋Œ€์ƒ์ด๋‹ค.
IOPRIO_WHO_PGRP
who๊ฐ€ ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน ID์ด๋ฉฐ ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน์˜ ๊ตฌ์„ฑ์› ๋ชจ๋‘๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. who๊ฐ€ 0์ด๋ฉด ํ˜ธ์ถœ์ž๊ฐ€ ๊ตฌ์„ฑ์›์ธ ํ”„๋กœ์„ธ์Šค ๊ทธ๋ฃน์ด ๋Œ€์ƒ์ด๋‹ค.
IOPRIO_WHO_USER
who๊ฐ€ ์‚ฌ์šฉ์ž ID์ด๋ฉฐ ์‹ค์ œ UID๊ฐ€ ์ผ์น˜ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ๋ชจ๋‘๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

ioprio_get() ํ˜ธ์ถœ ์‹œ์— which๊ฐ€ IOPRIO_WHO_PGRP์ด๋‚˜ IOPRIO_WHO_USER์ด๊ณ  who์— ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ฑธ๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค ์ „์ฒด์—์„œ ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋œ๋‹ค. ์–ด๋–ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ๋†’๋‹ค๋Š” ๊ฒƒ์€ ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ํด๋ž˜์Šค์— ์†ํ•˜๊ฑฐ๋‚˜ (IOPRIO_CLASS_RT๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ํด๋ž˜์Šค์ด๊ณ  IOPRIO_CLASS_IDLE์ด ๊ฐ€์žฅ ๋‚ฎ์Œ) ์•„๋‹ˆ๋ฉด ๊ฐ™์€ ์šฐ์„ ์ˆœ์œ„ ํด๋ž˜์Šค์— ์†ํ•˜๋ฉด์„œ ์šฐ์„ ์ˆœ์œ„ ๋‹จ๊ณ„๊ฐ€ ๋” ๋†’์€ ๊ฒƒ์ด๋‹ค (๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„ ์ˆ˜๊ฐ€ ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ๋‹จ๊ณ„๋ฅผ ๋œปํ•จ).

ioprio_set()์— ์ฃผ๋Š” ioprio ์ธ์ž๋Š” ๋Œ€์ƒ ํ”„๋กœ์„ธ์Šค(๋“ค)์— ๋ถ€์—ฌํ•  ์Šค์ผ€์ค„๋ง ํด๋ž˜์Šค์™€ ์šฐ์„ ์ˆœ์œ„ ๋ชจ๋‘๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋น„ํŠธ ๋งˆ์Šคํฌ์ด๋‹ค. ๋‹ค์Œ ๋งคํฌ๋กœ๋ฅผ ์‚ฌ์šฉํ•ด ioprio ๊ฐ’์„ ํ•ฉ์น˜๊ฑฐ๋‚˜ ๋ถ„ํ•ดํ•œ๋‹ค.

IOPRIO_PRIO_VALUE(class, data)
์ด ๋งคํฌ๋กœ๋Š” ์Šค์ผ€์ค„๋ง ํด๋ž˜์Šค(class)์™€ ์šฐ์„ ์ˆœ์œ„(data)๋ฅผ ๋ฐ›์•„์„œ ๋‘ ๊ฐ’์„ ํ•ฉ์นœ ioprio ๊ฐ’์„ ๋งŒ๋“ค์–ด ๋งคํฌ๋กœ ๊ฒฐ๊ณผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
IOPRIO_PRIO_CLASS(mask)
์ด ๋งคํฌ๋กœ๋Š” mask(ioprio ๊ฐ’)๋ฅผ ๋ฐ›์•„์„œ I/O ํด๋ž˜์Šค ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ฆ‰ IOPRIO_CLASS_RT, IOPRIO_CLASS_BE, IOPRIO_CLASS_IDLE ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
IOPRIO_PRIO_DATA(mask)
์ด ๋งคํฌ๋กœ๋Š” mask(ioprio ๊ฐ’)๋ฅผ ๋ฐ›์•„์„œ ์šฐ์„ ์ˆœ์œ„(data) ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์Šค์ผ€์ค„๋ง ํด๋ž˜์Šค์™€ ์šฐ์„ ์ˆœ์œ„์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด์™€ ioprio๋ฅผ 0์œผ๋กœ ์ง€์ •ํ–ˆ์„ ๋•Œ์˜ ์˜๋ฏธ์— ๋Œ€ํ•ด์„  NOTES ์ ˆ์„ ์ฐธ๊ณ ํ•˜๋ผ.

์ฝ๊ธฐ์™€ ๋™๊ธฐ์ ์ธ (O_DIRECT, O_SYNC) ์“ฐ๊ธฐ์—์„œ I/O ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง€์›ํ•œ๋‹ค. ๋น„๋™๊ธฐ ์“ฐ๊ธฐ์—๋Š” I/O ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋ฐ, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ๋งฅ๋ฝ ๋ฐ–์—์„œ ๊ฐœ์‹œ๋˜๋ฏ€๋กœ ํ”„๋กœ๊ทธ๋žจ๋ณ„ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

RETURN VALUE

์„ฑ๊ณต ์‹œ ioprio_get()์€ which์™€ who๋กœ ์ง€์ •ํ•œ ๊ธฐ์ค€์— ๋งž๋Š” ํ”„๋กœ์„ธ์Šค๋“ค ์ค‘ ๊ฐ€์žฅ ๋†’์€ I/O ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค์˜ ioprio ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์˜ค๋ฅ˜ ์‹œ -1์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ์˜ค๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋„๋ก errno๋ฅผ ์„ค์ •ํ•œ๋‹ค.

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

ERRORS

EINVAL
which๋‚˜ ioprio์— ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฐ’. ioprio์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์Šค์ผ€์ค„๋Ÿฌ ํด๋ž˜์Šค์™€ ์šฐ์„ ์ˆœ์œ„๋Š” NOTES ์ ˆ ์ฐธ๊ณ .
EPERM
ํ˜ธ์ถœ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ง€์ •ํ•œ ํ”„๋กœ์„ธ์Šค(๋“ค)์—๊ฒŒ ๊ทธ ioprio๋ฅผ ๋ถ€์—ฌํ•  ํŠน๊ถŒ์ด ์—†๋‹ค. ioprio_set()์— ํ•„์š”ํ•œ ํŠน๊ถŒ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ NOTES ์ ˆ ์ฐธ๊ณ .
ESRCH
which์™€ who์˜ ์ง€์ • ๋‚ด์šฉ์— ์ผ์น˜ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค.

VERSIONS

๋ฆฌ๋ˆ…์Šค ์ปค๋„ 2.6.13๋ถ€ํ„ฐ ์ด ์‹œ์Šคํ…œ ํ˜ธ์ถœ๋“ค์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

CONFORMING TO

์ด ์‹œ์Šคํ…œ ํ˜ธ์ถœ๋“ค์€ ๋ฆฌ๋ˆ…์Šค ์ „์šฉ์ด๋‹ค.

NOTES

glibc์—์„œ ์ด ์‹œ์Šคํ…œ ํ˜ธ์ถœ์˜ ๋ž˜ํผ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค. syscall(2)์„ ์ด์šฉํ•ด ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค.

๋‘˜ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค ๋‚ด์ง€ ์Šค๋ ˆ๋“œ๊ฐ€ I/O ๋ฌธ๋งฅ์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค. clone(2)์— CLONE_IO ํ”Œ๋ž˜๊ทธ๋ฅผ ์จ์„œ ํ˜ธ์ถœํ•œ ๊ฒฝ์šฐ๊ฐ€ ๊ทธ๋ ‡๋‹ค. ํ•˜์ง€๋งŒ ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์Šค๋ ˆ๋“œ๋“ค์ด ๊ฐ™์€ I/O ๋ฌธ๋งฅ์„ ๊ณต์œ ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ํ”„๋กœ์„ธ์Šค์˜ ๋ชจ๋“  ์Šค๋ ˆ๋“œ์˜ I/O ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ฐ”๊พธ๊ณ  ์‹ถ๋‹ค๋ฉด ์Šค๋ ˆ๋“œ ๊ฐ๊ฐ์— ioprio_set()์„ ํ˜ธ์ถœํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ๋•Œ ํ•„์š”ํ•œ ์Šค๋ ˆ๋“œ ID๋Š” gettid(2)๋‚˜ clone(2)์ด ๋ฐ˜ํ™˜ํ•œ ๊ฐ’์ด๋‹ค.

I/O ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง€์›ํ•˜๋Š” I/O ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์—๋งŒ ์ด ์‹œ์Šคํ…œ ํ˜ธ์ถœ๋“ค์— ํšจ๋ ฅ์ด ์žˆ๋‹ค. ์ปค๋„ 2.6.17 ํ˜„์žฌ ๊ทธ๋Ÿฐ ์œ ์ผํ•œ ์Šค์ผ€์ค„๋Ÿฌ๋Š” Completely Fair Queuing (CFQ) I/O ์Šค์ผ€์ค„๋Ÿฌ์ด๋‹ค.

์Šค๋ ˆ๋“œ์— ์–ด๋–ค I/O ์Šค์ผ€์ค„๋Ÿฌ๋„ ์„ค์ •ํ•˜์ง€ ์•Š์•˜์œผ๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ I/O ์šฐ์„ ์ˆœ์œ„๊ฐ€ CPU ๋‚˜์ด์Šค ๊ฐ’(setpriority(2))์„ ๋”ฐ๋ฅธ๋‹ค. ๋ฆฌ๋ˆ…์Šค ์ปค๋„ ๋ฒ„์ „ 2.6.24 ์ „์—์„œ๋Š” ioprio_set()์œผ๋กœ I/O ์šฐ์„ ์ˆœ์œ„๋ฅผ ํ•œ๋ฒˆ ์„ค์ •ํ•˜๊ณ  ๋‚˜๋ฉด I/O ์Šค์ผ€์ค„๋ง ๋™์ž‘์„ ๊ธฐ๋ณธ์œผ๋กœ ๋˜๋Œ๋ฆด ๋ฐฉ๋ฒ•์ด ์—†์—ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค 2.6.24๋ถ€ํ„ฐ๋Š” ioprio๋ฅผ 0์œผ๋กœ ์ง€์ •ํ•ด์„œ ๊ธฐ๋ณธ I/O ์Šค์ผ€์ค„๋ง ๋™์ž‘์œผ๋กœ ๋˜๋Œ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

I/O ์Šค์ผ€์ค„๋Ÿฌ ์„ ํƒ

I/O ์Šค์ผ€์ค„๋Ÿฌ๋Š” ํŠน์ˆ˜ ํŒŒ์ผ /sys/block/<device>/queue/scheduler๋ฅผ ํ†ตํ•ด ์žฅ์น˜๋ณ„๋กœ ์„ ํƒํ•œ๋‹ค.

/sys ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ํ˜„์žฌ I/O ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ๋ช…๋ น์€ ํ˜„์žฌ ์ปค๋„์— ์ ์žฌ๋œ ๋ชจ๋“  ์Šค์ผ€์ค„๋Ÿฌ๋“ค์˜ ๋ชฉ๋ก์„ ๋ณด์—ฌ ์ค€๋‹ค.

$ cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]

๊บฝ์‡ ๊ด„ํ˜ธ๊ฐ€ ์ณ์ง„ ๊ฒŒ ๊ทธ ์žฅ์น˜(์—ฌ๊ธฐ์„  sda)์— ์‹ค์ œ ์‚ฌ์šฉ ์ค‘์ธ ์Šค์ผ€์ค„๋Ÿฌ์ด๋‹ค. ๋‹ค๋ฅธ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ์„ ํƒํ•˜๋ ค๋ฉด ์ด ํŒŒ์ผ์— ์ƒˆ ์Šค์ผ€์ค„๋Ÿฌ์˜ ์ด๋ฆ„์„ ๊ธฐ๋กํ•˜๋ฉด ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ๋ช…๋ น์€ sda ์žฅ์น˜์˜ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ cfq๋กœ ์„ค์ •ํ•œ๋‹ค.

$ su
Password:
# echo cfq > /sys/block/sda/queue/scheduler

Completely Fair Queuing (CFQ) I/O ์Šค์ผ€์ค„๋Ÿฌ

(CFQ Time Sliced๋ผ๊ณ ๋„ ํ•˜๋Š”) ๋ฒ„์ „ 3๋ถ€ํ„ฐ CFQ์—์„œ๋Š” CPU ์Šค์ผ€์ค„๋ง๊ณผ ๋น„์Šทํ•œ I/O ๋‚˜์ด์Šค ๋‹จ๊ณ„๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. ๊ทธ ๋‚˜์ด์Šค ๋‹จ๊ณ„๋“ค์„ ์„ธ ๊ฐ€์ง€ ์Šค์ผ€์ค„๋ง ํด๋ž˜์Šค๋กœ ๋ฌถ์œผ๋ฉฐ, ๊ฐ ํด๋ž˜์Šค๋งˆ๋‹ค ํ•œ ๊ฐœ ์ด์ƒ์˜ ์šฐ์„ ์ˆœ์œ„ ๋‹จ๊ณ„๊ฐ€ ์žˆ๋‹ค.

IOPRIO_CLASS_RT (1)
์‹ค์‹œ๊ฐ„ I/O ํด๋ž˜์Šค์ด๋‹ค. ์ด ์Šค์ผ€์ค„๋ง ํด๋ž˜์Šค์—๋Š” ๋‹ค๋ฅธ ์–ด๋–ค ํด๋ž˜์Šค๋ณด๋‹ค ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ค€๋‹ค. ์ฆ‰ ์ด ํด๋ž˜์Šค์˜ ํ”„๋กœ์„ธ์Šค๋“ค์— ๋งค๋ฒˆ ์ตœ์šฐ์„  ๋””์Šคํฌ ์ ‘๊ทผ๊ถŒ์„ ์ค€๋‹ค. ๋”ฐ๋ผ์„œ ์ด I/O ํด๋ž˜์Šค๋Š” ์กฐ์‹ฌํ•ด์„œ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. I/O๊ฐ€ ์‹ค์‹œ๊ฐ„์ธ ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜๊ฐ€ ์ „์ฒด ์‹œ์Šคํ…œ์„ ๊ตถ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์‹ค์‹œ๊ฐ„ ํด๋ž˜์Šค ๋‚ด์—๋Š” 8๋‹จ๊ณ„์˜ ํด๋ž˜์Šค ๋ฐ์ดํ„ฐ(์šฐ์„ ์ˆœ์œ„)๊ฐ€ ์žˆ์–ด์„œ ์ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ ์„œ๋น„์Šค๋งˆ๋‹ค ์ •ํ™•ํžˆ ์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜ ๋””์Šคํฌ๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š”์ง€ ๊ฒฐ์ •ํ•œ๋‹ค. ๊ฐ€์žฅ ๋†’์€ ์‹ค์‹œ๊ฐ„ ์šฐ์„ ์ˆœ์œ„ ๋‹จ๊ณ„๋Š” 0์ด๊ณ  ๊ฐ€์žฅ ๋‚ฎ์€ ๋‹จ๊ณ„๋Š” 7์ด๋‹ค. ํ–ฅํ›„์—๋Š” ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์†๋„๋ฅผ ์ „๋‹ฌํ•ด์„œ ๋” ์ง์ ‘์ ์œผ๋กœ ์„ฑ๋Šฅ๊ณผ ์—ฐ๊ฒฐ๋˜๋„๋ก ๋ฐ”๋€” ์ˆ˜๋„ ์žˆ๋‹ค.
IOPRIO_CLASS_BE (2)
์ตœ์„  ์Šค์ผ€์ค„๋ง ํด๋ž˜์Šค์ด๋‹ค. ํŠน๋ณ„ํžˆ I/O ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์€ ํ”„๋กœ์„ธ์Šค๋“ค์˜ ๊ธฐ๋ณธ๊ฐ’์ด๋‹ค. ํด๋ž˜์Šค ๋ฐ์ดํ„ฐ(์šฐ์„ ์ˆœ์œ„)๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ I/O ๋Œ€์—ญํญ์„ ์–ป๊ฒŒ ๋ ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค. ์ตœ์„  ์šฐ์„ ์ˆœ์œ„ ๋‹จ๊ณ„๋“ค์€ CPU ๋‚˜์ด์Šค ๊ฐ’๊ณผ ์œ ์‚ฌํ•˜๋‹ค. (getpriority(2) ์ฐธ๊ณ .) ์šฐ์„ ์ˆœ์œ„ ๋‹จ๊ณ„๋Š” ์ตœ์„  ์Šค์ผ€์ค„๋ง ํด๋ž˜์Šค ๋‚ด์˜ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋“ค์— ๋Œ€ํ•œ ์ƒ๋Œ€์  ์šฐ์„ ๋„๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. ์šฐ์„ ์ˆœ์œ„ ๋‹จ๊ณ„์˜ ๋ฒ”์œ„๋Š” 0(์ตœ๊ณ )์—์„œ 7(์ตœ์ €)๊นŒ์ง€์ด๋‹ค.
IOPRIO_CLASS_IDLE (3)
์œ ํœด ์Šค์ผ€์ค„๋ง ํด๋ž˜์Šค์ด๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ ๋™์ž‘ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ๋””์Šคํฌ๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—†์„ ๋•Œ์—๋งŒ I/O ์‹œ๊ฐ„์„ ์–ป๋Š”๋‹ค. ์œ ํœด ํด๋ž˜์Šค์—๋Š” ํด๋ž˜์Šค ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค. ํ”„๋กœ์„ธ์Šค์— ์ด ์šฐ์„ ์ˆœ์œ„ ํด๋ž˜์Šค๋ฅผ ๋ถ€์—ฌํ•  ๋•Œ๋Š” ์ฃผ์˜ํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š”๋ฐ, ๋” ๋†’์€ ์šฐ์„ ๋„์˜ ํ”„๋กœ์„ธ์Šค๋“ค์ด ๊ณ„์†ํ•ด์„œ ๋””์Šคํฌ์— ์ ‘๊ทผํ•˜๋ฉด ๊ทธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ตถ์ฃผ๋ฆฌ๊ฒŒ ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

CFQ I/O ์Šค์ผ€์ค„๋Ÿฌ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๋‚ด์šฉ๊ณผ ์˜ˆ์‹œ ํ”„๋กœ๊ทธ๋žจ์€ ์ปค๋„ ์†Œ์Šค ํŒŒ์ผ Documentation/block/ioprio.txt๋ฅผ ์ฐธ๊ณ ํ•˜๋ผ.

I/O ์šฐ์„ ์ˆœ์œ„ ์„ค์ •์— ํ•„์š”ํ•œ ๊ถŒํ•œ

๋‘ ๊ฐ€์ง€ ๊ธฐ์ค€์— ๋”ฐ๋ผ ํ”„๋กœ์„ธ์Šค ์šฐ์„ ์ˆœ์œ„ ๋ณ€๊ฒฝ์ด ํ—ˆ๊ฐ€๋˜๊ฑฐ๋‚˜ ๊ฑฐ๋ถ€๋œ๋‹ค.

ํ”„๋กœ์„ธ์Šค ์†Œ์œ ๊ถŒ
๋น„ํŠน๊ถŒ ํ”„๋กœ์„ธ์Šค๋Š” ํ˜ธ์ถœ ํ”„๋กœ์„ธ์Šค์˜ ์‹ค์ œ UID๋‚˜ ์‹คํšจ UID์™€ ์ผ์น˜ํ•˜๋Š” ์‹ค์ œ UID๋ฅผ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด์„œ๋งŒ I/O ์šฐ์„ ์ˆœ์œ„๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. CAP_SYS_NICE ์—ญ๋Šฅ์„ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค๋Š” ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.
์›ํ•˜๋Š” ์šฐ์„ ์ˆœ์œ„
์•„์ฃผ ๋†’์€ ์šฐ์„ ์ˆœ์œ„(IOPRIO_CLASS_RT)๋ฅผ ์„ค์ •ํ•˜๋ ค๋ฉด CAP_SYS_ADMIN ์—ญ๋Šฅ์ด ํ•„์š”ํ•˜๋‹ค. ์ปค๋„ ๋ฒ„์ „ 2.6.24๊นŒ์ง€์—์„œ๋Š” ์•„์ฃผ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„(IOPRIO_CLASS_IDLE)๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ๋„ CAP_SYS_ADMIN์ด ํ•„์š”ํ–ˆ์ง€๋งŒ ๋ฆฌ๋ˆ…์Šค 2.6.25๋ถ€ํ„ฐ๋Š” ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค.

ioprio_set() ํ˜ธ์ถœ ์‹œ ๋‘ ๊ทœ์น™ ๋ชจ๋‘๋ฅผ ๋”ฐ๋ผ์•ผ ํ•˜๋ฉฐ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ˜ธ์ถœ์ด EPERM ์˜ค๋ฅ˜๋กœ ์‹คํŒจํ•˜๊ฒŒ ๋œ๋‹ค.

BUGS

์ด ํŽ˜์ด์ง€์—์„œ ๊ธฐ์ˆ ํ•˜๋Š” ํ•จ์ˆ˜ ์›ํ˜•๊ณผ ๋งคํฌ๋กœ๋ฅผ ์ •์˜ํ•˜๋Š” ์ ์ ˆํ•œ ํ—ค๋” ํŒŒ์ผ์„ glibc์—์„œ ์•„์ง ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค. linux/ioprio.h์—์„œ ์ ์ ˆํ•œ ์ •์˜๋“ค์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

SEE ALSO

ionice(1), getpriority(2), open(2), capabilities(7), cgroups(7)

๋ฆฌ๋ˆ…์Šค ์ปค๋„ ์†Œ์Šค ํŠธ๋ฆฌ์˜ Documentation/block/ioprio.txt


2019-03-06

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