리눅스 cpu 스케줄링 & 우선순위

조민서·2022년 8월 18일
0

CPU 스케줄링

머릿말 (들어가기전)

  • 프로세스를 관리하는 모든 소프트웨어를 총칭함.
  • 이 스케줄러를 나누는 큰 줄기로
    • Long term : 디스크와 메모리사이를 관리. job scheduler로 불림
    • Medium term : swapping 을 다룸. 프로세스도 메모리가 부족시, 하드디스크의 스왑영역을 쓰기도하는 데, 이 swap영역과 메모리사이임.
    • Short term : CPU와 메모리 사이의 프로세스를 관리함. 이를 CPU scheduler로 부름.

세가지로 나뉘나, 주제가 CPU Scheduler이므로, 이 Short term Scheduler 기준으로 설명을함.


CPU 스케쥴러

정의

CPU 스케줄러가

ready state의 프로세스들을

다 모아서 어떤 프로세스가 실행되는지 관리하는 것.

역할

  • ready state의 프로세스를 모아서 누가 실행될지 결정하는 것.

종류

  • 운영체제(커널)에 있는 기본 프로세스 스케쥴러
  • 유저가 따로 스케쥴러를 튜닝하는 방법 (cgroup)

일반적으로 리눅스는 CFS라는 알고리즘으로 프로세스를 관리하는 듯 하다.


CFS

정의

CFS stands for "Completely Fair Scheduler," and is the new "desktop" process
scheduler implemented by Ingo Molnar and merged in Linux 2.6.23.  It is the
replacement for the previous vanilla scheduler's SCHED_OTHER interactivity
code.

Completely Fair Scheduler 의 약자로,

직역시 완전 공평한 스케줄러다.

어떤 프로세스던, 공평한 실행시간을 주는 것이다. minimum time 과 maximum time을 기준으로, 한 프로세스당 최소시간과 최대시간내의 시간을 준다.

이 시간을 virtual runtime이라 한다.

Virtual Runtime

프로세스 실행시간을 말함.

컨텍스트 스위칭하는 시간등의 다른시간을 제외하고 오로지 프로세스가 실행되는 시간을 말한다.


리눅스에서 확인하기.

개요

리눅스에서

ps

에서 나온 pid로

chrt -p pid

를 쳐보면, priority 와 policy를 볼 수 있다.

policy는 위의 설명처럼, 어떤 알고리즘을 써서 관리하는지에 대한 내용이고,

priority는 말 그대로 우선순위이다.

Priority Scheduling & Policy

리눅스는 프로세스 실행순서를 정할때

  1. cpu scheduling priority
  2. priority 차이가 없다면, 스케쥴링 policy(알고리즘)에 따라 처리한다.

Policy?

대표적인 policy로

  • SCHED_FIFO : First In First Out
  • SCHED_RR : Round Robin
  • SCHED_OTHER : CFS

세가지가 있다.

일반적으로 대부분 SCHED_OTHER로 되어 있을 것이다.


결론

우선순위가 더 중요하고, 같은 policy끼리는 알고리즘에 맞게 실행된다.

0개의 댓글

관련 채용 정보