최신 Intel 및 AMD CPU 성능 향상을 위한 캐시 인지 스케줄링 (Cache Aware Scheduling) Linux 7.2에 병합
LINUX KERNEL
지난달 저는 캐시 인지 스케줄링 (Cache Aware Scheduling)이 마침내 Linux 7.2에 도입될 것으로 예상했는데, 오늘 그것이 실현되었습니다. 해당 코드는 이제 병합되었으며 CONFIG_SCHED_CACHE Kconfig 옵션을 통해 공개되었습니다. 이는 오늘날 증가하는 코어 수와 더 크고 복잡해진 캐시 레이아웃 (cache layouts)의 이점을 얻기 위해 1년 이상 개발되어 왔습니다.
Linux의 캐시 인지 스케줄링 (Cache Aware Scheduling)은 데이터를 공유하는 태스크 (tasks)들이 동일한 마지막 레벨 캐시 (LLC) 도메인에 함께 위치하도록 하여, 더 나은 캐시 지역성 (cache locality)을 보장하고 캐시 미스 (cache misses) 및 캐시 바운싱 (cache bouncing)을 줄이려고 시도합니다. 저는 이전에 패치의 이전 버전들을 벤치마크했으며, AMD EPYC CPU에서 훌륭한 성능을 확인했고 Xeon 6에서도 이득을 얻는 것을 발견했습니다. 지난달 저는 '캐시 인지 스케줄링이 PostgreSQL, Valkey, 네트워크 성능에서 AMD Zen 5에 상당한 승리를 가져다준다'는 내용의 새로운 벤치마크를 실행했습니다. 이제 Linux 7.2 커널에 마침내 병합되었으므로, Linux 7.2 커널을 사용한 더 많은 캐시 인지 스케줄링 (Cache Aware Scheduling) 벤치마크를 진행할 예정입니다.
이 작업을 1년 이상 추진하여 결승선까지 이끌어낸 Intel 엔지니어들에게 찬사를 보냅니다.
Linux 7.2를 위한 스케줄링 병합에는 SMT 인지 기능을 갖춘 SD_ASYM_CPUCAPACITY 스케줄링 개선, 더 나은 데이터 지역성을 위한 cfs_rq 및 sched_entity 할당 최적화, 프록시 실행 (Proxy Execution)을 위한 최적화된 도너 마이그레이션 (Optimized Donor Migration), 그리고 다양한 기타 수정 사항 및 스케줄링 개선 사항이 포함되었습니다.
Linux 7.2에 병합된 변경 사항의 전체 목록은 스케줄러 풀 리퀘스트 (pull request)를 참조하십시오.