리눅스데브코스 [10주차 - 3]<리눅스 CFS 로드 밸런싱 실습>

심우열·2023년 6월 7일
0

1. rebalance_domains()

2. load_balance()

  • cpu들을 상하관계가 존재하는 트리 구조로 생각하여 각 도메인들을 load balancing 하고 단계별로 밸런싱.
    -도메인을 나눠서 밸런싱한다면 전체 cpu에 대해서 모두 균등하게 밸런싱하는 것보다 연산 복잡도가 낮기 때문.

3. select_task_rq_fair()

  • process_timeout으로 인해 자고 있던 스레드를 깨우고 어느 cpu에 넣을지 고르기 위해 제일 한가한 cpu를 리턴
  • fast path
    -> idle cpu가 있다면 그 cpu의 도메인 내 sibling 중 선택
  • slow path
    -> idel cpu가 없다면 load를 계산하여 최대한 한가한 cpu를 찾아 리턴

4. __update_load_avg()

  • wakeup_process()에서 호출되는 일련의 함수들은 프로세스를 런큐에 넣은 후 스케쥴러 관련 루틴에서 __update_load_average()가 호출됨
  • task가 런큐에 추가 되었을때 호출
  • 런큐 내에 스레드가 추가되었으므로 cpu의 load를 업데이트 할 필요가 있기 때문
profile
Dev Ops, "Git, Linux, Docker, Kubernetes, ansible, " .

0개의 댓글