멀티코어 시스템에서 공정성 향상을 위한 Virtual Runtime 기반 로드 밸런싱 메커니즘

리눅스의 기본 스케줄러인 CFS는 리눅스의 보급과 더불어 기업용 서버와 클라우드 서버에서 널리 사용되고 있다. 그런데 시스템의 규모가 극도로 커짐에 따라 CFS에 의해 스케줄링된 태스크들은 종종 심각한 기아 현상을 겪는다고 알려져 있다. 이 논문은 CFS에 대한 심도 깊은 분석을 통해 이러한 문제의 원인이 멀티코어에서 공정성 보장의 실패에 있음을 규명한다. 그리고 이를 해결하기 위한 virtual runtime 기반의 로드 밸런싱 메커니즘을 제안한다. 제안된 메커니즘은 태스크들의 진행 속도를 균등하게 만들기 위해 주기적으로 태스크 이주를 수행한다. 우리는 제안된 메커니즘을 리눅스 커널 상에 구현하고 일련의 실험을 수행하였다. 그 결과 기존의 CFS로 스케줄링된 태스크들의 virtual runtime 차이는 선형적으로 증가하는데 반해 제안된 기법은 virtual runtime의 차이를 상수로 바운드할 수 있음을 보였다.