쿠버네티스에서 리눅스 스왑 튜닝: 심층 분석 노트

쿠버네티스에서 리눅스 스왑 튜닝: 심층 분석

안정화 예정인 Kubernetes NodeSwap 기능은 리눅스 노드가 가상 메모리 추가를 위해 스왑 공간을 활용할 수 있도록 허용합니다. 이는 물리 RAM이 고갈될 때 리소스 활용도를 개선하고 OOM(Out-of-Memory) 킬을 줄이는 것을 목표로 합니다. 그러나 이 기능의 효과는 vm.swappiness, vm.min_free_kbytes, vm.watermark_scale_factor와 같은 특정 리눅스 커널 매개변수를 조정하는 데 의존합니다. vm.swappiness 매개변수는 익명 메모리 스왑과 파일 백드 메모리 회수를 위한 커널의 우선순위를 제어합니다. vm.min_free_kbytes는 안전 버퍼로 작동하여 공격적인 페이지 회수를 시작하는 시점에 영향을 미칩니다. vm.watermark_scale_factor는 메모리 무료 워터마크 간격을 조정하여 스왑 창을 영향을 미칩니다. 테스트 결과, 기본 커널 매개변수는 메모리 압박 하에서 OOM 킬과 노드 재시작을 초래할 수 있습니다. vm.min_free_kbytes와 vm.watermark_scale_factor를 증가시키는 것은 커널에 더 많은 시간을 제공하여 예기치 않은 퇴거와 OOM 킬을 방지하는 데 중요했습니다. 더 높은 스왑니스(swappiness)는 중요한 I/O 대기 시간을 초래할 수 있습니다. 반면에 낮은 스왑니스(swappiness)는 파일 캐시를 삭제하는 것을 우선순위로 합니다. 이러한 매개변수와 Kubelet의 퇴거 임계값을 적절하게 조정하면 균형잡힌 메모리 압박 관리 전략을 생성할 수 있습니다. 그러나 느린 스왑 액세스에 의한 성능 저하 및 메모리 누수 마스킹의 위험이 있습니다.
CdXz5zHNQW_LEZYliBqbk.png