- cpu들을 상하관계가 존재하는 트리 구조로 생각하여 각 도메인들을 load balancing 하고 단계별로 밸런싱.
-도메인을 나눠서 밸런싱한다면 전체 cpu에 대해서 모두 균등하게 밸런싱하는 것보다 연산 복잡도가 낮기 때문.
- process_timeout으로 인해 자고 있던 스레드를 깨우고 어느 cpu에 넣을지 고르기 위해 제일 한가한 cpu를 리턴
- fast path
-> idle cpu가 있다면 그 cpu의 도메인 내 sibling 중 선택- slow path
-> idel cpu가 없다면 load를 계산하여 최대한 한가한 cpu를 찾아 리턴
- wakeup_process()에서 호출되는 일련의 함수들은 프로세스를 런큐에 넣은 후 스케쥴러 관련 루틴에서 __update_load_average()가 호출됨
- task가 런큐에 추가 되었을때 호출
- 런큐 내에 스레드가 추가되었으므로 cpu의 load를 업데이트 할 필요가 있기 때문