CFS

Category
아이템: CFS(2)
포스트 갯수2

[리눅스커널] 스케줄링: CFS 스케줄러를 이루는 주요 개념 알아보기

By Guillermo Austin Kim | 2019년 7월 8일 | 
CFS(Completely Fair Scheduler)는 2.6.23 커널 버전 이후 적용된 리눅스의 기본 스케줄러입니다. CFS이란 용어를 그대로 풀면 ‘완벽하게 공정한 스케줄러’라고 해석할 수 있습니다. 즉, 런큐에서 실행 대기 상태로 기다리는 프로세스를 공정하게 실행하도록 기회를 부여하는 스케줄러입니다. 이번 절에서는 CFS 알고리즘의 개념을 알아보고 코드 분석으로 세부 동작을 살펴보겠습니다. CFS 스케줄러를 이루는 주요 개념 알아보기CFS는 실행 대기 상태인 프로세스들을 우선 순위에 따라 최대한 공정하게 실행하는 스케줄러입니다. CFS 세부 동작과 알고리즘을 이해하려면 다음과 같은 개념을 파악할 필요가 있습니다. - 타임 슬라이스 - 우선순위 - 가상 실행 시간(vruntime) 이번

[Kernel][Debug] 런큐에서 CFS 스케쥴러에 큐잉된 프로세스 찾기

By Guillermo Austin Kim | 2018년 4월 26일 | 
런큐에 CFS 스케쥴러로 큐잉된 상태로 기다리는 프로세스 목록은 어디서 찾을 수 있을까요?per-cpu 타입의 runqueues.cfs_tasks 멤버를 찾으면 됩니다. 다음은 CPU4 runqueue의 예시입니다. (struct rq *) [-] (struct rq*)(((void*)&runqueues)+__per_cpu_offset[4]) = 0xFFFFFFC73E0F2900 -> ( (raw_spinlock_t) [D:0xFFFFFFC73E0F2900] lock = ((arch_spinlock_t) [D:0xFFFFFFC73E0F2900] raw_lock = ((u16) [D:0xFFFF (unsigned int) [D:0xFFFFFFC73E0F2918] nr_running