Computer Science/OS

๊ทธ๋ฆผ์œผ๋กœ ๋ฐฐ์šฐ๋Š” ๋ฆฌ๋ˆ…์Šค ๊ตฌ์กฐ 4์žฅ. ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ

์ฑ”๐Ÿป 2024. 2. 2. 14:14

์ถœ์ฒ˜: ๊ทธ๋ฆผ์œผ๋กœ ๋ฐฐ์šฐ๋Š” ๋ฆฌ๋ˆ…์Šค ๊ตฌ์กฐ

๊ทธ๋ฆผ์œผ๋กœ ๋ฐฐ์šฐ๋Š” ๋ฆฌ๋ˆ…์Šค ๊ตฌ์กฐ - ์˜ˆ์Šค24
์„ ๋ฐฐ๊ฐ€ ์˜†์—์„œ ํ•˜๋‚˜ํ•˜๋‚˜ ์•Œ๋ ค์ฃผ๋“ฏ ์นœ์ ˆํžˆ ์„ค๋ช…ํ•ด์ฃผ๋Š”์‹ค์Šต๊ณผ ๊ทธ๋ฆผ์œผ๋กœ ๋ฐฐ์šฐ๋Š” ๋ฆฌ๋ˆ…์Šค ์ง€์‹์˜ ๋ชจ๋“  ๊ฒƒ * Go ์–ธ์–ด์™€ Python, Bash ์Šคํฌ๋ฆฝํŠธ ์‹ค์Šต ์ฝ”๋“œ ์ œ๊ณต* ์ด ๋„์„œ๋Š” ใ€Ž์‹ค์Šต๊ณผ ๊ทธ๋ฆผ์œผ๋กœ ๋ฐฐ์šฐ๋Š” ๋ฆฌ๋ˆ…์Šค ๊ตฌ์กฐใ€์˜ ๊ฐœ์ •ํŒ์ž…๋‹ˆ๋‹ค.๋ฆฌ๋ˆ…์Šค ์ปค๋„ ์ฑ…์˜ ๋‘๊ป˜์™€ ๊นŠ์ด์— ...
https://www.yes24.com/Product/Goods/122109062

๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ จ ์ •๋ณด ์ˆ˜์ง‘ํ•˜๊ธฐ

free : ์‹œ์Šคํ…œ์— ์„ค์น˜๋œ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰๊ณผ ์‚ฌ์šฉ ์ค‘์ธ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰ ํ™•์ธ

used

= ํ”„๋กœ์„ธ์Šค ์‚ฌ์šฉ ๋ฉ”๋ชจ๋ฆฌ + ์ปค๋„ ์‚ฌ์šฉ ๋ฉ”๋ชจ๋ฆฌ

used ๊ฐ’์€ ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์— ๋”ฐ๋ผ ๋Š˜์–ด๋‚œ๋‹ค.

  • memuse.py
    #!/usr/bin/python3
    
    import subprocess
    
    # ์ ๋‹นํ•œ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ž‘์„ฑํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉ
    # ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์ด ์ž‘์€ ์‹œ์Šคํ…œ์ด๋ผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ์œผ๋กœ ์‹คํŒจํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฏ€๋กœ
    # size๊ฐ’์„ ์ค„์—ฌ์„œ ๋‹ค์‹œ ์‹คํ–‰
    size = 10000000
    
    print("๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ์ „์˜ ์ „์ฒด ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.")
    subprocess.run("free")
    
    array = [0]*size
    
    print("๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ํ›„์˜ ์ „์ฒด ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ ๋‚จ์€ ์šฉ๋Ÿ‰์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.")
    subprocess.run("free")
  1. ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด used ๊ฐ’์ด ๋Š˜์–ด๋‚œ ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ 
  1. memuse.py ์‹คํ–‰ ์งํ›„์— free ์‹คํ–‰ ์‹œ used๊ฐ’์ด ์ด์ „๊ณผ ๊ฑฐ์˜ ๊ฐ™์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ

    โ†’ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒํ•˜๋ฉด ์ปค๋„์€ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ชจ๋‘ ํ•ด์ œํ•จ.

buff/cache

= ํŽ˜์ด์ง€ ์บ์‹œ์™€ ๋ฒ„ํผ ์บ์‹œ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰

