Raspberry Pi ์„ฑ๋Šฅ: ZRAM ์ถ”๊ฐ€ ๋ฐ ์ปค๋„ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ณ€๊ฒฝ

๋ช‡ ์ฃผ ์ „์— ์ œ๊ฐ€ ํฌ์ŠคํŒ…ํ•œ ์ ์ด ์žˆ์–ด์š”. ํŒŒ์ธ๋ถ ํ”„๋กœ ๋ฆฌ๋ทฐ. Raspberry Pi 4๋„ ARM ๊ธฐ๋ฐ˜์ด๋ฏ€๋กœ ์ด์ „ ๊ธฐ์‚ฌ์—์„œ ์–ธ๊ธ‰ํ•œ ์ตœ์ ํ™” ์ค‘ ์ผ๋ถ€๊ฐ€ ์ด์— ๋งค์šฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์š”๋ น์„ ๊ณต์œ ํ•˜๊ณ  ์—ฌ๋Ÿฌ๋ถ„๋„ ๋™์ผํ•œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๊ฒฝํ—˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด๋ฅผ ์ปดํ“จํ„ฐ์— ์„ค์น˜ํ•œ ํ›„ ํ™ˆ ์„œ๋ฒ„ ๋ฃธ RAM์ด ๋ถ€์กฑํ•œ ์ˆœ๊ฐ„์—๋Š” ์‘๋‹ต์ด ๋งค์šฐ ๋Š๋ ค์ง€๊ณ  ์‹ฌ์ง€์–ด ์ •์ง€๋˜๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ZRAM์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ปค๋„ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ช‡ ๊ฐ€์ง€ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.

Raspberry Pi์—์„œ ZRAM ํ™œ์„ฑํ™”

Raspberry Pi ์„ฑ๋Šฅ: ZRAM ์ถ”๊ฐ€ ๋ฐ ์ปค๋„ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ณ€๊ฒฝ

์ฆˆ๋žŒ /dev/zram0(๋˜๋Š” 1, 2, 3 ๋“ฑ)์ด๋ผ๋Š” ์ด๋ฆ„์˜ RAM์— ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์— ์“ฐ์—ฌ์ง„ ํŽ˜์ด์ง€๋Š” ์••์ถ•๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋งค์šฐ ๋น ๋ฅธ I/O๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ  ์••์ถ•์„ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™•๋ณดํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Raspberry Pi 4์—๋Š” 1, 2, 4 ๋˜๋Š” 8GB RAM์ด ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ €๋Š” 1GB ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ์˜ˆ์ •์ด๋‹ˆ, ๋ชจ๋ธ์— ๋งž๊ฒŒ ์‚ฌ์šฉ๋ฒ•์„ ์กฐ์ •ํ•ด์ฃผ์„ธ์š”. 1GB ZRAM์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ๋ณธ ์Šค์™‘ ํŒŒ์ผ(๋Š๋ฆผ!)์ด ๋œ ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค zram ์Šค์™‘ ์„ค์น˜ ๋ฐ ์ž๋™ ๊ตฌ์„ฑ์„ ์œ„ํ•ด.

์œ„์— ๋งํฌ๋œ ์ €์žฅ์†Œ์— ์ง€์นจ์ด ์ œ๊ณต๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์„ค์น˜:

git clone https://github.com/foundObjects/zram-swap.git
cd zram-swap && sudo ./install.sh

๊ตฌ์„ฑ์„ ํŽธ์ง‘ํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.

vi /etc/default/zram-swap

๋˜ํ•œ, ZRAM์„ ์„ค์น˜ํ•˜์—ฌ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. zram-tools. ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๊ตฌ์„ฑ์„ ํŽธ์ง‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์— /etc/default/zramswap, ์•ฝ 1GB ZRAM์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

sudo apt install zram-tools

์„ค์น˜ ํ›„ ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ZRAM ์Šคํ† ๋ฆฌ์ง€ ํ†ต๊ณ„๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

sudo cat /proc/swaps
Filename				Type		Size	Used	Priority
/var/swap                               file		102396	0	-2
/dev/zram0                              partition	1185368	265472	5
pi@raspberrypi:~ $

