| name | ram-check |
| description | Diagnose macOS RAM by memory pressure rather than raw usage โ runs one script that reports the pressure verdict, swap, the usage-vs-cache breakdown, top consumers, and an optional process-group total. Use when the user asks about memory or RAM, "why is my RAM so high", "is 36GB/48GB enough", whether to worry about usage, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋, ๋จ ์ฌ์ฉ๋ ๋์๋ฐ, ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑํ๊ฐ, ๋งฅ ๋ฉ๋ชจ๋ฆฌ ํ์ธ. |
ram-check
macOS์์ "RAM์ด ์ถฉ๋ถํ๊ฐ"์ ์ ๋ต ์งํ๋ **์ฌ์ฉ๋์ด ์๋๋ผ ์๋ ฅ(memory pressure)**์ด๋ค โ ์ด ์คํฌ์ ๊ทธ ๊ด์ ์ผ๋ก ์ง๋จํ๊ณ ํด์ํ๋ค.
Hard Rules
- ํ์ ์ ์๋ ฅยท์ค์์ผ๋ก ํ๋ค. ์ฌ์ฉ๋ ์ซ์๋ก ๊ฒ์ฃผ์ง ๋ง ๊ฒ. โ macOS๋ ๋น RAM์ ๋์คํฌ ์บ์๋ก ์ฑ์ฐ๋ฏ๋ก "์ฌ์ฉ๋"์ ํญ์ ๋๊ฒ ๋ณด์ธ๋ค. ๋์ ์ฌ์ฉ๋์ ์ ์์ด๊ณ , ์๋ ฅ ๋ ๋ฒจ๊ณผ ์ค์๋ง์ด ๋ถ์กฑ ์ฌ๋ถ๋ฅผ ๋งํ๋ค.
active/inactive/file-backed๋ฅผ "์ฌ์ฉ ์ค"์ผ๋ก ๋ณด๊ณ ํ์ง ๋ง ๊ฒ. โ ๋๋ถ๋ถ ํ์ ๊ฐ๋ฅํ ์บ์๋ค. ์ค์ง ์ ์ ๋ anonymous(์ฑ) + wired(์ปค๋) + compressed๋ฟ.
- ํ์ ์ ์๋ ฅ ๋ ๋ฒจ๋ก๋ง ํ๋ค โ ์ค์ ๋์ ๊ฐ(used)์ ํ๋๋ฆฌ์ง ๋ง ๊ฒ. โ ๋ ๋ฒจ 1์ด๋ฉด ์ฌ์ฉ๋์ด 90%์ฌ๋, ์ค์์ด GB ๋จ์๋ก ๋จ์ ์์ด๋ "์ง๊ธ์" ์ฌ์ ๋ค. ์ค์ used๋ ํ ๋ฒ ์ฐ๋ฉด ๋๋ฆฌ๊ฒ ํ์๋ผ ์๋ ฅ์ด ํ๋ฆฐ ๋ค์๋ ๊ณผ๊ฑฐ ํ์ ์ผ๋ก ๋จ๋๋ค โ ํ์ฌ ์๋ฐ์ ๋ ๋ฒจ๋ก๋ง ๋ณธ๋ค.
- "48GB ์์ด์ผ ํ๋" ๋ฅ ์ง๋ฌธ์ ์๋ ฅยท์ค์ ์ด๋ ฅ์ผ๋ก ๋ตํ๋ค. โ uptime ๋์ ์ค์์ด 0์ด๋ฉด ๊ทธ ๊ตฌ์ฑ์ผ๋ก ํ ๋ฒ๋ ๋ชจ์๋ ์ ์ด ์์๋ค๋ ๋ป = ์ถฉ๋ถ.
์๋ ฅ ๋ ๋ฒจ โ ํด์
| ๋ ๋ฒจ | ์ ํธ | ์์คํ
๋์ | ์ฌ์ฉ์์๊ฒ |
|---|
| 1 | ๐ข | ๋จ๋ RAM์ ์บ์๋ก ํ์ฉ | ์ถฉ๋ถ. ๊ฑฑ์ ๋ถํ์ |
| 2 | ๐ก | ์บ์ ๋น์ฐ๊ธฐ + ๋ฉ๋ชจ๋ฆฌ ์์ถ | ์์ง ๋ฒํ, ๋ฌด๊ฑฐ์ด ์์
์ค์ด๋ฉด ์ฌ์ |
| 4 | ๐ด | ์ค์ ์ ๊ทน ์ฌ์ฉ, ์ฑ ์ข
๋ฃ ์๋ฐ | ์ค์ ๋ถ์กฑ. ํ๋ก์ธ์ค ์ ๋ฆฌ/์ฆ์ค ๊ฒํ |
์ํฌํ๋ก์ฐ
- ์ง๋จ ์คํ โ verify: ์คํฌ๋ฆฝํธ ์ถ๋ ฅ์ ํ์ ยท๊ตฌ์ฑยท์์ ํ๋ก์ธ์ค๊ฐ ๋์จ๋ค.
scripts/mem-report.sh
scripts/mem-report.sh 'claude|Claude'
- ์๋ ฅ์ผ๋ก ํ์ โ verify: ํ์ ์ค(๐ข/๐ก/๐ด)๊ณผ ์ค์ ๊ฐ์ ๊ทธ๋๋ก ์ ๋ฌํ๊ณ , ์ฌ์ฉ๋ ์ซ์๋ "์บ์ ํฌํจ์ด๋ผ ๋๊ฒ ๋ณด์ด๋ ๊ฐ"์ด๋ผ๊ณ ๋ช
์ํ๋ค.
- ๊ตฌ์ฑ์ ํด์ โ verify: "์ค์ง ์ ์ (anonymous+wired+compressed)" vs "ํ์ ๊ฐ๋ฅํ ์บ์"๋ฅผ ๊ตฌ๋ถํด ๋ณด์ฌ์ค๋ค.
- ์ฌ์ ํ๋จยท์กฐ์น โ verify: ๐ข๋ฉด "์ถฉ๋ถ", ๐ก/๐ด๋ฉด ์๋ ์กฐ์น ๊ฐ์ด๋๋๋ก ํ์๋ ํฐ ๊ฒ๋ถํฐ ์ ์ํ๋ค.
Report Format
๋์๋ณด๋์ฒ๋ผ โ ์์ด์ฝ์ผ๋ก ํ๋์. ํยทvm_stat ์๋ฌธ ๊ธ์ง. ์์น GB ์์ 1์๋ฆฌ.
ํ์ ์ ์๋ ฅ ๊ฒ์ด์ง๋ก: ๐ขโฌโฌ ์ ์ / ๐ข๐กโฌ ์ฃผ์ / ๐ข๐ก๐ด ์๊ธ. ๋ ๋ฒจ 1/4 ๊ฐ์ ๋ด๋ถ ์ซ์๋ ์ฐ์ง ๋ง ๊ฒ.
๊ตฌ์ฑ์ ์ฌ์ฉ ์ค + ์ฌ์ = ์ด RAM์ผ๋ก ๋ฑ ๋ง๊ฒ. ์บ์ยทinactive๋ฅผ ๋ฐ๋ก ๋ํ์ง ๋ง ๊ฒ โ ์ด์ค ๊ณ์ฐ์ด๋ผ ํฉ์ด ์ด๋์ ๋๋๋ค.
๊ธฐ๋ณธ ํ์ (๐ข):
๐ข ์ฌ์ โ ์๋ ฅ ๐ขโฌโฌ ์ ์. ์ง๊ธ ๋ ํ์ ์์.
๐ ์ด 36GB = ๐ด ์ฌ์ฉ ์ค 25.4 (๐๊ณ ์ 5.0 + ๐ฆ์ฑ 13.8 + ๐๏ธ์์ถ 6.6) + ๐ ์ฌ์ 10.6 (29%)
๐ ์ฌ์ = ๐ ์ง๊ธ ๋น RAM 1.2GB (โป๏ธ ์บ์๊น์ง ํ์ ์ ์ต๋ 10.6GB)
๐ ํ๋: swapout/pageout 0 MB/s โ ์บ์ ํ์ ์์, ์พ์
๐ ํฐ ์๋น์: Claude 8.9GB ยท iOS ์๋ฎฌ๋ ์ดํฐ(๋ค์) ยท Chrome 4.0GB
โ ์ฑ ๊ฐ๋ฐ + Claude ์ธ์
๋์ OK. (์ค์ 1.1GB๋ ๊ณผ๊ฑฐ ํ์ )
๐ก/๐ด๋ฉด ํ ์ค ๋:
โ ๏ธ ์กฐ์น โ ์๋ฎฌ๋ ์ดํฐ ๋๊ธฐ โก ์ค๋๋ Claude ์ธ์
์ ๋ฆฌ โ ์๋ ์กฐ์น ๊ฐ์ด๋ ์ฐธ๊ณ
- ํ์ ยท๊ตฌ์ฑ(์ฌ์ฉ์ค+์ฌ์ )ยทํ๋ยทํฐ ์๋น์ยท๊ฒฐ๋ก ์ ํญ์. ๐ข์ด๋ฉด ์กฐ์น๋ง ์๋ต.
- ์ฌ์ ๋ ๋๋ก: ๐ ์ง๊ธ ๋น RAM(free+speculative)๊ณผ, โป๏ธ ์บ์๊น์ง ํ์ ์ ์ต๋์น. ์
1.2GB (์ต๋ 10.6GB).
- ๐ ํ๋ = 1์ด delta: ์๋ ฅ์ด "์ง๊ธ ์ผ๋ง๋ ์ฌ์ ๋(์ํ)"๋ฉด, ํ๋์ "์ง๊ธ ๋์คํฌ๋ก ์ฃผ๊ณ ๋ฐ๋ ์ค์ด๋". swapout/pageout์ด 0 ๊ทผ์ฒ๋ฉด ์พ์ , ๊ณ์ ํฌ๋ฉด ์บ์๋ฅผ ์ํํ๋ฉฐ ๋ฒ๋ฆฌ๋ ์ค(์ฒด๊ฐ ์ ํ). ๋์ ๊ฐ์ด ๋ณธ๋ค.
- ์ฌ์ฉ ์ค = wired + anonymous + compressed (๋น์ค๋ณต). ์ฌ์ = ์ด โ ์ฌ์ฉ ์ค.
- ํฐ ์๋น์๋ RSS ์์๋ผ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ์ค๋ณต์ผ๋ก ๋ถํ๋ ค์ง โ ์์ยท์๋ํฌ๊ธฐ๋ก๋ง, ์ ๋๊ฐ ํฉ์ฐ ๊ธ์ง.
์กฐ์น ๊ฐ์ด๋ (๐ก/๐ด์ผ ๋๋ง)
ํ์๋ ํฐ ๊ฒ๋ถํฐ. ํ๋ณด๋ ๊ทธ๋ฃน ์ง๊ณ๋ก ์ค์ ์ ์ ๋ฅผ ๋จผ์ ํ์ธ.
- ์ ์ฐ๋ iOS ์๋ฎฌ๋ ์ดํฐ / Docker / VM ์ข
๋ฃ โ ๋ณดํต GB ๋จ์๋ก ๊ฐ์ฅ ํผ
- ์ค๋๋ claudeยทnode CLI ์ธ์
์ ๋ฆฌ (๊ทธ๋ฃน ํฉ๊ณ๋ก ํ์ธ)
- ๋ธ๋ผ์ฐ์ ํญยทํฌํผ, ์ ์ฐ๋ ํฐ ์ฑ(Xcode ๋ฑ)
๋จผ์ ํ๋จ:
- ์ค์ used๋ง ๋๊ณ ์๋ ฅ ๋ ๋ฒจ 1 โ ๊ณผ๊ฑฐ ํ์ . ์๋ฌด๊ฒ๋ ์ ํด๋ ๋จ.
- ๋ ๋ฒจ 4๊ฐ ์์ฃผยท์ฌ๋ถํ
์งํ์๋ โ ์ผ์ ์ ๋ฆฌ ์๋ RAM ์ฆ์ค ์ ํธ.
- ๋ ๋ฒจ์ด ์ ํ๋ฆฌ๊ณ ์์ถยท์ค์ ๊ณ์ ๋์ โ ์ฌ๋ถํ
์ผ๋ก ์ด๊ธฐํ.
Anti-patterns
- WRONG: "RAM 18GB ์ฌ์ฉ ์ค์ด๋ผ ๊ฑฐ์ ๊ฝ ์ฐผ์ต๋๋ค." โ RIGHT: "์๋ ฅ ๋ ๋ฒจ 1ยท์ค์ 0์ด๋ผ ์ฌ์ ์
๋๋ค. 18GB ์ค ํฐ ๋ฉ์ด๋ฆฌ๋ ํ์ ๊ฐ๋ฅํ ์บ์์์."
- WRONG: top ํ๋ก์ธ์ค๋ง ๋์ดํ๊ณ ๋. โ RIGHT: ์๋ ฅ ํ์ ์ผ๋ก "๊ด์ฐฎ๋ค/๋ฌธ์ ๋ค"๋ฅผ ๋จผ์ ๋งํ๊ณ , ๊ทธ๋ค์ ์์ธ ํ๋ก์ธ์ค๋ฅผ ๋ณด์ฌ์ค๋ค.
- WRONG:
ps RSS ํฉ์ผ๋ก ์ ์ฒด ์ฌ์ฉ๋์ ์ถ์ . โ RIGHT: RSS๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ค๋ณต ๊ณ์ฐํด ๋ถํ๋ ค์ง๋ค. ์ ์ฒด ํ๋จ์ vm_stat/memory_pressure๋ก.
- WRONG: ์คํฌ๋ฆฝํธ stdout ์๋ฌธ์ ๊ทธ๋๋ก ๋ถ์ฌ์ ๋. โ RIGHT: Report Format๋๋ก ์ ๋ฆฌํ๋ค. ๐ข์ด๋ฉด 3์ค.
- WRONG: ํยท์ฌ๋ฌ ์น์
์ผ๋ก ์ฅํฉํ๊ฒ. โ RIGHT: ์ธ๋ผ์ธ ํ ์ค๋ค๋ก ๊ฐ๊ฒฐํ๊ฒ. ๐ข์ด๋ฉด ์์ธยท์กฐ์น ์๋ต.
- WRONG: ์ค์ ์ + ์บ์(file/inactive)๋ฅผ ๋ํด ๋ณด๊ณ โ ํฉ์ด ์ด RAM์ ๋๋๋ค(์ด์ค ๊ณ์ฐ). โ RIGHT:
์ฌ์ฉ ์ค + ์ฌ์ = ์ด์ผ๋ก๋ง.
Boundaries
- macOS ์ ์ฉ (
vm_stat, memory_pressure, sysctl vm.swapusage, pagesize).
- ์ค์ฝํ๋ ์ง๋จยทํด์๊น์ง. tmux/๋ฉ๋ด๋ฐ ์์ ฏ์ ์๋ ฅ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ๊พธ๋ ๋ฑ์ ์ค์ ๋ณ๊ฒฝ์ ์ด ์คํฌ ๋ฐ์ด๋ค โ ์ฌ์ฉ์๊ฐ ์ํ๋ฉด ๋ณ๋๋ก ์งํ.
- ์ถ๋ ฅ์ ์งง๊ฒ. ๋งค๋ฒ ์ ์ฒด vm_stat ์๋ฌธ์ ๋ถ์ด์ง ๋ง๊ณ , ์คํฌ๋ฆฝํธ๊ฐ ์์ฝํ ํ์ ยท๊ตฌ์ฑยท์์ N๋ง ์ ๋ฌํ๋ค.