โ†’ ๋””์Šคํฌ์— ์žˆ๋Š” ๊ฑธ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•ด์„œ ์ ‘๊ทผ ์†๋„ ๋น ๋ฅด๊ฒŒ

๋””์Šคํฌ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์ฝ์–ด์™€์„œ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ ์บ์‹œ.

  • buff-cache.sh
    #!/bin/bash
    
    echo "ํŒŒ์ผ ์ž‘์„ฑ ์ „์˜ ์‹œ์Šคํ…œ ์ „์ฒด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค."
    free
    
    echo "1GB ํŒŒ์ผ์„ ์ƒˆ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ปค๋„์€ ๋ฉ”๋ชจ๋ฆฌ์— 1GB ํŽ˜์ด์ง€ ์บ์‹œ ์˜์—ญ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค."
    dd if=/dev/zero of=testfile bs=1M count=1K
    
    echo "ํŽ˜์ด์ง€ ์บ์‹œ ์‚ฌ์šฉ ํ›„์˜ ์‹œ์Šคํ…œ ์ „์ฒด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค."
    free
    
    echo "ํŒŒ์ผ ์‚ญ์ œ ํ›„, ์ฆ‰ ํŽ˜์ด์ง€ ์บ์‹œ ์‚ญ์ œ ํ›„์˜ ์‹œ์Šคํ…œ ์ „์ฒด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค."
    rm testfile
    free

ํŒŒ์ผ ์ž‘์„ฑ ์ „ํ›„๋กœ buff/cache ๊ฐ’์ด ์•ฝ 1GiB ์ •๋„ ๋Š˜์–ด๋‚ฌ๊ณ , ํŒŒ์ผ์„ ์‚ญ์ œํ•˜๋‹ˆ ๊ฐ’์ด ์›๋ž˜๋Œ€๋กœ ๋Œ์•„์˜ด

  • GB/GiB ์ฐจ์ด

sar ๋ช…๋ น์–ด๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ จ ์ •๋ณด ์ˆ˜์ง‘ํ•˜๊ธฐ

sar -r 1 5 : 5์ดˆ๋™์•ˆ 1์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

sar์€ free์™€ ๋‹ค๋ฅด๊ฒŒ ํ•œ ์ค„์— ์ •๋ณด๊ฐ€ ๋‹ค ๋‹ด๊ฒจ์ด์–ด์„œ ๊ณ„์†ํ•ด์„œ ์ •๋ณด ์ˆ˜์ง‘ ์‹œ ํŽธ๋ฆฌ

๋ฉ”๋ชจ๋ฆฌ ์žฌํ™œ์šฉ ์ฒ˜๋ฆฌ

  • ใ…‡

์‹œ์Šคํ…œ ๋ถ€ํ•˜๊ฐ€ ๋†’์•„์ง€๋ฉด free ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ค„์–ด๋“ฆ

์ด๋•Œ ์ปค๋„์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์€ ์žฌํ™œ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํ•ด์ œํ•ด์„œ free ๊ฐ’์„ ๋Š˜๋ฆฐ๋‹ค.

์žฌํ™œ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ = ํŽ˜์ด์ง€ ์บ์‹œ(๋™์ผํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋””์Šคํฌ์— ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด์ œํ•ด๋„ ๊ดœ์ฐฎ์Œ)

๐Ÿ’ก๊ฒฐ๋ก  : free ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ค„์–ด๋“ค๋ฉด ์žฌํ™œ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ(buff/cache - ๋ฒ„ํผ ์บ์‹œ, ํŽ˜์ด์ง€ ์บ์‹œ)์„ ํ•ด์ œํ•ด์„œ free ๊ฐ’์„ ๋Š˜๋ฆฐ๋‹ค.

ํ”„๋กœ์„ธ์Šค ์‚ญ์ œ์™€ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ•์ œ ํ•ด์ œ

์žฌํ™œ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•ด๋„ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด Out Of Memory(OOM) ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

