[Linux] zram

zram์€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์ ˆ๊ฐ์„ ์œ„ํ•œ ์ปค๋„ ์ˆ˜์ค€ ๋ชจ๋“ˆ ์ค‘ ํ•˜๋‚˜๋‹ค.
๋‹จ์ˆœํ•œ ์„œ๋“œํŒŒํ‹ฐ๋Š” ์•„๋‹ˆ๊ณ , ์ปค๋„ ๋ฒ„์ „ 3.14(2014๋…„)๋ถ€ํ„ฐ ํฌํ•จ๋˜์—ˆ๋‹ค.




zram์˜ ๋™์ž‘ ๋ฐฉ์‹

์ด๊ฑด ๊ธฐ๋ณธ์ ์œผ๋กœ, ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ• ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ์ž์ฒด๋ฅผ ์••์ถ•ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค.

๋ฉ”๋ชจ๋ฆฌ์˜ ํŠน์ • ์˜์—ญ์— zRam์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ์ผ์ข…์˜ ์Šค์™‘ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•ด๋†“๊ณ , ๊ทธ ์˜์—ญ์„ ์ผ๋ฐ˜ ๋ฉ”๋ชจ๋ฆฌ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

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

ํ•˜์ง€๋งŒ, ์ด๊ฒƒ๋„ ๊ฒฐ๊ตญ์€ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์••์ถ•ํ•˜๊ณ  ์••์ถ•ํ•ด์ œ๋ฅผ ํ•˜๋Š” ํ–‰์œ„ ์ž์ฒด๋„ ๊ฒฐ๊ตญ์—๋Š” CPU ๋ฆฌ์†Œ์Šค ๋‚ญ๋น„๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๊ณ , ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋„‰๋„‰ํ•œ ํ™˜๊ฒฝ์ด๋ผ๋ฉด ์†๋„๋งŒ ๋–จ์–ด๋œจ๋ฆฌ๋Š” ํ–‰๋™์ด ๋  ์ˆ˜ ์žˆ๋‹ค.




์‹ค์ œ ์„ฑ๋Šฅ

๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ๋„ ์‹ค์ œ ์„ฑ๋Šฅ์„ ๊ฐ€์ ธ๊ฐ€๋ ค๋ฉด ์••์ถ•๋ฅ ์„ ์•„์ฃผ ๋†’๊ฒŒ ๊ฐ€์ ธ๊ฐ€์ง€๋Š” ๋ชปํ•œ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋”ฐ๋ผ ๋‹ค๋ฅด์ง€๋งŒ, ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” 2-3๋ฐฐ ์ •๋„์˜ ์••์ถ• ํšจ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.




์‹ค์ œ ์‚ฌ์šฉ๋ก€

๊ธฐ์ˆ  ์ž์ฒด๋Š” ๊ฝค ์˜ค๋ž˜๋๊ณ  ์•ˆ์ •ํ™”๋œ ๊ธฐ์ˆ ์ด์ง€๋งŒ, CPU ์„ฑ๋Šฅ์„ ๊ฐ‰์•„๋จน๋Š”๋‹ค๋Š” ์  ๋•Œ๋ฌธ์— ๋Œ€๋ถ€๋ถ„์˜ ๋ฆฌ๋ˆ…์Šค ๋ฐฐํฌํŒ์—๋Š” ๊บผ์ ธ์žˆ๋‹ค.
์ง€๊ธˆ ๋‚ด๊ฐ€ ์“ฐ๋Š” ์šฐ๋ถ„ํˆฌ๋งŒ ํ•ด๋„ zram์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•ด๋†จ๊ณ , ์“ฐ๋ ค๋ฉด ๋”ฐ๋กœ ์ œ์–ด ๋ชจ๋“ˆ์„ ์„ค์น˜ํ•ด์„œ ์ผœ์•ผ ํ•œ๋‹ค.

๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ์‚ฌ์šฉ๋ก€๋Š” Android๋‹ค. ์•ˆ๋“œ๋กœ์ด๋“œ๋Š” ์•„์ฃผ ์˜ˆ์ „๋ถ€ํ„ฐ ZRAM์„ ๊ธฐ๋ณธ์œผ๋กœ ํ™œ์„ฑํ™”ํ–ˆ๋‹ค.
์•ˆ๋“œ๋กœ์ด๋“œ๋ฅผ ํฌํ•จํ•œ ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ๋“ค์€ ์ผ๋ฐ˜ ๋ฐ์Šคํฌํƒ‘ ํ™˜๊ฒฝ์— ๋น„ํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ž‘์€ ํŽธ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์˜ˆ์™ธ์ ์œผ๋กœ Fedora์™€ OpenSuse, PopOS๋„ ZRAM์„ ๊ธฐ๋ณธ์œผ๋กœ ํ™œ์„ฑํ™”ํ•œ๋‹ค.




vs ์Šค์™‘ ๋ฉ”๋ชจ๋ฆฌ

ํ”ํžˆ๋“ค ๋””์Šคํฌ๊ฐ€ ์‹ธ๊ณ  ๋‚จ์•„๋„๋‹ˆ๊นŒ ๋””์Šคํฌ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ์Šค์™‘์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.
๊ทผ๋ฐ ์ด๊ฒŒ ์ •๋ง ๋น„์šฉ์ ์œผ๋กœ ์ข‹์€ ์„ ํƒ์ผ์ง€๋Š” ํ™•์‹คํ•˜์ง€ ์•Š๋‹ค.

