본문 바로가기

전체 글42

Capacity Aware Scheduling CPU Capacity 1.1 Introduction 기존의 동질적인 SMP 플랫폼은 순수하게 동일한 CPU들로 구성되어 있습니다. 반면에 이질적인 플랫폼은 성능 특성이 다른 CPU들로 구성되어 있는데, 이러한 플랫폼에서는 모든 CPU가 동일하다고 볼 수 없습니다. CPU capacity는 CPU가 도달할 수 있는 성능의 척도로, 시스템에서 가장 성능이 좋은 CPU에 대해 정규화됩니다. 이종 시스템은 서로 다른 용량의 CPU를 포함하므로 비대칭 CPU capacity system이라고도 합니다. 최대 달성 가능한 성능의 차이(최대 CPU 용량의 IOW)는 다음 두 가지 요인에서 비롯됩니다: 모든 CPU가 동일한 마이크로아키텍처(µarch)를 가질 수는 없습니다. DVFS(Dynamic Voltage an.. 2023. 11. 26.
Scheduler Domains 각 CPU는 "default" scheduling domain (constructed_domain)을 가지고 있다. 도메인 계층은 -> parent pointer를 통해 이러한 기본 도메인으로부터 구축된다. -> parents는 NULL로 종료되어야 하며 도메인 구조는 잠금 없이 업데이트되므로 CPU 단위여야 한다. 각 스케줄링 도메인은 여러 CPU에 걸쳐 있습니다( ->span 필드의 stored). 도메인의 span은 하위 span 의 상위 집합이어야 하며(필요한 경우 이 제한이 완화될 수 있음), CPU i의 기본 도메인은 적어도 i에 걸쳐야 합니다. 각 CPU의 최상위 도메인은 일반적으로 시스템의 모든 CPU에 걸쳐 있지만 허용되는 마스크를 명시적으로 설정하지 않는 한 일부 CPU에는 실행할 작업.. 2023. 11. 23.
CFS Scheduler 1. OVERVIEW CFS는 "Complete Fair Scheduler"의 약자로, Ingo Molnar에 의해 구현되고 Linux 2.6.23에서 병합된 새로운 "데스크탑" 프로세스 스케줄러입니다. 이전 바닐라 스케줄러의 SCHED_OTHER 상호작용 코드를 대체합니다. CFS 설계의 80%는 한 문장으로 요약할 수 있습니다. CFS는 기본적으로 실제 하드웨어에서 "이상적이고 정밀한 멀티태스킹 CPU"를 모델링합니다. "이상적인 멀티태스킹 CPU"는 (존재하지 않는 :-) CPU로 100%의 물리적 파워를 가지며, 각 태스크를 정확하게 동일한 속도로, 병렬로, 각각 1/nr_running speed 로 실행할 수 있습니다. 예를 들어, 실행 중인 태스크가 2개라면 각각 50%의 물리적 파워로, 즉 .. 2023. 11. 22.
CFS Bandwidth Control 이 글에서는 SCHED_NORMAL에 대한 CPU 대역폭 제어에 대해서만 설명합니다. SCHED_RT 사례는 Real-Time 그룹 스케줄링에서 다룹니다 CFS bandwidth control는 CONFIG_FAIR_GROUP_SCHED 확장으로 그룹 또는 계층에서 사용할 수 있는 최대 CPU 대역폭을 지정할 수 있습니다. 그룹에 허용되는 bandwidth은 할당량 및 기간을 사용하여 지정됩니다. 주어진 "기간"(microseconds) 내에서 작업 그룹은 CPU 시간의 최대 "할당량" microseconds까지 할당됩니다. 이 할당량은 cgroup의 스레드를 실행할 수 있게 됨에 따라 slice 로 된 per-cpu run queues에 할당됩니다. 모든 할당량이 할당되면 해당 할당량에 대한 추가 요청.. 2023. 11. 22.