멀티코어 시스템에서공정성 보장을 위한 가상런타임 기반 로드 밸런싱 알고리즘

리눅스의 기본 스케줄러인 CFS는 클라우드 서버와 같은 대규모 시스템에서 널리 사용되고 있지만, 이는 시스템의 규모가 극도로 커짐에 따라 시스템이 요구하는 수준의 공정성을 보장하지 못한다. 이 논문은 CFS에 대한 심도 깊은 분석을 통해 공정성 보장의 실패의 원인을 규명하고, 이를 해결하기 위한 virtual runtime 기반의 로드 밸런싱 알고리즘을 제안한다. 이는 태스크들의 virtual runtime 차이를 바운드시키기 위해 주기적으로 태스크 이주를 수행한다. 이를 위해 알고리즘은 인접한 두 CPU의 load 차이가 최대 가중치 차이 이하가 되도록 바운드 하고, virtual runtime이 큰 태스크들을 load가 큰 CPU에서 수행되게 보장한다. 우리는 제안된 알고리즘을 리눅스 커널 2.6.38.8 상에 구현하고 일련의 실험을 수행하였다. 그 결과 기존 CFS의 경우 virtual runtime 차이는 선형적으로 증가하는데 반해 제안된 기법은 50.53 단위 시간으로 virtual runtime 차이를 바운드시킬 수 있으며 고작 0.14%의 런타임 오버헤드를 야기시킴을 보였다.