ZRAM์˜ ๋” ๋‚˜์€ ์‚ฌ์šฉ์„ ์œ„ํ•ด ์ปค๋„ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ถ”๊ฐ€

์ด์ œ Raspberry Pi๊ฐ€ ๋งˆ์ง€๋ง‰ ์ˆœ๊ฐ„์— ๊ต์ฒด๋กœ ์ „ํ™˜๋˜์–ด ์ข…์ข… ์ •์ง€๋˜๋Š” ๊ฒฝ์šฐ ์‹œ์Šคํ…œ ๋™์ž‘์„ ์ˆ˜์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ์— ๋ช‡ ์ค„์„ ์ถ”๊ฐ€ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. /etc/sysctl.conf ๊ทธ๋ฆฌ๊ณ  ์žฌ๋ถ€ํŒ…ํ•˜์„ธ์š”.

์ด ๋ผ์ธ 1) ํ”ผํ•  ์ˆ˜ ์—†๋Š” ๊ธฐ์–ต์˜ ๊ณ ๊ฐˆ์„ ์ง€์—ฐ์‹œํ‚ฌ ๊ฒƒ์ด๋‹ค, ์ปค๋„ ์บ์‹œ์— ๋Œ€ํ•œ ์••๋ ฅ ์ฆ๊ฐ€ ๋ฐ 2) ๊ทธ๋“ค์€ ๊ธฐ์–ต๋ ฅ ๊ณ ๊ฐˆ์— ๋” ์ผ์ฐ ๋Œ€๋น„ํ•˜๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค, ๋ฏธ๋ฆฌ ๊ตํ™˜์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ZRAM์„ ํ†ตํ•ด ์••์ถ•๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ต์ฒดํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ํšจ์œจ์ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค!

ํŒŒ์ผ ๋์— ์ถ”๊ฐ€ํ•  ์ค„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. /etc/sysctl.conf:

vm.vfs_cache_pressure=500
vm.swappiness=100
vm.dirty_background_ratio=1
vm.dirty_ratio=50

๊ทธ๋Ÿฐ ๋‹ค์Œ ์‹œ์Šคํ…œ์„ ์žฌ๋ถ€ํŒ…ํ•˜๊ฑฐ๋‚˜ ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

sudo sysctl --system

vm.vfs_cache_์••๋ ฅ=500 ์บ์‹œ ์••๋ ฅ์ด ์ฆ๊ฐ€ํ•˜์—ฌ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฐ ์ธ๋ฑ์Šค ๊ฐœ์ฒด๋ฅผ ์บ์‹œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšŒ์ˆ˜ํ•˜๋ ค๋Š” ์ปค๋„์˜ ๊ฒฝํ–ฅ์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋žœ ์‹œ๊ฐ„ ๋™์•ˆ ๋” ์ ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์„ฑ๋Šฅ์˜ ๊ธ‰๊ฒฉํ•œ ํ•˜๋ฝ์€ ์กฐ๊ธฐ ๊ต์ฒด๋กœ ์ธํ•ด ์ƒ์‡„๋ฉ๋‹ˆ๋‹ค.

vm.swappiness = 100 ZRAM์„ ๋จผ์ € ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์ปค๋„์ด ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ์–ผ๋งˆ๋‚˜ ์ ๊ทน์ ์œผ๋กœ ๊ตํ™˜ํ• ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋Š˜๋ฆฝ๋‹ˆ๋‹ค.