์ด๋Ÿฐ ์ƒํ™ฉ์— ๋น ์ง€๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด ์ ๋‹นํžˆ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ณจ๋ผ์„œ ๊ฐ•์ œ ์ข…๋ฃŒ์‹œํ‚ค๊ณ  ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋งŒ๋“œ๋Š” OOM Killer๋ผ๋Š” ๊ธฐ๋Šฅ์ด ๋™์ž‘ํ•œ๋‹ค.

dmesg ๋ช…๋ น์–ด๋กœ OOM Killer ๋™์ž‘ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’ก์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ‘์ž๊ธฐ ์˜ˆ๊ณ ๋„ ์—†์ด ์ข…๋ฃŒ๋˜๋ฉด ํ™•์ธํ•ด๋ณด๊ธฐ

+) ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์€ ์ถฉ๋ถ„ํ•œ๋ฐ OOM Killer๊ฐ€ ๋™์ž‘ํ•œ๋‹ค๋ฉด ์–ด๋–ค ํ”„๋กœ์„ธ์Šค ๋˜๋Š” ์ปค๋„์— ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(memeory leak)๊ฐ€ ์ผ์–ด๋‚˜๊ณ  ์žˆ์„์ง€๋„ ๋ชจ๋ฅธ๋‹ค.

โ†’ ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ •๊ธฐ์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•ด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋Š˜์–ด๋‚˜๋Š” ์ˆ˜์ƒํ•œ ํ”„๋กœ์„ธ์Šค ์ฐพ๊ธฐ

ps aux ๋ช…๋ น์–ด๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ

RSS : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์—†์„ ๋•Œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ์ 

  • ๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™”
  • ๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค ๊ตฌํ˜„์ด ์–ด๋ ค์›€
  • ๋น„์ •์ƒ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ

๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™”

์œ„ ๊ทธ๋ฆผ์—์„œ ๋น„์–ด์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ•ฉ์น˜๋ฉด 300๋ฐ”์ดํŠธ์ด์ง€๋งŒ ๊ฐ์ž ๋”ฐ๋กœ๋”ฐ๋กœ 100๋ฐ”์ดํŠธ์”ฉ 3๊ฐœ์˜ ์˜์—ญ์œผ๋กœ ๋‚˜๋ˆ ์ ธ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 100๋ฐ”์ดํŠธ๋ณด๋‹ค ํฐ ์˜์—ญ์„ ํ™•๋ณดํ•˜๋ ค๋ฉด ์‹คํŒจํ•œ๋‹ค.

๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค ๊ตฌํ˜„์ด ์–ด๋ ค์›€

์–ด๋–ค ํ”„๋กœ๊ทธ๋žจ A์™€ B๊ฐ€ ์žˆ๊ณ  ๊ฐ๊ฐ ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ๋งคํ•‘๋˜๋„๋ก ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด A์™€ B๋Š” ๋™์‹œ์— ์‹คํ–‰์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

๋น„์ •์ƒ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ

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

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋Šฅ

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ : ์‹œ์Šคํ…œ์— ์„ค์น˜๋œ ๋ฉ”๋ชจ๋ฆฌ์— ์ง์ ‘ ์ ‘๊ทผํ•˜๋Š” ๋Œ€์‹ ์— ๊ฐ€์ƒ ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ„์ ‘์ ์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ธฐ๋Šฅ

๋ฌผ๋ฆฌ ์ฃผ์†Œ : ์‹œ์Šคํ…œ์— ์„ค์น˜๋œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์‹ค์ œ ์ฃผ์†Œ

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฃผ์†Œ 100์— ์ ‘๊ทผํ•˜๋ฉด, ์‹ค์ œ๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ๋Š” ์ฃผ์†Œ 600์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•œ๋‹ค.

2์žฅ์— ๋‚˜์˜จ readlf(-h ํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ ์ฃผ์†Œ ํ™•์ธ) cat /proc/<pid>/maps ์— ๋‚˜์˜ค๋Š” ๊ฒฐ๊ณผ๋Š” ๊ฐ€์ƒ ์ฃผ์†Œ๋‹ค. ํ”„๋กœ์„ธ์Šค์—์„œ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์— ์ง์ ‘ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•(๋ฌผ๋ฆฌ ์ฃผ์†Œ)์€ ์—†์Œ.

ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”

ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” : ๊ฐ€์ƒ ์ฃผ์†Œ๋ฅผ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค. ์ปค๋„ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด๋ถ€์— ์ €์žฅ๋˜์–ด์žˆ์Œ.

