15.04에서 어떤 종류의 스케줄링 알고리즘이 사용됩니까? 변경할 수 있습니까? 메커니즘이 사용되는지 알고

15.04에서 시분할 또는 실시간으로 어떤 스케줄링 메커니즘이 사용되는지 알고 싶으십니까? FIFO, Round Robin, SJF가 확실합니까?

PS : 리눅스를 처음 접하다



답변

프로세스 스케줄러

프로세스 스케줄러는 프로세스 실행을위한 CPU 리소스 할당을 처리하고 대화 형 성능을 최대화하면서 전체 CPU 사용률을 최대화하는 것을 목표로합니다.

커널 2.6.23 (Hardy 8.04 LTS 기준 ) 이후 “Rotating Staircase Deadline”에 기반한 CFS (Completely Fair Scheduler) . kernel.org의 개요 :

CFS는 “Completely Fair Scheduler”의 약자이며 Ingo Molnar에 의해 구현되고 Linux 2.6.23에서 병합 된 새로운 “데스크톱”프로세스 스케줄러입니다. 이전 바닐라 스케줄러의 SCHED_OTHER 상호 작용 코드를 대체합니다.

CFS 디자인의 80 %는 단일 문장으로 요약 할 수 있습니다. CFS는 기본적으로 실제 하드웨어에서 “이상적이고 정확한 멀티 태스킹 CPU”를 모델링합니다.

“이상적인 멀티 태스킹 CPU”는 100 % 물리적 전력을 가지며 각 작업을 1 / nr_running 속도로 동시에 정확하게 동일한 속도로 실행할 수있는 (존재하지 않은 🙂 CPU입니다. 예를 들어, 2 개의 작업이 실행중인 경우 각각 50 %의 물리적 전력에서 실행됩니다. 즉, 실제로는 병렬로 실행됩니다.

실제 하드웨어에서는 한 번에 하나의 작업 만 실행할 수 있으므로 “가상 런타임”이라는 개념을 도입해야합니다. 작업의 가상 런타임은 다음 타임 슬라이스가 위에서 설명한 이상적인 멀티 태스킹 CPU에서 실행을 시작할시기를 지정합니다. 실제로 작업의 가상 런타임은 실행중인 총 작업 수로 정규화 된 실제 런타임입니다.


  • 커널 2.4 : O (n) 스케줄러 ; 해당 커널에는 Ubuntu 릴리스가 없습니다.
  • 커널 2.6.0 2.6.22에 : O (1) 스케줄러 . Warty 4.10 (1 차 릴리스)은 2.6.8을 사용했습니다. Gutsy 7.10은 2.6.22 이하를 사용한 마지막 것입니다.

I / O 스케줄러

입 / 출력 스케줄링은 운영 체제에서 스토리지 볼륨에 제출할 블록 I / O 조작을 결정하는 방법입니다.

스케줄링에 관한 Phoronix 기사 : Linux 3.16 : 최종 기한 I / O 스케줄러는 일반적으로 SSD로 이어집니다.


grub에서 “elevator =”옵션을 “GRUB_CMDLINE_LINUX_DEFAULT =”에 추가하여 I / O 스케줄러를 변경할 수 있습니다.

sda와 마감일을 가정하면 다음과 같이하는 것이 더 쉽습니다.

  • 사용 가능한 스케줄러 목록을 표시하려면 다음을 수행하십시오.

    cat /sys/block/sda/queue/scheduler
    
  • 그리고 스케줄러를 변경하려면 (즉석에서 수행 할 수 있음) :

    echo deadline > /sys/block/sda/queue/scheduler
    

커널 /git/torvalds/linux.git에서


사용중인 것을 확인할 수 있습니다 (sda를 primairy로 가정).

cat /sys/block/sda/queue/scheduler