스케줄링 고려할 점
1. 어떤 task 를 ready queue( run queue) 에서 선택할 것인가?
일반 task : CFS( completely fair scheduler) 를 이용
실시가 task : FIFO , RR, DEADLINE 정책을 사용
2. CPU의 각 run queue 의 부하가 균등하지 않은 경우에는?
부하 균등( load balancing ) 기법을 활용한다. load_balance() 함수에서는 특정 CPU가 매우 바쁘고 다른 CPU들은 idle 하다면 다른 CPU로 task를 이주시켜서 전반적인 성능 향상을 시도한다.
이때 특정 task 를 이주하기로 결정했다면, 문제는 '어느 CPU' 로 이주시킬 것인지 결정하는 것이다.
이때는 task 이주로 인한 성능 저하를 최소화 시킬 수 있는 방향으로 task 를 이주시켜야 한다.
hyper-threading 으로 인해 논리적으로 존재하는 다른 CPU에 이주하는 방법,
하지만 그 CPU도 부하가 높다면 같은 캐시를 공유하는 CPU에 이주시키는 방법등으로 성능 저하를 최소화 시켜야 한다.
반응형
'잡다한 IT > 운영체제' 카테고리의 다른 글
MMU 와 MPU 의 차이점 (0) | 2018.07.11 |
---|---|
물리 메모리 관리 (0) | 2018.05.04 |
fork , vfork , clone (0) | 2018.05.02 |
set-associative cache (0) | 2018.04.24 |
디바이스 드라이버와 디바이스 컨트롤러 차이 (0) | 2018.04.21 |