CPU๋Š” ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ์ชผ๊ฐœ์„œ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์ฃผ์†Œ๋Š” ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

x86_64 ์•„ํ‚คํ…์ฒ˜์—์„œ ํŽ˜์ด์ง€ ํฌ๊ธฐ๋Š” 4KiB๋‹ค.

๐Ÿ’ก์ฑ…์—์„œ๋Š” ์„ค๋ช…ํ•˜๊ธฐ ํŽธํ•˜๋„๋ก ํŽ˜์ด์ง€ ํฌ๊ธฐ๋ฅผ 100๋ฐ”์ดํŠธ๋กœ ์ •ํ•จ.

ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์—”ํŠธ๋ฆฌ : ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์—์„œ ํ•œ ํŽ˜์ด์ง€์— ๋Œ€์‘ํ•˜๋Š” ๋ฐ์ดํ„ฐ

โ†’ ๊ฐ€์žฅ ์ฃผ์†Œ์™€ ๋ฌผ๋ฆฌ ์ฃผ์†Œ ๋Œ€์‘ ์ •๋ณด ํฌํ•จ

๊ฐ€์ƒ ์ฃผ์†Œ 0~300์ด ๋ฌผ๋ฆฌ ์ฃผ์†Œ 500~800์— ๋งคํ•‘๋œ ๋ชจ์Šต

ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์€ ์ปค๋„์ด ์ž‘์„ฑํ•จ.

2์žฅ์—์„œ ์ปค๋„์€ ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ ์‹œ ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™•๋ณด(fork())ํ•˜๊ณ  ํ™•๋ณดํ•œ ๋ฉ”๋ชจ๋ฆฌ์— ์‹คํ–‰ ํŒŒ์ผ ๋‚ด์šฉ์„ ๋ณต์‚ฌ(execve())ํ•œ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ ์ด๋•Œ ๋™์‹œ์— ํ”„๋กœ์„ธ์Šค์šฉ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”๋„ ์ž‘์„ฑํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ€์žฅ ์ฃผ์†Œ์— ์ ‘๊ทผํ•  ๋•Œ ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฑด CPU๊ฐ€ ํ•˜๋Š” ์ž‘์—…์ด๋‹ค.

์ฃผ์†Œ 300~500์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ‘๊ทผํ•˜๋ฉด CPU์—์„œ ํŽ˜์ด์ง€ ํดํŠธ๋ผ๋Š” ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

ํŽ˜์ด์ง€ ํดํŠธ ๋ฐœ์ƒ ์‹œ ํŽ˜์ด์ง€ ํดํŠธ ํ•ธ๋“ค๋Ÿฌ ์ฒ˜๋ฆฌ๊ฐ€ ์‹คํ–‰๋œ๋‹ค.

๊ทธ ์ดํ›„์— SIGSEGV ์‹œ๊ทธ๋„์„ ํ”„๋กœ์„ธ์Šค์— ์†ก์‹ ํ•œ๋‹ค. SIGSEGV ์‹œ๊ทธ๋„์„ ๋ฐ›์€ ํ”„๋กœ์„ธ์Šค๋Š” ๋ณดํ†ต ๊ฐ•์ œ ์ข…๋ฃŒ๋œ๋‹ค.

package main

import "fmt"

func main() {
	// nil์€ ๋ฐ˜๋“œ์‹œ ์ ‘๊ทผ์— ์‹คํŒจํ•ด์„œ ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ํŠน์ˆ˜ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ
	var p *int = nil
	fmt.Println("๋น„์ •์ƒ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์ „")
	*p = 0
	fmt.Println("๋น„์ •์ƒ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ํ›„")
}

๋น„์ •์ƒ์ ์ธ ์ฃผ์†Œ์— ์ ‘๊ทผํ•œ ์งํ›„์— SIGSEGV ์‹œ๊ทธ๋„์„ ์ˆ˜์‹ ํ–ˆ๋Š”๋ฐ ์ด ์‹œ๊ทธ๋„์— ๋Œ€์ฒ˜ํ•˜์ง€ ๋ชปํ•ด์„œ ์ข…๋ฃŒ๋œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

