Linux에서 실시간 프로세스 스케줄링


24

일정 개념을 배우고 있습니다. 현재까지 내 이해는 다음과 같습니다.

  • 실시간 프로세스와 비 실시간 프로세스가 있습니다.
  • 비 실시간 프로세스 nice의 우선 순위 값은 -20 에서 +20 사이 입니다. 양수 값이 높을수록 프로세스의 우선 순위가 낮음을 나타냅니다.
  • 실시간 프로세스로 나열된 쾌적 값이 것 -이 답변에 설명 된대로 여기를 . 이는 실시간 프로세스가 비 실시간 프로세스보다 우선 순위가 높으며 niceness 값이 적용되지 않기 때문입니다.
  • 이제 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어떤 알고리즘을 사용할지 설정하면 어떻게됩니까?

답변:


19

질문 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명령을 사용 하여 사용 가능한 스케줄링 알고리즘과 우선 순위를 확인한 다음 필요에 맞는 스케줄링 알고리즘을 사용해야합니다. 다른 우선 순위를 설정하기 위해 위와 같은 명령을 사용할 수 있습니다.

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