들어가며
이 글은 리눅스 운영체제에서 /tmp 디렉터리가 메모리에 미치는 영향에 대해 설명합니다.
요약
- /tmp 디렉터리의 파일시스템이 tmpfs이면, /tmp에 파일을 쓸 때 디스크가 아닌 메모리를 사용한다.
- /tmp에 큰 파일을 쓰면 shared memory와 buff/cache가 증가하여 메모리 사용률이 급격히 올라간다.
- systemd-tmpfiles-clean.timer 데몬이 /tmp 디렉터리를 주기적으로 정리해준다.
tmpfs 파일시스템을 사용하는 /tmp는 메모리를 사용한다
/tmp 디렉터리의 파일시스템이 tmpfs로 되어 있다면, 메모리 모니터링과 메모리 알람에 대해 신경을 써야 합니다. tmpfs 파일시스템은 작업을 디스크에 하는게 아니라 메모리에 하기 때문입니다.

리눅스의 /tmp 디렉터리는 임시 디렉터리 목적으로 많이 사용합니다. 리눅스 패키지 설치과정에서 필요한 파일을 /tmp 디렉터리에 저장하거나, 임시 파일이 필요한 경우 /tmp 디렉터리를 사용합니다.
만약 /tmp 디렉터리의 파일시스템이 tmpfs라면, /tmp 디렉터리에 큰 파일을 쓰는 경우 메모리 사용률이 올라갑니다. 파일 크기만큼 shared memory가 올라가고, I/O가 발생할 때마다 buff/cache 메모리가 증가합니다.
실습
이 내용이 정말 맞는지 직접 확인했습니다.
- 실습 github 주소: https://github.com/choisungwook/portfolio/blob/master/computer_science/linux_tmp_memory_monitoring/imgs/manual_test_4.png
실습방법
메모리 2GB를 갖는 ubuntu 컨테이너에서, 256MB씩 파일을 계속 생성했습니다. dd 명령어로 파일을 생성했습니다.
docker exec tmpfs-lab bash -lc 'mkdir -p /tmp/tmpfs-memory-manual'
for i in 1 2 3 4 5 6; do
docker exec tmpfs-lab bash -lc "dd if=/dev/zero of=/tmp/tmpfs-memory-manual/chunk_${i}.bin bs=1M count=256 conv=fsync status=none"
docker exec tmpfs-lab free -mh
docker exec tmpfs-lab grep -E "MemTotal|MemAvailable|Shmem|Cached" /proc/meminfo
sleep 15
done
모니터링 방법
프로메테우스로 cgroup 메트릭을 수집하여 컨테이너 메모리 사용률을 측정했습니다. 그리고 쉘에서 free 명령어와 /proc/meminfo를 확인했습니다.
$ free -mh
$ grep -E "MemTotal|MemAvailable|Shmem|Cached" /proc/meminfo
실습결과
shared memory가 증가하면서 메모리 사용률, buff/cache도 같이 증가했습니다. 또한, available 메모리도 감소했습니다.

컨테이너 메모리 사용률은 우상향했습니다.

/tmp 디렉터리의 파일을 삭제하면 컨테이너 메모리 사용률이 줄어듭니다.
rm -rf /tmp/*

/tmp 디렉터리를 주기적으로 삭제하는 systemd-tmpfiles-clean.timer 데몬
/tmp 디렉터리에 파일이 계속 남아있으면, 불필요하게 메모리를 많이 사용합니다. 그래서 주기적으로 /tmp 디렉터리를 정리하는 데몬이 있습니다. 데몬 이름은 systemd-tmpfiles-clean.timer입니다.
sudo systemctl status systemd-tmpfiles-clean.timer

데몬 설정은 tmp.conf 파일에 따릅니다. 아래는 AL2023 리눅스의 기본 설정입니다. 이 설정은 /tmp 디렉터리를 10일마다 삭제합니다. 또한, 시스템이 재부팅되면 /tmp 디렉터리 파일을 삭제합니다.
cat /usr/lib/tmpfiles.d/tmp.conf

'전공영역 공부 기록' 카테고리의 다른 글
| KMS 봉투암호화 쉽게 이해하기 - data key와 root key의 관계(실습, AWS KMS) (0) | 2026.03.02 |
|---|---|
| Claude Code 첫 프로젝트 후기 - SLO 계산기와 배포방법 고민 (0) | 2026.02.22 |
| Claude Code 동작 원리 정리 - Harness, Context, Memory까지 (0) | 2026.02.18 |
| 단순한 온프레미스 리다이렉트 서버를, AWS로 옮기는 방법들은 뭐가 있을까?(ALB vs CloudFront) (0) | 2026.02.17 |
| 내가 사용하는 Ghostty 설정 - 테마, 단축키, 분할화면 (macOS) (0) | 2026.02.16 |