CFS 스케줄러의 가상 런타임 값 범위

CFS 스케줄러의 가상 런타임 값 범위

커널 버전 4.19.2를 사용하여 Linux CFS 스케줄러가 어떻게 작동하는지 이해하려고 합니다.

문서에서 언급했듯이 전통적인 방식으로 타임 슬라이스를 사용하지 않고 가상 런타임 개념을 사용합니다. 각 프로세스에 대한 vruntime 업데이트는 파일에서 수행됩니다.커널/sched/fair.c

업데이트된 정확한 라인은 다음과 같습니다.

    curr->vruntime += calc_delta_fair(delta_exec, curr);
   //curr is the currently scheduled task, the function cal_delta_fair() 
   returns a value depending on the duration the task ran and its priority 
   ensuring fairness.

vruntime 변수는 u64이며 커널 유형에서 부호 없는 정수 64B로 정의됩니다. 프로세스의 vruntime이 어떻게 변경되는지 이해하기 위해 해당 값을 가져오는 시스템 호출을 작성했는데 결과는 때로는 음수일 때도 있고 때로는 양수일 수도 있습니다. 어떻게? vruntime의 음수 값은 무엇을 의미합니까?

답변1

vruntime의 데이터 유형은 부호 없는 64비트 정수입니다. 음수를 읽는 경우 시스템 호출 구현에서 변수를 올바른 유형으로 캐스팅해야 한다고 생각합니다.

관련 정보