(-)의 niceness 값은 무엇을 의미합니까?


19

맨 페이지와 위키 백과에 따르면; nice범위는 -20에서 20입니다.

그러나 다음 명령을 실행할 때 일부 프로세스에는 (-)와 같이 숫자가 아닌 값이 있습니다. 제목이 'NI'인 왼쪽의 여섯 번째 열을 참조하십시오.

(-)의 멋짐은 무엇을 나타 냅니까?

 ps axl 
 F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
4     0     1     0  20   0  19356  1548 poll_s Ss   ?          0:00 /sbin/init
1     0     2     0  20   0      0     0 kthrea S    ?          0:00 [kthreadd]
1     0     3     2 -100  -      0     0 migrat S    ?          0:03 [migration/0]
1     0     4     2  20   0      0     0 ksofti S    ?          0:51 [ksoftirqd/0]
1     0     5     2 -100  -      0     0 cpu_st S    ?          0:00 [migration/0]
5     0     6     2 -100  -      0     0 watchd S    ?          0:09 [watchdog/0]
1     0     7     2 -100  -      0     0 migrat S    ?          0:08 [migration/1]
1     0     8     2 -100  -      0     0 cpu_st S    ?          0:00 [migration/1]
1     0     9     2  20   0      0     0 ksofti S    ?          1:03 [ksoftirqd/1]
5     0    10     2 -100  -      0     0 watchd S    ?          0:09 [watchdog/1]
1     0    11     2 -100  -      0     0 migrat S    ?          0:05 [migration/2]

Ubuntu 12.04 및 CentOs 6.5 및 Mac OsX 10.9를 실행하는 서버 3 대를 확인했습니다. Ubuntu 및 CentOs 시스템에만 숫자가 아닌 niceness 값이 있습니다.


참고 : 이름이있는 모든 프로세스 [brackets]는 실제로 kthreads (커널 스레드)입니다.
Jonathon Reinhart

답변:


18

(-)의 멋짐은 무엇을 나타 냅니까?

이것들은 또한 PRI 점수가 -100입니다. 이는 프로세스가 실시간 프로세스 로 예약되었음을 나타냅니다 . 실시간 프로세스는 좋은 점수를 사용하지 않으며 항상 일반 프로세스보다 우선 순위가 높지만 여전히 서로 다릅니다.

chrt명령을 사용하여 프로세스 당 세부 정보를 볼 수 있습니다 (예 :) chrt -p 3. -100 개의 항목 중 하나가 99의 "현재 예약 우선 순위"를보고 할 것입니다 nice. 여기서와 같이 높은 값은 더 높은 우선 순위 -100입니다. 비 실시간 프로세스는 chrt좋은 값 에 관계없이 항상 "현재 예약 우선 순위"가 0으로 표시 되고 Linux에서는 "현재 예약 정책"의 "현재 예약 정책"이 표시 SCHED_OTHER됩니다.

Ubuntu 및 CentOs 시스템에만 숫자가 아닌 niceness 값이 있습니다.

일부 버전 top과 실시간 프로세스를보고하는 것 rt에서 PRI 다음 0에서 NI .


훌륭한 답변입니다. 나는 그것이 그것과 관련이 있다는 것을 알았지 만 그것을 -100이해할 수 없었습니다 :)
Ramesh

6

@ Goldlilock의 대답은 올바른 길을 연구하도록 지시했습니다. 이것은 나의 연구 세부 사항입니다.

프로세스에 사용 가능한 스케줄링 알고리즘

Linux는 3 가지 스케줄링 정책을 지원합니다. SCHED_FIFO, SCHED_RRSCHED_OTHER. SCHED_OTHER대부분의 프로세스에서 사용되는 기본 범용 시간 공유 스케줄러 정책입니다. SCHED_FIFOSCHED_RR실행 가능한 프로세스가 실행을 위해 선택되는 방식을 정밀 제어를 필요로 특별한 시간에 민감한 애플리케이션을위한 것입니다.

사용 가능한 우선 순위

실행할 프로세스를 선택하려면 Linux 스케줄러가 각 프로세스의 우선 순위를 고려해야합니다. 실제로 두 가지 우선 순위가 있습니다.

정적 우선 순위 값은 각 프로세스에 할당 및 스케줄링이 정적 우선 순위에 따라 결정된다. SCHED_OTHER정적 우선 순위가 0으로 예약 된 프로세스 는 0입니다. 아래 예약되는 프로세스 SCHED_FIFO또는 SCHED_RR범위의 정적 우선 순위를 가질 수 1까지를 99(99 가장 높다).

sys_sched_get_priority_max( )돌아 간다 프로세스의 정적 우선 순위, 그것은 반환 0비 실시간 프로세스.

비 실시간 응용 프로그램에는 동적 우선 순위가 사용됩니다.

모든 실시간 프로세스는 일반 프로세스보다 우선 순위가 높습니다. Linux는 POSIX에 따라 실시간 우선 순위를 구현합니다. 아래 그래프는 프로세스가 우선 순위에 따라 스케줄되는 방식에 대한 개요를 제공 할 수 있습니다.

HIGH PRIORITY – - – - – > – - – - – > – - – - – > – - – - – > – - – – LEAST PRIORITY
……..real time priority (static priority)…….| …. nice value (dynamic priority) …..
99 ……………………….. 50 ……………………… 1 | -20 …….. -10 …….. 0 …….. 10 ……. 19

이제 아래 명령을 실행하여 프로세스의 실시간 우선 순위를 확인할 수 있습니다. 여기에는 좋은 값이-로 표시되어 있으므로 워치 독을 사용하고 있습니다.

ps -e -o class,rtprio,pri,nice,cmd | grep watchdog

위의 명령 출력입니다. 우리가 볼 수 있듯이 실시간 우선 순위는 99가 가장 높은 우선 순위입니다.

FF      99 139   - [watchdog/0]
FF      99 139   - [watchdog/1]
TS       -  21   0 grep watchdog

내 이해에 따라 실시간 우선 순위는 최대 99의 값을 가질 수 있으므로 그보다 좋은 가치는 없습니다. 이것이 워치 독 및 기타 시스템 프로세스에서 좋은 결과를 얻을 수있는 이유입니다.

참고 문헌

http://oreilly.com/catalog/linuxkernel/chapter/ch10.html http://atipaday.wordpress.com/2008/08/19/atad-21-linux-process-priority-range/

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.