smem 명령어
smem은 Linux 시스템의 메모리 사용량을 상세하게 분석할 수 있는 도구입니다.
특히 PSS(Proportional Set Size) 개념을 사용하여 공유 메모리를 정확하게 계산할 수 있다는 장점이 있습니다.
일반적으로 top, ps, free 등의 명령어는 공유 메모리를 정확히 반영하지 못하지만 smem은 이를 고려하여 실제 메모리 사용량을 보다 정확하게 확인할 수 있습니다.
1. smem 설치
smem은 기본적으로 설치되어 있지 않을 수 있으므로 필요 시 설치합니다.
Ubuntu/Debian 계열
sudo apt-get update
sudo apt-get install smem
CentOS/RHEL/Rocky/AlmaLinux 계열
sudo yum install smem
2. 기본 사용법
smem [options]
smem
PID User Command Swap USS PSS RSS
725 root /usr/sbin/gssproxy -D 512 4 23 700
출력 필드 설명
- PID : 프로세스 고유 식별자
- User : 프로세스를 실행한 사용자
- Command : 실행된 명령어 또는 프로세스
- Swap : 사용 중인 Swap 메모리
- USS : Unique Set Size (해당 프로세스만 사용하는 메모리)
- PSS : Proportional Set Size (공유 메모리를 비율로 계산한 실제 메모리 사용량)
- RSS : Resident Set Size (현재 물리 메모리에 올라간 메모리 크기)
메모리 지표 설명
USS (Unique Set Size)
- 해당 프로세스만 사용하는 순수 메모리
PSS (Proportional Set Size)
- 공유 메모리를 프로세스 수로 나누어 계산한 값
- 실제 메모리 사용량을 가장 정확하게 표현
RSS (Resident Set Size)
- 현재 물리 메모리에 로드된 메모리
- 공유 메모리를 중복 계산하기 때문에 실제보다 크게 보일 수 있음
주요 옵션
- -h : 도움말 출력
- -c : 출력할 컬럼 지정
- -t : 전체 합계 표시
- -w : 시스템 전체 메모리 정보
- -u : 사용자별 메모리 사용량
- -s : 특정 필드 기준 정렬
- -r : 역순 정렬
- -p : 퍼센트 표시
- -k : 단위 축약 표시
- --pie : 파이 그래프 출력
- --bar : 막대 그래프 출력
도움말 확인
$ smem -help
Usage: smem [options]
Options:
-h, --help show this help message and exit
-H, --no-header disable header line
-c COLUMNS, --columns=COLUMNS
columns to show
-t, --totals show totals
-a, --autosize size columns to fit terminal size
-R REALMEM, --realmem=REALMEM
amount of physical RAM
-K KERNEL, --kernel=KERNEL
path to kernel image
-m, --mappings show mappings
-u, --users show users
-w, --system show whole system
-P PROCESSFILTER, --processfilter=PROCESSFILTER
process filter regex
-M MAPFILTER, --mapfilter=MAPFILTER
map filter regex
-U USERFILTER, --userfilter=USERFILTER
user filter regex
-n, --numeric numeric output
-s SORT, --sort=SORT field to sort on
-r, --reverse reverse sort
-p, --percent show percentage
-k, --abbreviate show unit suffixes
--pie=PIE show pie graph
--bar=BAR show bar graph
-S SOURCE, --source=SOURCE
/proc data source
3. 사용 예시
전체 메모리 사용 요약
smem -w
Area Used Cache Noncache
firmware/hardware 0 0 0
kernel image 0 0 0
kernel dynamic memory 4084812 3778796 306016
userspace memory 3838800 233148 3605652
free memory 4320876 4320876 0
- kernel dynamic memory : 커널에서 사용하는 동적 메모리
- userspace memory : 사용자 프로세스 메모리
- free memory : 사용 가능한 메모리
전체 프로세스 메모리 확인
smem
PID User Command Swap USS PSS RSS
880 root /sbin/agetty -o -p -- \u -- 128 4 4 8
186799 zabbix /usr/sbin/zabbix_agentd -c 1248 12 59 1932
186780 root /usr/bin/VGAuthService 2068 12 65 2316
186770 _chrony /usr/sbin/chronyd -F 1 440 92 205 1696
186804 zabbix /usr/sbin/zabbix_agentd: ac 1112 168 288 2580
186745 root /usr/sbin/irqbalance --fore 252 216 337 3296
460380 root /usr/sbin/cron -f -P 0 280 368 2920
186803 zabbix /usr/sbin/zabbix_agentd: li 1048 288 444 2828
186802 zabbix /usr/sbin/zabbix_agentd: li 1044 296 453 2840
186800 zabbix /usr/sbin/zabbix_agentd: co 1196 352 455 1916
186801 zabbix /usr/sbin/zabbix_agentd: li 1044 300 458 2848
186767 _chrony /usr/sbin/chronyd -F 1 408 372 522 2960
Swap 사용량 기준 정렬
- Swap을 많이 사용하는 프로세스를 확인합니다.
smem -rs swap
PID User Command Swap USS PSS RSS
900 root /usr/bin/python3 /usr/share 6788 1484 1537 2536
852 root /usr/bin/python3 /usr/bin/n 6644 2308 2789 6124
186768 root /usr/libexec/packagekitd 2256 1168 1675 6780
186780 root /usr/bin/VGAuthService 2068 12 65 2316
867 root /lib/systemd/systemd-logind 1324 1424 2307 5140
186795 root /usr/sbin/ModemManager 1252 1176 1657 6520
186799 zabbix /usr/sbin/zabbix_agentd -c 1248 12 59 1932
186800 zabbix /usr/sbin/zabbix_agentd: co 1196 352 455 1916
RSS(Remote Set Size) 기준 정렬
- 메모리를 많이 사용하는 프로세스를 확인합니다.
smem -rs rss
특정 사용자만 확인
smem -rs rss | grep root
186790 root /sbin/multipathd -d -s 0 23084 23512 27892
436511 root /usr/bin/python3 /usr/bin/s 0 17224 17785 27636
465903 root /usr/bin/python3 /usr/bin/s 0 14436 14760 21000
460387 root /lib/systemd/systemd-journa 0 10856 11908 17712
1 root /lib/systemd/systemd --syst 0 3204 4706 11256
457230 root sshd: mtsysman [priv] 0 752 2354 9800
460390 root sshd: /usr/sbin/sshd -D [li 0 1632 2233 8508
186775 root /usr/libexec/udisks2/udisks 1192 1536 2135 7060
186768 root /usr/libexec/packagekitd 2256 1168 1674 6780
사용자별 메모리 사용량
smem -u
User Count Swap USS PSS RSS
_chrony 2 848 464 725 4656
syslog 1 452 1168 1346 4584
messagebus 1 308 1112 1826 3664
zabbix 6 6692 1416 2152 14944
systemd-network 1 0 1488 2192 7712
root 25 24628 88116 101198 204652
- Count : 실행 중인 프로세스 수
- Swap : 사용자별 Swap 사용량
- USS : 고유 메모리
- PSS : 실제 메모리 사용량
- RSS : 물리 메모리 사용량
4. 컬러 출력
터미널에서 색상을 지원할 경우 컬러로 출력할 수 있습니다.
smem --color=auto
5. 실시간 모니터링
일정 간격으로 결과를 갱신하여 실시간 모니터링할 수 있습니다.
smem -rt
smem 명령어는 다양한 옵션을 제공하여 메모리 사용에 대한 상세한 정보를 제공합니다.
참고URL
- Ubuntu Manpage : smem 명령어
'리눅스' 카테고리의 다른 글
| [draft] Docker Compose 리소스 제약 조건 구성 (0) | 2026.03.07 |
|---|---|
| [draft] docker compose ls 명령어 (0) | 2026.03.07 |
| [draft] Docker 데몬 소켓 연결 권한 오류 해결 (0) | 2026.03.07 |
| [draft] 도커 컨테이너 재시작 정책 사용 (0) | 2026.03.07 |
| [draft] tcpdump 명령어 (0) | 2026.03.06 |