์•Œ๋‹ค์‹œํ”ผ, ๋””์Šคํฌ๊ฐ€ ์‹ธ๊ธด ์‹ธ์ง€๋งŒ, ์“ฐ๊ธฐ๋ฅผ ๋ฐ˜๋ณตํ•˜๋‹ค๋ณด๋ฉด ๊ฒฐ๊ตญ ๋งˆ๋ชจ๋˜๋Š” ์†Œ๋ชจํ’ˆ์— ๋ถˆ๊ณผํ•˜๋‹ค.

๊ทธ๋ฆฌ๊ณ  RAM์€ ๋””์Šคํฌ๋ณด๋‹ค ์ˆ˜๋ช…์ด ํ›จ์”ฌ ๊ธธ๊ณ , ์“ฐ๊ธฐ๋กœ ์ธํ•œ ์ˆ˜๋ช… ์ €ํ•˜๊ฐ€ ๋ฏธ๋ฏธํ•œ ํŽธ์ด๋‹ค. ๊ทธ๋ž˜์„œ ์˜จํ”„๋ ˆ๋ฏธ์Šค ์‹œ์Šคํ…œ์„ ๊ด€๋ฆฌํ•˜๋Š” ์ž…์žฅ์—์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ถ”๊ฐ€๋กœ ์ข€ ์‚ฌ์„œ ZRAM์„ ๊ตฌ์„ฑํ•˜๋Š”๊ฒŒ ์ €๋ ดํ•  ์ˆ˜๋„ ์žˆ๋‹ค.




zswap?

์ด๊ฑด zram๊ณผ ๋น„์Šทํ•˜๋ฉด์„œ๋„ ์ข€ ๋‹ค๋ฅธ๋ฐ, ์•ฝ๊ฐ„ ๋…ผ๋ž€์ด ์žˆ๋Š” ๊ธฐ์ˆ  ์ค‘ ํ•˜๋‚˜์ธ ๊ฒƒ ๊ฐ™๋‹ค.
๋…์ž์ ์ธ ์‹œ์Šคํ…œ์ด๋ผ๊ธฐ๋ณด๋‹ค๋Š” ๋ฉ”๋ชจ๋ฆฌ์™€ ๋””์Šคํฌ ์Šค์™‘ ์ค‘๊ฐ„์— ๋ผ์ธ ์บ์‹œ ๋ ˆ์ด์–ด์— ๊ฐ€๊น๋‹ค.

zswap์€ ๋ฉ”๋ชจ๋ฆฌ์— ์••์ถ•ํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ด๋ผ๊ณ  ํŒ๋‹จํ•˜๋ฉด, ZRAM ์ฒ˜๋Ÿผ ์••์ถ•ํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์— ๋ณด๊ด€ํ•œ๋‹ค.
ํ•˜์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ์— ๋‘˜ ์ˆ˜ ์—†๊ฒ ๋‹ค๊ณ  ํŒ๋‹จํ•˜๋ฉด ๋””์Šคํฌ ๊ธฐ๋ฐ˜ ์Šค์™‘์— ๋ณด๊ด€ํ•œ๋‹ค.
zram๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ๊ณ ์ •๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๋ฏธ๋ฆฌ ํ• ๋‹นํ•ด๋†“์ง€๋Š” ์•Š๋Š”๋‹ค.

https://www.researchgate.net/figure/nteraction-among-swap-front-end-zswap-and-zpool_fig2_335941803

๋ฉ”๋ชจ๋ฆฌ์— ๊ตฌ๊ฒจ๋„ฃ๋˜ ๋ถ€์กฑํ•˜๋ฉด ๋ถ€์กฑํ•œ๋Œ€๋กœ ๋””์Šคํฌ๋ฅผ ์“ด๋‹ค๋Š” ์ž…์žฅ์˜ ๊ธฐ๋Šฅ์ด๋ผ์„œ, ๋ณ„๋„ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฟ์ณ๋†“๊ธฐ๋„ ์–ด๋ ค์šธ ์ •๋„๋กœ ๊ฐ๋ฐ•ํ•œ ํ™˜๊ฒฝ์ด๋ผ๋ฉด zswap์ด ๋” ์œ ์—ฐํ•œ ์„ ํƒ์ผ ์ˆ˜๋„ ์žˆ๋‹ค.
ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์ธ ๋ฐ์Šคํฌํ†ฑ ์ˆ˜์ค€ ํ™˜๊ฒฝ์ด๋ผ๋ฉด ๊ตณ์ด ์ด๊ฑธ ์“ธ ์ด์œ ๋Š” ์—†๋‹ค... zram๋งŒํผ ์ž˜ ์ œ๊ณต๋˜์ง€ ์•Š๊ณ , ์‚๊ฑฑ๋Œ€๋Š” ๋ถ€๋ถ„์ด ์กฐ๊ธˆ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

์ด๊ฒƒ๋„ ๋Œ€๋ถ€๋ถ„์˜ OS์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ๊บผ์ ธ์žˆ๋‹ค.

cat /sys/module/zswap/parameters/enabled

๊ทผ๋ฐ ๋˜ ํŠน์ดํ•˜๊ฒŒ ์•„์‚ฌํžˆ ๋ฆฌ๋ˆ…์Šค๋Š” zswap์„ ๊ธฐ๋ณธ์œผ๋กœ ์ผœ๋Š”๊ฒŒ ์˜ต์…˜์ด๋”๋ผ.



์ฐธ์กฐ
https://forum.endeavouros.com/t/what-is-zram-and-how-to-install-it/26314
https://wiki.archlinux.org/title/Zram
https://www.reddit.com/r/linux/comments/11dkhz7/zswap_vs_zram_in_2023_whats_the_actual_practical/
https://www.kernel.org/doc/html/latest/admin-guide/mm/zswap.html