나는 몇 가지 일정 관리 개념을 배웠습니다. 나의 현재 이해는 다음과 같습니다.
- 실시간 프로세스와 비실시간 프로세스가 있습니다.
- 비실시간 프로세스 의 우선순위 값은
nice
다음 범위 내에 있을 수 있습니다.-20도착하다+20. 양수 값이 높을수록 프로세스의 우선순위가 낮다는 것을 나타냅니다. -
이 답변에서 언급한 것처럼 실시간 프로세스는 좋은 가치를 갖습니다.여기. 이는 주로 실시간 프로세스가 비실시간 프로세스보다 우선순위가 높고 좋은 값이 적용되지 않기 때문입니다.- 이제 이를 사용하여
chrt
프로세스의 실시간 속성을 볼 수 있습니다.
실시간 프로세스의 경우 chrt
제공된 출력은 다음과 같습니다.
chrt -p 5
pid 5's current scheduling policy: SCHED_FIFO
pid 5's current scheduling priority: 99
우리가 그 과정을 볼 때5, 우선순위는 99로 가장 높습니다. 또한, 일정 전략은 다음과 같습니다.SCHED_FIFO
이제 비실시간 프로세스의 경우 출력은 다음 chrt
과 같습니다.
chrt -p 22383
pid 22383's current scheduling policy: SCHED_OTHER
pid 22383's current scheduling priority: 0
우리가 그 과정을 볼 때22383, 우선순위는 0, 스케줄링 정책은 입니다 SCHED_OTHER
.
질문
- 어떤 프로세스든 라이브 프로세스로 설정할 수 있나요?
SCHED_OTHER
비실시간 프로세스 외에 다른 스케줄링 알고리즘을 설정할 수 있나요?~에서여기, 또한 실행 중인 프로세스의 속성을 다음과 같이 수정할 수 있다는 것을 발견했습니다.
chrt -p prio pid
chrt -m
또한 나는 스케줄링 알고리즘 목록이 제공되는 것을 보았습니다 . 이 명령이 제공하는 출력은 다음과 같습니다.SCHED_OTHER min/max priority : 0/0 SCHED_FIFO min/max priority : 1/99 SCHED_RR min/max priority : 1/99 SCHED_BATCH min/max priority : 0/0 SCHED_IDLE min/max priority : 0/0
이제 위에서 제안한 대로
chrt -p 55 22383
어떤 알고리즘이 사용될지 설정하면 어떻게 될까요?
답변1
질문 1
사용자는 프로세스에 대한 실시간 우선순위를 사용할 수도 있습니다. 이 구성은 파일에서 설정할 수 있습니다 /etc/security/limits.conf
. 파일에서 다음을 볼 수 있습니다.
# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain> <type> <item> <value>
프로젝트 섹션을 확인하면 사용자의 실시간 우선순위를 설정하기 위한 다음 항목이 표시됩니다.
# - rtprio - max realtime priority
질문 2와 질문 3
일정 정책을 로 설정하려면 SCHED_FIFO
다음을 입력합니다.
chrt -f -p [1..99] {pid}
일정 정책을 로 설정하려면 SCHED_RR
다음을 입력합니다.
chrt -r -p [1..99] {pid}
따라서 질문 3에 답하려면 명령을 사용하여 사용 가능한 스케줄링 알고리즘과 우선순위를 확인한 chrt -m
다음 필요에 맞는 스케줄링 알고리즘을 사용해야 합니다. 다른 우선순위를 설정하려면 위 명령을 사용할 수 있습니다.