새로운 Linux 패치, BPF를 이용한 메모리 부족 처리 맞춤화

전문: https://www.phoronix.com/news/Customize-Linux-OOM-Using-BPF

원저자: Michael Larabel | 작성일: 2025-04-28 09:46
사이트 내 게시일: 2025-04-28 10:30
최신 Linux 패치 세트는 BPF(버클리 패킷 필터)를 사용하여 메모리 부족(OOM) 처리 방식을 맞춤화하는 방법을 도입합니다. 이 패치는 OOM 처리 정책과 PSI 기반 OOM 호출의 두 가지 주요 영역에 중점을 두고 있습니다. 기존의 작업 순위 정책을 개선하는 이전 제안들과 달리, 이 접근 방식은 현대 BPF의 모든 기능을 활용하여 보다 일반적인 방식을 목표로 하고 있습니다.

이 패치는 기존 OOM 킬러 코드가 실행되기 전에 호출되는 일반적인 훅을 제공하여 다양한 정책을 구현할 수 있도록 합니다. 여기에는 희생 작업 또는 메모리 cgroup을 선택하거나, tmpfs 파일 삭제와 같은 대체 방법을 통해 메모리를 해제하는 것이 포함될 수 있으며, 이는 추가적인 소규모 변경이 필요할 수 있습니다.

메모리 cgroup 인식 정책을 만들려는 과거의 시도들은 최적의 정책에 대한 상이한 의견을 드러냈습니다. 이는 작업 부하의 세부 사항과 cgroup 트리 내의 작업 부하 구성에 크게 의존하기 때문입니다. 따라서, 수많은 sysctl을 가진 경직된 커널 내 솔루션보다는 맞춤형 BPF 기반 구현이 선호됩니다.

패치의 두 번째 측면은 OOM 이벤트를 선언하는 시점을 다루며, 불필요한 OOM 킬의 위험과 무한 스래싱 및 잠재적인 소프트 잠금을 방지하는 위험 간의 균형을 맞춥니다. 최근 몇 년 동안 OOMd 및 systemd-OOMd와 같은 여러 PSI 기반 사용자 공간 솔루션이 개발되었으며, 이들은 사용자 공간 데몬을 활용하여 사용자 정의 OOM 로직을 구현하고 PSI 모니터링을 통해 정체를 방지합니다. 그러나 이 방법은 사용자 공간 OOM 데몬을 별도로 배포, 업데이트 및 모니터링해야 하므로 추가적인 복잡성을 초래하며, OOM 이벤트 유형과 그 로그를 추적하기 위한 별도의 파이프라인이 필요합니다. 또한, 사용자 공간 데몬은 접근할 수 있는 데이터에 제한이 있으며, 높은 메모리 압박 하에서의 신뢰성을 보장하는 데 상당한 도전 과제가 있습니다.

* 이 글은 phoronix.com의 기사를 요약한 것입니다. 전체 기사의 내용은 이곳에서 확인하실 수 있습니다.
카테고리: Software
태그: Linux (1333) memory management (52) Kernel Patches (26) system performance (12) BPF (11) OOM (1) PSI (1) Custom Policies (1) Userspace Daemons (1)

댓글

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