C์–ธ์–ด๋‚˜ Go ์–ธ์–ด์ฒ˜๋Ÿผ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ง์ ‘ ๋‹ค๋ฃจ๋Š” ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๋ฉด SIGSEGV ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋žจ์ด ๊ฐ•์ œ ์ข…๋ฃŒ๋˜๋Š” ์ผ์ด ์ข…์ข… ๋ฐœ์ƒํ•œ๋‹ค.(ํŒŒ์ด์ฌ์€ ๋ฐœ์ƒ ์•ˆํ•จ. ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ์ง์ ‘ ์•ˆ ๋‹ค๋ฃจ๊ธฐ ๋•Œ๋ฌธ.)

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๊ธฐ

๋ฉ”๋ชจ๋ฆฌ ๋‹จํŽธํ™”

๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค ๊ตฌํ˜„์ด ์–ด๋ ค์›€

๊ฐ€์ƒ ์ฃผ์†Œ ๊ณต๊ฐ„์€ ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ๋งŒ๋“ค์–ด์ง„๋‹ค. ๋”ฐ๋ผ์„œ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์Šค ํ™˜๊ฒฝ์—์„œ ๊ฐ์ž์˜ ํ”„๋กœ๊ทธ
๋žจ์ด ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ๊ณผ ์ฃผ์†Œ๊ฐ€ ์ค‘๋ณต๋˜๋Š” ๊ฑธ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค.

๋น„์ •์ƒ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ

ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ๊ฐ€์ƒ ์ฃผ์†Œ ๊ณต๊ฐ„์ด ์žˆ๋‹ค๋Š” ๋ง์€ ์• ์ดˆ์— ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋˜์–ด์žˆ๋Š”์ง€ ์•Œ ์ˆ˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋œป์ด๋‹ค.

โ†’ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋น„์ •์ƒ์ ์ธ ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅ

ํ”„๋กœ์„ธ์Šค์— ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹นํ•˜๊ธฐ

<์ผ๋ฐ˜์ ์œผ๋กœ ์ƒ๊ฐํ•˜๋Š” ์ปค๋„์ด ํ”„๋กœ์„ธ์Šค์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๋Š” ์ ˆ์ฐจ>

  1. ์ปค๋„์— ๋ฉ”๋ชจ๋ฆฌ ์š”์ฒญ
  1. ์ปค๋„์ด ๋ฉ”๋ชจ๋ฆฌ ํ™•๋ณด
  1. ๊ฐ€์ƒ์ฃผ์†Œ ๊ณต๊ฐ„์— ๋งคํ•‘
  1. ๊ฐ€์ƒ ์ฃผ์†Œ ๊ณต๊ฐ„์˜ ์‹œ์ž‘ ์œ„์น˜ ์ฃผ์†Œ๋ฅผ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋Œ๋ ค์ค€๋‹ค.
  • detail

ํ•˜์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™•๋ณดํ•œ ์ˆœ๊ฐ„ ๋ฐ”๋กœ ์‚ฌ์šฉํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์กฐ๊ธˆ ์ง€๋‚œ ํ›„์— ์‚ฌ์šฉํ•˜๋Š” ์ผ์ด ๋งŽ์•„์„œ ๋ฆฌ๋ˆ…์Šค๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™•๋ณดํ•˜๋Š” ์ ˆ์ฐจ๋ฅผ ๋‘ ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆˆ๋‹ค.

  1. ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ํ• ๋‹น : ๊ฐ€์ƒ ์ฃผ์†Œ ๊ณต๊ฐ„์— ์ƒˆ๋กญ๊ฒŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๋งคํ•‘ํ•œ๋‹ค.
  1. ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น : ํ™•๋ณดํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•œ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ํ• ๋‹น: mmap() ์‹œ์Šคํ…œ ์ฝœ

