우당탕탕

2026년 Linux 메모리 부족 원인 추적하면서 알게 된 변화와 팁 본문

Linux

2026년 Linux 메모리 부족 원인 추적하면서 알게 된 변화와 팁

모찌모찝 2026. 7. 21. 15:57

Linux 서버에서 갑자기 메모리가 부족해지면서 원인을 파악하느라 한참 고생했어요. 특히 2026년 들어서 새롭게 바뀐 커널 메모리 관리 방식 때문에 예전 방법만 믿고 해결하려다가 꽤 애먹었거든요.

이 글에서는 실제 제가 겪은 문제를 토대로 현재 시점에서 Linux 메모리 부족 원인을 어떻게 추적하는지, 그리고 2026년에 달라진 부분은 무엇인지 구체적인 명령어와 설정값까지 모두 공유할게요.

Linux 메모리 부족 원인 추적해본 후기 관련 이미지

Linux 메모리 부족 원인 추적해본 후기 관련 정보

개발 환경 / 버전 정보

제가 문제를 추적한 서버 환경은 Linux kernel 6.5.0 기반의 CentOS Stream 9였어요. 2026년 현재 최신 LTS 버전이라 메모리 관리 부분에서 몇 가지 중요한 업데이트가 적용되어 있죠.

추가로 cgroup v2가 대부분 기본 활성화된 상태라 자원 관리 방식이 작년과는 좀 달랐어요. 이게 메모리 사용률 체크할 때 가장 큰 변수 중 하나입니다.

Linux 메모리 부족 원인을 이렇게 찾아봤어요

사실 이 부분이 가장 중요한데, 저는 시스템 메모리를 한눈에 보기 위해 먼저 free -h 명령을 썼어요. 근데 이게 2026년에 표시되는 기준이 조금 바뀌었다는 걸 모르고 헷갈렸죠.

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           31Gi        29Gi       1.2Gi       800Mi       1.5Gi       1.8Gi
Swap:         8.0Gi       512Mi       7.5Gi

특히 available 필드는 2026년 커널에서 더 정확하게 실제 사용 가능한 메모리를 반영하도록 바뀌었는데, 아직도 많이들 free 값만 보고 ‘메모리가 부족하다’ 판단하는 실수를 하더라고요.

그리고 top이나 htop으로 프로세스별 메모리 사용량 확인할 때는 RES 필드를 집중했어요. 하지만 2026년 이후에는 공유 라이브러리 등 메모리 중복까지 반영하는 PSS (Proportional Set Size)라는 개념도 중요해졌더라고요.

PSS 확인 명령어 예시

PSS는 기본적으로 smem 유틸을 써야 볼 수 있는데, 서버에 없으면 설치부터 해야 해요.

$ sudo dnf install smem
$ smem -k -P your_process_name

이렇게 하면 프로세스별 PSS 메모리 사용량을 알 수 있어, 진짜로 어느 프로세스가 메모리를 많이 쓰는지 더 정확하게 파악할 수 있었어요.

그리고 중요한 건 2026년부터는 cgroup v2가 기본 활성화되어서 memory.stat 같은 파일에서 메모리 사용량을 직접 조회하는 게 훨씬 정확해요.

cgroup v2 메모리 상태 확인

$ cat /sys/fs/cgroup/memory/memory.stat
cache 12345678
rss 9876543
swap 123456

직접 살펴보니 작년과 달리 swap 사용량과 rss(실제 메모리 사용량) 체크가 훨씬 중요해졌더라고요.

Linux 메모리 부족 원인 추적해본 후기 직접 정리한 자료

Linux 메모리 부족 원인 추적해본 후기 관련 정보

이 부분에서 삽질했어요

가장 큰 문제는 2026년이 되면서 시스템 기본 메모리 관리 정책이 zswapzram을 더 적극적으로 활용하도록 바뀌었다는 점이에요.

초기엔 메모리 부족 상황에서 swap 사용량을 확인하지 않고, 무작정 프로세스 kill이나 OOM 상황으로 오인해서 불필요한 조치를 했었죠. 아래처럼 zswap 상태를 확인하는 걸 놓쳤던 거에요.

$ cat /sys/module/zswap/parameters/enabled
Y

enable 상태였다면 실제로 RAM 부족해도 swap 공간을 압축해서 쓰는 형태라 외형적으로 swap 사용량이 낮게 나타날 수 있어요. 그런데 기존 방식대로만 체크하면 swap 사용량이 적으니 괜찮다고 착각했답니다.

그래서 zswap과 zram 상태를 꼭 확인해서 메모리 부족 원인이 swap 압축 때문인지, 실제 물리 메모리 부족인지 구분하는 게 제일 중요해요.

이렇게 하면 됩니다: 2026년 메모리 부족 대응 실전 팁

제가 실제로 문제 해결할 때 쓴 순서대로 정리해 봤어요. 따라 하시면 어려움 줄 거예요.

  • free -h로 기본 메모리 상태 점검 → available 필드 확인하기
  • smem 설치해서 smem -k로 PSS 기준 프로세스 메모리 사용량 확인
  • cat /sys/fs/cgroup/memory/memory.stat로 cgroup 메모리 사용 내역 직접 읽기
  • cat /sys/module/zswap/parameters/enabledcat /sys/block/zram0/disksize로 zswap, zram 활성화 여부 및 상태 확인
  • 필요하면 vmstat 1로 실시간 메모리와 swap IO 상황 감시

실제로 이렇게 하나씩 체크하면서 이전에 보이지 않던 메모리 압축 사용량과 cgroup 별 메모리 제약 때문에 발생한 부족 현상을 알 수 있었어요.

특히 컨테이너 환경처럼 cgroup 제한 메모리를 넘는 경우엔 OOM 조기 발생할 수 있거든요. 이런 정보는 기존 top, free, ps 같은 도구만으론 확인이 어려워서 저는 systemd-cglscat /sys/fs/cgroup/memory/memory.usage_in_bytes 명령을 시간 날 때마다 체크했어요.

자주 물어보시는 것들

Q. 2025년 방식으로 메모리 확인했는데 왜 수치가 다른가요?

A. 2026년부터 kernel과 systemd에서 메모리 관리 정책이 바뀌면서 available 필드 계산법이 더 정확해졌고, cgroup v2가 기본이라 자원별 분리 측정 방식 차이 때문이에요.

Q. zswap과 zram 차이점이 궁금해요.

A. zswap은 기존 swap 장치를 압축 저장하는 방식이고 zram은 압축된 램 디스크를 swap 공간으로 활용하는 방식이에요. 둘 다 메모리 부족을 감지해서 스왑 사용량을 줄이려고 하는 기술인데, 2026년부터는 보통 둘을 함께 켜서 운영합니다.

Linux 메모리 부족 원인 추적해본 후기 참고 사진

Linux 메모리 부족 원인 추적해본 후기 관련 정보

사실 메모리 부족 문제는 이렇게 하나씩 데이터를 모으고 바뀐 커널 동작 방식을 이해해야 겨우 잡을 수 있었어요. 이번 경험 덕분에 클라우드 운영에도 더 자신감이 생겼고, 향후 컨테이너 환경이나 가상화 환경 대응에도 큰 도움이 될 것 같아요.

Comments