친근감 가치(-)는 무엇을 의미하나요?

친근감 가치(-)는 무엇을 의미하나요?

매뉴얼 페이지와 Wikipedia에 따르면 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 시스템에만 숫자가 아닌 친숙한 값이 있습니다.

답변1

(-)의 호감도는 무엇을 의미하나요?

그것들도 가지고 있습니다.우선 원칙점수는 -100입니다. 이는 프로세스가 다음과 같이 예약되었음을 나타냅니다.실시간프로세스. 라이브 프로세스는 좋은 점수를 사용하지 않으며 항상 일반 프로세스보다 우선순위가 높지만 여전히 서로 다릅니다.

chrt명령(예: )을 사용하여 각 프로세스의 세부 정보를 볼 수 있습니다 chrt -p 3. -100 중 하나는 "현재 예약 우선순위" 99를 보고할 수 있습니다. nice여기서와 달리 높은 값은 더 높은 우선순위를 나타내며 아마도 -100최상위 숫자가 생성되는 위치일 것입니다. 좋은 값에 관계없이 실시간이 아닌 프로세스는 항상 "현재 스케줄링 우선순위"가 0 chrt이고 Linux에서는 "현재 스케줄링 정책"이 임을 표시합니다 SCHED_OTHER.

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

일부 버전은 다음과 같이 top실시간 프로세스를 보고하는 것 같습니다 .rt우선 원칙그럼 0아래에.

답변2

@Goldlilock의 답변은 제가 올바른 방식으로 연구를 수행하도록 안내했습니다. 내 연구의 세부 사항은 다음과 같습니다.

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

Linux는 3가지 스케줄링 전략을 지원합니다. SCHED_FIFO, SCHED_RR, 그리고 SCHED_OTHER. SCHED_OTHER대부분의 프로세스에서 사용되는 기본 범용 시분할 스케줄러 정책은 실행 가능한 프로세스를 선택하는 방법을 정밀하게 제어해야 하는 시간이 중요한 특수 애플리케이션에 SCHED_FIFO적합합니다 .SCHED_RR

사용 가능한 우선순위

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

정적 우선순위각 프로세스에는 값이 할당되며 일정은 이 정적 우선 순위에 따라 달라집니다. SCHED_OTHER다음 SCHED_FIFO또는 그 이하로 예약된 프로세스는 ~ (99가 가장 높음) 범위의 정적 우선순위를 SCHED_RR가질 수 있습니다 .199

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

이제 다음 명령을 실행하여 프로세스의 실시간 우선순위를 확인할 수 있습니다. 여기서는 -로 표시된 좋은 값이 있는 watchdog을 사용하고 있습니다.

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/

관련 정보