Linux의 실시간 프로세스 스케줄링

Linux의 실시간 프로세스 스케줄링

나는 몇 가지 일정 관리 개념을 배웠습니다. 나의 현재 이해는 다음과 같습니다.

  • 실시간 프로세스와 비실시간 프로세스가 있습니다.
  • 비실시간 프로세스 의 우선순위 값은 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.

질문

  1. 어떤 프로세스든 라이브 프로세스로 설정할 수 있나요?
  2. SCHED_OTHER비실시간 프로세스 외에 다른 스케줄링 알고리즘을 설정할 수 있나요?
  3. ~에서여기, 또한 실행 중인 프로세스의 속성을 다음과 같이 수정할 수 있다는 것을 발견했습니다.

    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다음 필요에 맞는 스케줄링 알고리즘을 사용해야 합니다. 다른 우선순위를 설정하려면 위 명령을 사용할 수 있습니다.

관련 정보