4장. 리소스 관리
Linux 커널의 CFS (Completely Fair Scheduler)는 비례 공유 스케줄러로 작업의 우선 순위/중요성 또는 작업 그룹에 할당된 점유율에 따라 비례하여 작업 그룹 간의 CPU 시간을 분배합니다. CFS에서 작업 그룹은 시스템에서 사용 가능한 CPU 유휴 시간 주기가 충분한 경우 스케줄러의 작업 보존 특성으로 인해 CPU 점유율 이상을 얻을 수 있습니다.
- 사용당 요금제 (Pay-per-use)
- 여러 고객을 대상으로하는 엔터 프라이즈 시스템에서 클라우드 서비스 제공 업체는 서비스 수준에 따라 가상 게스트에 고정된 CPU 시간을 할당해야 합니다.
- 서비스 수준 보장
- 고객은 각 가상 게스트에 대한 서비스를 중단하지 않고 CPU 리소스의 백분율을 요구합니다.
Red Hat Enterprise Linux 6에서는 복잡한 절차 없이 cgroups를 활성화하고 libvirt는 게스트 모델마다 cgroups를 생성했습니다. 대규모 SMP 시스템에서는 cgroups의 수가 늘어나면 성능이 저하되었습니다. 하지만 Red Hat Enterprise Linux 6.2에서는 cgroups CPU 확장성이 개선되어 성능에 영향을 미치지 않고 한 번에 수백 개의 cgroups를 생성 및 실행할 수 있습니다.
/proc
조정 가능한 매개 변수 dd sysctl_sched_shares_window
가 추가되어 기본값은 10 ms로 설정되어 있습니다.
cgroups I/O 컨트롤러 설계는 I/O 컨트롤러내의 잠금 사용량을 줄이도록 개선되어 성능이 향상되었습니다. 또한 I/O 컨트롤러는 cgroup 통계 마다 지원합니다.
Red Hat Enterprise Linux 6.2에서는 page_cgroup
어레이에 대한 오버헤드 할당을 37% 까지 감소시켜 메모리 컨트롤러에서의 메모리 사용 오버헤드를 개선했습니다. 또한 직접적인 page_cgroup-to-page
포인터가 제거되었기 때문에 메모리 컨트롤러의 성능이 향상되었습니다.
CFQ의 group_isolation
변수의 기본값은 0
에서 1
(/sys/block/<device>/queue/iosched/group_isoaltion
)로 변경되었습니다. 여러 사용자 보고 및 다양한 테스트 후 기본값을 1
로 하는 것이 보다 유용함이 밝혀졌습니다. 0
으로 설정하면 모든 임의의 I/O 대기열은 어플리케이션의 일부인 실제 cgroup이 아닌 root cgroup의 일부가 됩니다. 따라서 이로 인해 어플리케이션에 대한 서비스 차별화가 이루어 지지 않습니다.
참고