매우 유망한 리눅스 패치, 페이지 회수 중 TLB 플러시 최적화

전문: https://www.phoronix.com/news/Linux-Optimize-TLB-Flush-Reclaim

원저자: Michael Larabel | 작성일: 2025-01-22 15:01
사이트 내 게시일: 2025-01-22 16:31
새로운 리눅스 패치는 페이지 회수 중 TLB 플러시를 최적화하여 shrink_folio_list()의 현재 구현에서 발생하는 비효율성을 해결합니다. 기존 방법은 회수되는 각 페이지에 대해 전체 TLB 플러시를 수행하고 프로세서 간 인터럽트(IPI)를 발생시켜 과도한 오버헤드를 초래하며, 특히 애플리케이션이 메모리를 적극적으로 관리할 때 문제가 됩니다. 이 패치는 필요한 IPI의 수를 크게 줄이는 배치 메커니즘을 도입하여 메모리 회수 작업 중 애플리케이션 성능을 향상시킵니다.

현재 프로세스는 페이지 테이블 항목(PTE)을 개별적으로 지우고 페이지를 언맵하는 방식으로 진행되어 높은 인터럽트 비율과 비효율적인 I/O 패턴을 초래합니다. 새로운 접근 방식은 페이지 중간 디렉터리(PMD)당 하나의 IPI를 발행하여 작업을 배치 처리함으로써 인터럽트를 512배 줄입니다. 예를 들어, 20 GiB의 메모리(520만 페이지)를 스왑 아웃할 때, 패치는 총 인터럽트를 3,140만에서 약 61,400으로 줄여 약 99% 감소를 달성합니다.

테스트 결과, 애플리케이션은 madvise(MADV_PAGEOUT) 호출로 인해 발생하는 메모리 회수 중 더 나은 성능을 유지하는 것으로 나타났습니다. 대표적인 테스트 사례에서, 2 GiB의 개인 맵에 접근하는 스레드는 스왑 작업 중 패치가 없을 경우 53%의 처리량 감소를 경험했으나, 패치가 적용된 경우 정상적인 처리량을 유지했습니다. 이러한 개선은 kswapd에 의해 메모리 회수가 시작되는 시나리오에도 확장될 것으로 예상되며, 전체 시스템의 효율성과 반응성을 향상시킬 것입니다.

* 이 글은 phoronix.com의 기사를 요약한 것입니다. 전체 기사의 내용은 이곳에서 확인하실 수 있습니다.
카테고리: Software
태그: Linux (1075) Performance Optimization (204) memory management (41) Kernel Patch (7) TLB (6) System Efficiency (4) Page Reclamation (1) IPIs (1) Kswapd (1)

댓글

댓글을 쓰기 위해서는 로그인을 해 주세요.