mmap() ์‹œ์Šคํ…œ ์ฝœ ํ˜ธ์ถœ ์‹œ

  1. ํ”„๋กœ์„ธ์Šค์˜ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ๋ณ€๊ฒฝ
  1. ์š”์ฒญ๋œ ํฌ๊ธฐ๋งŒํผ ์˜์—ญ์„ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์— ์ถ”๊ฐ€๋กœ ๋งคํ•‘
  1. ๋งคํ•‘๋œ ์˜์—ญ์˜ ์‹œ์ž‘ ์ฃผ์†Œ๋ฅผ ํ”„๋กœ์„ธ์Šค์— ๋Œ๋ ค์ค€๋‹ค.

Meltdown ์ทจ์•ฝ์ ์˜ ๊ณตํฌ p.128

2018๋…„ ์ด์ „๊นŒ์ง€ ๋ฆฌ๋ˆ…์Šค๋Š” ์ปค๋„ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ”„๋กœ์„ธ์Šค ๊ฐ€์ƒ ์ฃผ์†Œ ๊ณต๊ฐ„์— ๋งคํ•‘ํ•˜๋Š” ๊ฒƒ์ด ๊ธฐ๋ณธ์ด์—ˆ์ง€๋งŒ ์ด์ œ๋Š” ์ทจ์•ฝ์  ๋•Œ๋ฌธ์— ๋”์ด์ƒ ๋งคํ•‘๋˜์ง€ ์•Š๋„๋ก ๊ธฐ๋ณธ๊ฐ’์ด ๋ฐ”๋€Œ์—ˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น: Demand paging

: ์‹ค์ œ๋กœ ์‚ฌ์šฉ ์‹œ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น

mmap() ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•œ ์งํ›„๋ผ๋ฉด ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ๋Œ€์‘ํ•˜๋Š” ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์•„์ง ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋Œ€์‹  ๊ฐ ํŽ˜์ด์ง€์— ์ฒ˜์Œ ์ ‘๊ทผํ•  ๋•Œ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•œ๋‹ค.(๋ฐ”๋กœ ํ• ๋‹นX, ํ•„์š”์‹œ ํ• ๋‹นO : ์ง€์—ฐ๋กœ๋”ฉ)

ํŽ˜์ด์ง€์— ์ ‘๊ทผ ์‹œ ์•„๋ž˜์™€ ๊ฐ™์€ ์ ˆ์ฐจ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•œ๋‹ค.

  1. ํ”„๋กœ์„ธ์Šค๊ฐ€ ํŽ˜์ด์ง€์— ์ ‘๊ทผ
  1. ํŽ˜์ด์ง€ ํดํŠธ๊ฐ€ ๋ฐœ์ƒ
  1. ์ปค๋„์˜ ํŽ˜์ด์ง€ ํดํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ๋™์ž‘ํ•ด์„œ ํŽ˜์ด์ง€์— ๋Œ€์‘ํ•˜๋Š” ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น

๋ฉ”๋ชจ๋ฆฌ ๋‹จ์œ„ : ํŽ˜์ด์ง€

Page In : ๋””์Šคํฌ์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋ฐ์ดํ„ฐ ์ฝ์–ด์˜ค๋Š” ๊ฒƒ

Page Out : ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๋Š” ๊ฒƒ