vm.dirty_ground_ratio=1 & vm.dirty_ratio=50 - ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค๋Š” 1% ์ œํ•œ์— ๋„๋‹ฌํ•˜๋Š” ์ฆ‰์‹œ ๊ธฐ๋ก์„ ์‹œ์ž‘ํ•˜์ง€๋งŒ ์‹œ์Šคํ…œ์€ dirty_ratio 50%์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ๋™๊ธฐ I/O๋ฅผ ๊ฐ•์ œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๋„ค ์ค„(ZRAM๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ)์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ํ•„์—ฐ์ ์œผ๋กœ RAM์ด ๋ถ€์กฑํ•˜๊ณ  ์ €์ฒ˜๋Ÿผ ์Šค์™‘์œผ๋กœ์˜ ์ „ํ™˜์ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ์ด ์‚ฌ์‹ค์„ ์•Œ๊ณ  ZRAM์˜ ๋ฉ”๋ชจ๋ฆฌ ์••์ถ•์„ XNUMX๋ฐฐ๋กœ ๊ณ ๋ คํ•˜๋ฉด ์ด ์Šค์™‘์„ ๋ฏธ๋ฆฌ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์บ์‹œ์— ์••๋ ฅ์„ ๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ปค๋„์— "์ด๋ด์š”, ์บ์‹œ์— ์‚ฌ์šฉํ•  ์ถ”๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์—†์œผ๋‹ˆ ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์ œ๊ฑฐํ•˜๊ณ  ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ค‘์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋งŒ ์ €์žฅํ•˜์„ธ์š”"๋ผ๊ณ  ์•Œ๋ ค์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ."

์บ์‹ฑ์ด ๊ฐ์†Œํ•˜๋”๋ผ๋„ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์„ค์น˜๋œ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋Œ€๋ถ€๋ถ„์ด ์ ์œ ๋˜๋ฉด ์ปค๋„์€ ํ›จ์”ฌ ์ผ์ฐ ๊ธฐํšŒ์  ์Šค์™‘์„ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ CPU(์••์ถ•) ๋ฐ ์Šค์™‘ I/O๋Š” ๋งˆ์ง€๋ง‰ ์ˆœ๊ฐ„๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋ฅผ ํ•œ ๋ฒˆ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ๋Šฆ์—ˆ์–ด์š”. ZRAM์€ ์••์ถ•์„ ์œ„ํ•ด ์•ฝ๊ฐ„์˜ CPU๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ ์–‘์ด ์ ์€ ๋Œ€๋ถ€๋ถ„์˜ ์‹œ์Šคํ…œ์—์„œ๋Š” ZRAM์ด ์—†๋Š” ์Šค์™‘๋ณด๋‹ค ์„ฑ๋Šฅ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์ด ํ›จ์”ฌ ์ ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ

๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

pi@raspberrypi:~ $ free -h
total used free shared buff/cache available
Mem: 926Mi 471Mi 68Mi 168Mi 385Mi 232Mi
Swap: 1.2Gi 258Mi 999Mi

pi@raspberrypi:~ $ sudo cat /proc/swaps 
Filename Type Size Used Priority
/var/swap file 102396 0 -2
/dev/zram0 partition 1185368 264448 5

ZRAM์˜ 264448์€ ๊ฑฐ์˜ XNUMXGB์˜ ์••์ถ•๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ZRAM์œผ๋กœ ์ด๋™ํ–ˆ๊ณ  ํ›จ์”ฌ ๋Š๋ฆฐ ํŽ˜์ด์ง€ ํŒŒ์ผ๋กœ๋Š” ์•„๋ฌด๊ฒƒ๋„ ์ด๋™๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ด ์„ค์ •์„ ์ง์ ‘ ์‹œ๋„ํ•ด ๋ณด์„ธ์š”. ๋ชจ๋“  Raspberry Pi ๋ชจ๋ธ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๋ƒ‰๋™ ์‹œ์Šคํ…œ์ด ๊ธฐ๋Šฅ์ ์ด๊ณ  ์•ˆ์ •์ ์ธ ์‹œ์Šคํ…œ์œผ๋กœ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€๊นŒ์šด ์‹œ์ผ ๋‚ด์— ZRAM ์„ค์น˜ ์ „ํ›„์˜ ์‹œ์Šคํ…œ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋กœ ์ด ๊ธฐ์‚ฌ๋ฅผ ๊ณ„์† ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ์ด๋Ÿด ์‹œ๊ฐ„์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋™์•ˆ ์ง์ ‘ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•ด ๋ณด์‹œ๊ณ  ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. Raspberry Pi 4๋Š” ์ด๋Ÿฌํ•œ ์„ค์ •์„ ๊ฐ–์ถ˜ ์ง์Šน์ž…๋‹ˆ๋‹ค. ์ฆ๊ธฐ๋‹ค!

์ฃผ์ œ์— :

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€