Infinity Scheduler, 더 나은 Linux 스케줄러를 목표로 하다
LINUX KERNEL
오픈 소스 개발자 Galih Tama는 부하가 높은 상황에서 BPF 기반의 sched_ext 방식이 초래할 수 있는 "근본적인 한계"를 해결하기 위해 scx_flow를 대체하는 작업을 진행해 왔습니다. Phoronix에 보낸 메시지에서 개발자는 Infinity Scheduler를 다음과 같이 설명했습니다:
"CFS 및 RT에 직접 내장된 네이티브 EEVDF 수정 버전입니다. BPF나 sched-ext 의존성이 없습니다. 핵심 아이디어는 각 태스크(task)의 최근 실행 시간 기록을 추적하는 지수 이동 평균 (Exponential Moving Average, EMA)입니다. CPU 집약적인 태스크는 타임 슬라이스(time slice)가 축소되는 반면 (최저 400µs까지), 대화형(interactive) 태스크는 전체 할당량을 유지합니다. 낮은 EMA를 가진 웨이크업(wakeups)은 50% 더 짧은 vslice를 할당받아 EEVDF 트리 내에서 마감 기한(deadline)이 앞당겨지며, pick_eevdf()에서의 futex 대기 바이패스(bypass)를 통해 다음 스케줄링 시점에 즉각적인 선점(preemption)이 가능합니다. RT 태스크는 큐 배치 변조(queue placement modulation)를 통해 동일한 EMA 처리를 받습니다."
sched_ext 경로를 포기함에 따라, Infinity Scheduler는 현재 CFS 및 RT 코드를 수정하기 위한 메인라인 Linux 커널용 패치 형태로 존재합니다. 이 패치들은 현재 작성 시점을 기준으로 메인라인 Linux 6.18 LTS, Linux 7.0, 그리고 Linux 7.1 커널 버전을 목표로 하고 있습니다.
Linux를 위한 이 새로운 Infinity Scheduler 작업에 대해 궁금한 분들은 GitHub 저장소를 통해 모든 세부 사항과 필요한 커널 패치를 확인할 수 있습니다. 독자들의 관심이 충분하다면 Phoronix에서 Infinity Scheduler 성능 벤치마크를 실행하는 방안을 검토해 보겠습니다.