짧은 답변
PR은 우선 순위 수준입니다. PR이 낮을수록 프로세스의 우선 순위가 높아집니다.
PR은 다음과 같이 계산됩니다.
- 일반 프로세스의 경우 : PR = 20 + NI (NI는 훌륭하며 범위는 -20 ~ 19)
- 실시간 프로세스의 경우 : PR =-1-real_time_priority
(real_time_priority 범위는 1-99)
긴 답변
두 가지 유형의 프로세스가 있습니다. 일반 프로세스 와 실시간 일반 프로세스
(및 해당 프로세스에 대해서만)에는 nice가 다음과 같이 적용됩니다.
좋은
"niceness"척도는 -20에서 19로, 반면 -20은 가장 높은 우선 순위이고 19는 가장 낮은 우선 순위입니다. 우선 순위 수준은 다음과 같이 계산됩니다.
PR = 20 + NI
NI는 좋은 수준이고 PR은 우선 순위입니다. 보시다시피, -20은 실제로 0에, 19는 39에 매핑됩니다.
기본적으로 프로그램 nice 값은 0이지만 루트 사용자는 다음 명령을 사용하여 지정된 nice 값으로 프로그램을 시작할 수 있습니다.
nice -n <nice_value> ./myProgram
실시간
우리는 더 나아갈 수있었습니다. 좋은 우선 순위는 실제로 사용자 프로그램에 사용됩니다. UNIX / LINUX 전체 우선 순위의 범위는 140 개의 값이지만 nice 값을 사용하면 프로세스가 범위의 마지막 부분 (100-139)에 맵핑 될 수 있습니다. 이 방정식은 0에서 99까지의 값을 도달 할 수없는 상태로두고 음의 PR 수준 (-100에서 -1)에 해당합니다. 해당 값에 액세스하려면 프로세스를 "실시간"으로 지정해야합니다.
LINUX 환경에는 다음 명령으로 표시 할 수있는 5 개의 스케줄링 정책이 있습니다.
chrt -m
다음 목록이 표시됩니다.
1. SCHED_OTHER the standard round-robin time-sharing policy
2. SCHED_BATCH for "batch" style execution of processes
3. SCHED_IDLE for running very low priority background jobs.
4. SCHED_FIFO a first-in, first-out policy
5. SCHED_RR a round-robin policy
스케줄링 프로세스는 2 개의 그룹, 정상 스케줄링 정책 (1 내지 3) 및 실시간 스케줄링 정책 (4 및 5)으로 나 could 수있다. 실시간 프로세스는 항상 일반 프로세스보다 우선합니다. 다음 명령을 사용하여 실시간 프로세스를 호출 할 수 있습니다 (예 : SCHED_RR 정책을 선언하는 방법).
chrt --rr <priority between 1-99> ./myProgram
실시간 프로세스에 대한 PR 값을 얻으려면 다음 방정식이 적용됩니다.
PR = -1-rt_prior
여기서 rt_prior는 1과 99 사이의 우선 순위에 해당합니다. 따라서 다른 프로세스보다 우선 순위가 높은 프로세스는 숫자 99로 호출 된 프로세스입니다.
실시간 프로세스의 경우 좋은 가치가 사용되지 않습니다.
프로세스의 현재 "niceness"및 PR 값을 보려면 다음 명령을 실행할 수 있습니다.
top
다음과 같은 출력이 표시됩니다.
그림에서 PR 및 NI 값이 표시됩니다. 실시간 값에 해당하는 PR 값 -51의 프로세스를 기록하는 것이 좋습니다. PR 값이 "rt"로 지정된 일부 프로세스도 있습니다. 이 값은 실제로 -100의 PR 값에 해당합니다.
niceness
우선 순위niceness
가 높은 작업을 수행 하는 작업이 부정적인 우선 순위를 부여하는 데 사용될 수 있습니까? (즉,nice
다른 액세스 리소스를 사용하고 있는가? 아니면 이것이 혼란