ํŽ˜์ด์ง€ ํดํŠธ ํ•ธ๋“ค๋Ÿฌ๋Š”

  1. ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์—”ํŠธ๋ฆฌ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํŽ˜์ด์ง€ ์ ‘๊ทผ โ†’ ํ”„๋กœ์„ธ์Šค์— SIGSEGV ๋ณด๋ƒ„.
  1. ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์—”ํŠธ๋ฆฌ๋Š” ์กด์žฌํ•ด๋„ ๋Œ€์‘ํ•˜๋Š” ๋ฌผ๋ฆฌ ๋ฉ”๋กœ๋ฆฌ๊ฐ€ ํ• ๋‹น๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ โ†’ ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๋Š” ์ฒ˜๋ฆฌ๋กœ ๋ถ„๊ธฐ.

  • demand-paging.py
    #!/usr/bin/python3
    
    import mmap
    import time
    import datetime
    
    ALLOC_SIZE  = 100 * 1024 * 1024
    ACCESS_UNIT = 10 * 1024 * 1024
    PAGE_SIZE   = 4096
    
    def show_message(msg):
        print("{}: {}".format(datetime.datetime.now().strftime("%H:%M:%S"), msg))
    
    show_message("์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ํ™•๋ณด ์ „. ์—”ํ„ฐ ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด 100๋ฉ”๊ฐ€ ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค: ")
    input()
    
    # mmap() ์‹œ์Šคํ…œ ์ฝœ ํ˜ธ์ถœ๋กœ 100MiB ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ํ™•๋ณด
    memregion = mmap.mmap(-1, ALLOC_SIZE, flags=mmap.MAP_PRIVATE)
    show_message("์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํ™•๋ณดํ–ˆ์Šต๋‹ˆ๋‹ค. ์—”ํ„ฐ ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด 1์ดˆ๋‹น 1MiB์”ฉ, ํ•ฉ๊ณ„ 100MiB ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค: ")
    input()
    
    for i in range(0, ALLOC_SIZE, PAGE_SIZE):
        memregion[i] = 0
        if i%ACCESS_UNIT == 0 and i != 0:
            show_message("{} MiB ์ง„ํ–‰์ค‘".format(i//(1024*1024)))
            time.sleep(1)
    
    show_message("์ƒˆ๋กญ๊ฒŒ ํ™•๋ณดํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ๋ชจ๋‘ ์ ‘๊ทผํ–ˆ์Šต๋‹ˆ๋‹ค. ์—”ํ„ฐ ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค: ")
    input()

์‹œ์Šคํ…œ ์ „์ฒด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๋ณ€ํ™”๋ฅผ ํ™•์ธํ•˜๊ธฐ

์‹œ์Šคํ…œ ์ „์ฒด ํŽ˜์ด์ง€ ํดํŠธ ๋ฐœ์ƒ ์ƒํ™ฉ์„ ํ™•์ธํ•˜๊ธฐ

sar -B : ์‹œ์Šคํ…œ ์ „์ฒด์˜ ํŽ˜์ด์ง€ ํดํŠธ ๋ฐœ์ƒ ํšŸ์ˆ˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ์ œ์—์„œ ํ”„๋กœ๊ทธ๋žจ์ด ํ™•๋ณดํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ ‘๊ทผํ–ˆ์„ ๋•Œ๋งŒ ์ดˆ๋‹น ํŽ˜์ด์ง€ ํดํŠธ ํšŸ์ˆ˜๋ฅผ ๋œปํ•˜๋Š” fault/s ํ•„๋“œ๊ฐ€ ๋Š˜์–ด๋‚˜๋Š” ๊ฑธ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ฒˆ์—ญ๊ธฐ์™€ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ

๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜ํ•  ๋•Œ๋งˆ๋‹ค mmap() ํ˜ธ์ถœ ใ„ดใ„ด

ํ”„๋กœ๊ทธ๋ž˜ ์‹œ์ž‘ ์‹œ mmap() ์‹œ์Šคํ…œ ์ฝœํ•ด์„œ ์–ด๋А ์ •๋„ ํฌ๊ธฐ์˜ ์˜์—ญ์„ ๋ฏธ๋ฆฌ ํ™•๋ณดํ•œ๋‹ค.

ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ๊ณ„์ธตํ™”

ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ 400๋ฐ”์ดํŠธ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ํ‰ํƒ„ํ•œ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์€ ์•„๋ž˜์ฒ˜๋Ÿผ ๋œ๋‹ค.

์ด์— ๋น„ํ•ด ๊ณ„์ธตํ˜• ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, 4ํŽ˜์ด์ง€๊ฐ€ ํ•œ ๋‹จ์œ„์ธ 2๋‹จ ๊ตฌ์กฐ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

์ด๋ ‡๊ฒŒํ•˜๋ฉด ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์ „์ฒด ์—”ํŠธ๋ฆฌ ๊ฐœ์ˆ˜๊ฐ€ 16๊ฐœ์—์„œ 8๊ฐœ๋กœ ์ค„์–ด๋“ ๋‹ค. ๋งŒ์•ฝ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์ด ์ปค์ง„๋‹ค๋ฉด ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์‚ฌ์šฉ๋Ÿ‰์ด ๋Š˜์–ด๋‚œ๋‹ค.

๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์˜ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์— ํ•„์š”ํ•œ ํ•ฉ๊ณ„ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์€ ํ‰ํƒ„ํ•œ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”๋ณด๋‹ค ๊ณ„์ธตํ˜• ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์ชฝ์ด ์ž‘์€ ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ด๋‹ค.

x86_64 ์•„ํ‚คํ…์ฒ˜๋ผ๋ฉด 4๋‹จ ๊ตฌ์กฐ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•œ๋‹ค. ๊ณ„์ธตํ˜• ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ํ†ตํ•ด ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์— ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์„ ํฌ๊ฒŒ ์ค„์ธ๋‹ค.

sar -r ALL : kbpgtbl ํ•„๋“œ์—์„œ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ํ™•์ธ ๊ฐ€๋Šฅ

Huge Page

1ํŽ˜์ด์ง€๋‹น ํฌ๊ธฐ๊ฐ€ 400๋ฐ”์ดํŠธ์ธ Huge Page๋กœ ๋ณ€๊ฒฝ

ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์—”ํŠธ๋ฆฌ ๊ฐœ์ˆ˜๊ฐ€ 20๊ฐœ์—์„œ 4๊ฐœ๋กœ ์ค„์Œ. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰๋„ ์ค„์–ด๋“ ๋‹ค.

๊ฒŒ๋‹ค๊ฐ€ fork() ํ•จ์ˆ˜์—์„œ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”์„ ๋ณต์‚ฌํ•˜๋Š” ๋น„์šฉ๋„ ์ค„์–ด์„œ fork() ํ•จ์ˆ˜ ์ฒ˜๋ฆฌ๊ฐ€ ๋นจ๋ผ์ง€๋Š” ํšจ๊ณผ๋„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’กDB๋‚˜ ๊ฐ€์ƒ ๋จธ์‹  ๋งค๋‹ˆ์ €์ฒ˜๋Ÿผ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋Œ€๋Ÿ‰์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” SW๋ผ๋ฉด Huge Page๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Œ

+) mmap() ํ•จ์ˆ˜์˜ flags ์ธ์ˆ˜์— MAP_HUGETL ํ”Œ๋ž˜๊ทธ ์ง€์ • ์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

Transparent Huge Page(THP)

๋ฉ”๋ชจ๋ฆฌ ํ™•๋ณด์‹œ ์ผ์ผ์ด Huge Page๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์š”์ฒญํ•ด์•ผ ํ•˜๋ฏ€๋กœ ํ”„๋กœ๊ทธ๋ž˜๋จธ ์ž…์žฅ์—์„œ๋Š” ๋ฒˆ๊ฑฐ๋กญ๋‹ค.

โ†’ ๋ฆฌ๋ˆ…์Šค์˜ THP ๊ธฐ๋Šฅ์œผ๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ

THP๋Š” ์—ฐ์†๋œ ์—ฌ๋Ÿฌ 4KB ํŽ˜์ด์ง€๊ฐ€ ์–ด๋–ค ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด ๊ทธ๊ฑธ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด์„œ ์ž๋™์œผ๋กœ Huge Page๋กœ ๋ฐ”๊พผ๋‹ค.

๋‹จ์  : ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€๋ฅผ ํ•ฉ์ณ์„œ ํ•˜๋‚˜์˜ Huge Page๋กœ ๋งŒ๋“œ๋Š” ๋ฐ ๋“ค์–ด๊ฐ€๋Š” ๋น„์šฉ, ๊ทธ๋ฆฌ๊ณ  Huge Page๋ฅผ ๊ตฌ์„ฑํ•˜๋˜ ์กฐ๊ฑด์ด ์„ฑ๋ฆฝํ•˜์ง€ ์•Š๊ฒŒ๋˜๋ฉด ์ปค๋‹ค๋ž€ ํŽ˜์ด์ง€๋ฅผ 4KB ํŽ˜์ด์ง€๋กœ ๋‹ค์‹œ ๋ถ„ํ• ํ•˜๋Š” ์ฒ˜๋ฆฌ ๋•Œ๋ฌธ์— ๋ถ€๋ถ„์ ์œผ๋กœ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

โ†’ ๊ด€๋ฆฌ์ž๊ฐ€ ์„ ํƒ์ ์œผ๋กœ ๊ฒฐ์ •.


Uploaded by N2T