매우 흥미로운 Cache Aware Scheduling 기능이 Linux 7.2에 도입될 것으로 보입니다
LINUX KERNEL
여러 개의 마지막 레벨 캐시 (Last Level Cache, LLC)를 갖춘 현대적 CPU에서 Linux 성능을 향상시키는 데 도움을 주는 모든 Cache Aware Scheduling 코드가 포함된 CONFIG_SCHED_CACHE가 TIP 브랜치에 포함되었습니다.
Cache Aware Scheduling은 Intel 소프트웨어 엔지니어들에 의해 1년 이상 주도되어 왔으며, 최소한 현대적인 Intel 및 AMD CPU, 특히 코어 수가 더 많고 더 큰 캐시를 가진 서버급 프로세서와 향상된 스케줄링의 혜택을 받을 수 있는 까다로운 워크로드(Workloads)에서 상당한 이점을 보여주었습니다.
Cache Aware Scheduling은 데이터를 공유하는 태스크(Tasks)들이 동일한 마지막 레벨 캐시 (LLC) 도메인에 함께 배치되도록 하여, 더 나은 캐시 지역성 (Cache Locality)을 보장하고 캐시 미스 (Cache Misses) 및 캐시 바운싱 (Bouncing)을 줄이려고 시도합니다. 저는 이전 버전의 패치들을 벤치마크해 보았으며, AMD EPYC CPU에서 훌륭한 성능을 확인했고 Xeon 6 또한 큰 혜택을 받는 것을 발견했습니다.
이달 초, 저는 Cache Aware Scheduling이 메인라인 커널 (Mainline Kernel)에 근접한 것으로 보인다고 언급한 바 있으며, 최근 tip/tip.git으로의 Git 푸시(Push) 결과에 따르면, 적어도 6월 중순의 Linux 7.2 머지 윈도우 (Merge Window)에는 제출될 것이 매우 확실해 보입니다.
이번 Git 머지(Merge)를 통해 Peter Zijlstra의 "sched/cache" 브랜치가 TIP의 sched/core 브랜치로 병합되었습니다. 이제 머지 윈도우를 앞두고 해당 브랜치에 포함되어 있으므로, Linux 7.2를 위해 제출될 것입니다. 마지막 순간의 문제나 Linus Torvalds가 비판할 만한 요소를 발견하지 않는다는 가정하에, 이 중요한 기능은 Linux 7.2에 포함될 것입니다!
일단 도입되면, Cache Aware Scheduling은 CONFIG_SCHED_CACHE Kconfig 빌드 옵션으로 활성화할 수 있습니다. 해당 코드에는 디버깅이나 성능 비교를 돕기 위해 사용자가 런타임 (Run-time)에 Cache Aware Scheduling 기능을 켜거나 끌 수 있도록 enabled라는 노브 (Knob)가 있는 llc_balancing DebugFS 디렉토리가 포함되어 있습니다.