답변:
원하는 전체 명령은 다음과 같습니다.
chrt -b 0 nice -n 19 ionice -c 2 -n 7 [command]
chrt
처음에 명령은 nice 값에 0.5를 추가하는 것과 같습니다 배치 스케줄링 클래스에 물건을 전환됩니다. ionice에 대한 -n 옵션은 실시간 ( -c 1
) 및 최선 노력 ( -c 2
) 옵션에 대한 단순 우선 순위이며, 낮은 값은 좋은 값 (0-7 범위)과 같이 높은 우선 순위입니다. 그러나,은 ionice 명령은 I / O 스케줄링 클래스 및 우선 순위는 CPU 스케줄링 매개 변수에서 파생 된 기본적으로 있기 때문에, 꼭 필요한 것은, 그리고 nice -n 19
의미한다 ionice -c 2 -n 7
.
그러나 CPU 및 I / O 스케줄링 클래스를 모두 유휴로 설정하여 절대적인 최소 자원 사용을 얻을 수 있습니다. 두 경우 모두 '유휴'스케줄러는 실제로 유휴 스케줄러가 아니며 여전히 자원을 사용할 수 있습니다. 모든 것이 우선 순위가 더 높다는 것입니다.
CPU 스케줄링 클래스의 경우,이 chrt
명령 도 필요하지 않지만 nice
( 0
유휴 스케줄링 클래스에서 우선 순위를 설정해야 함 ) 다음과 같이 명령을 사용합니다.
chrt -i 0 {command or PID}
nice
Linux 의 명령은 SVR4 버전을 미러링하므로 스케줄링 클래스를 변경할 수 없으며 좋은 값만 가질 수 있습니다 (이는 Linux에서 고전적인 UNIX와 다르게 작동하지만 약간 OT입니다). 원래 다른 예약 클래스는 POSIX.1E 실시간 있었다으로 SCHED_RR
하고 SCHED_FIFO
, 결국 세트 예약 클래스에 명령 호출되고 chrt
. 이 -i
옵션은 SCHED_IDLE
스케줄링 클래스 를 사용하도록 지정합니다.
I / O 스케줄링 클래스에는을 사용 ionice
합니다. 정확한 명령은 다음과 같습니다.
ionice -c 3 {command or PID}
이 -c
옵션은 사용할 스케줄링 클래스를 지정하고 3은 유휴 클래스의 번호입니다. 사용중인 블록 I / O 스케줄러에 따라 실제로는 아무런 영향을 미치지 않을 수 있습니다. 특히, noop
I / O 스케줄러는 우선 순위 또는 스케줄링 클래스를 전혀 지원하지 않으며 deadline
스케줄러 (레거시 스케줄러 및 blk-mq 둘 다)도 지원하지 않습니다.
자신의 프로그램이나 다른 프로세스를 위해 프로그래밍 방식 으로이 작업을 수행하거나 다른 프로세스에 대한 작업을 조정하려면 sched_setscheduler
및 ioprio_set
시스템 호출에 대한 매뉴얼 페이지를 확인하십시오 (더 많은 배경을 원한다면 읽을 가치가 있지만).
해당 명령이 다른 사람이 완료 될 때까지 완전히 기다리지 않기를 원한다고 가정하면 잠재적으로 리소스 부족 문제가 발생 하지 않습니다 .
nice -n19 [command]
으로 은 ionice은 현대 리눅스 커널에 비례하여 설정됩니다.
그건 그렇고 좋은 점과 chrt -b0
는 관련이 없지만 CPU가 한 프로세스에서 다른 프로세스로 얼마나 자주 점프하는지입니다. 이 줄은 배치 프로그램이 캐시를 더 잘 사용하는 데 시간이 오래 걸리지 만 다른 명령에는 쓸모가 없습니다. 여기에서 볼 수 있듯이 .