Unix/Arch Linux

리눅스 데스크탑 메모리 점유율 계속 늘어나는 것 막기

ForceCore 2026. 7. 16. 18:08

이걸 대체 뭐라고 적어야 나중에 검색에 될까? memory creep? memory leak은 아니다.

 

브라우저, vscode 등을 줄줄이 켜면 나중에 꺼도 램 사용량이 회복 안 된다. 그리고 그런 것 안 켜도, Claude Code 같은걸 막 써도 비슷한 일이 일어난다.

 

원인은 정말 우연히 알게 되었다. Claude Code로 rust 로 된 레포를 컴파일 하면 컴퓨터가 죽을려고 하는 것이었다. 이게 그렇게 램을 처먹을 일인가? 원인은 /tmp 에 파일을 너무 많이 생성해서 그렇게 되는 것이었다. 모든 프로그램이 어느정도 /tmp 를 쓰니까 결국 재부팅 없이는 메모리가 모자라지는 것이다 요새 많은 배포판에서 디폴트로는 /tmp에 tmpfs라고 RAM 공간 일부가 할당되게 되어있다. 그걸 끄면 된다. 재부팅도 해야지 온전히 disable할 수 있으니 각오를 좀 해야 한다.

 

/etc/fstab 에 /tmp 마운트 관련 설정이 있나 체크하고 코멘트아웃 하거나 지운다. 그 뒤

sudo systemctl mask tmp.mount
sudo reboot

tmp.mount를 마스크시킨 뒤 재부팅하면 적용됨.

 

하지만 이렇게 하면 /tmp가 디스크에 기록되기 때문에 디스크를 꽉 채울수도 있다. 그러니 재부팅시 /tmp의 내용물을 싹 비우도록 세팅하자. 램에 저장될 때엔 알아서 지워져서 신경쓰지 않아도 되었던 부분이다.

sudo vi /etc/tmpfiles.d/clean-tmp.conf

 

내용물은:

D! /tmp 1777 root root 0

 

D!는 부팅시 1회성으로 /tmp를 정리하란 것이다.

1777은 /tmp의 사용권한임. 표준이니까 거의 무조건 이렇게 해야하고, 이렇게 해야지 /tmp가 공유 폴더로 되어서 모든 사용자들이 /tmp를 사용 가능하다.

 

적용이 되었는지 /tmp에다가 파일을 넣고 또 재부팅 해보자. 재부팅 전에 무슨 일이 일어날지 확인해도 좋다:

sudo systemd-tmpfiles --remove --create --boot --dry-run