๐Ÿ“Œ ๊ณต๋ถ€ ๊ณ„๊ธฐ

์ถ”๊ฐ€์ ์ธ ๋„์ปค ๊ณต๋ถ€๋ฅผ ์œ„ํ•ด ์œ ํŠœ๋ธŒ ๋”ฐ๋ฐฐ๋„ ๋„์ปค ์‹œ๋ฆฌ์ฆˆ๋ฅผ ๋ณด๋ฉด์„œ ์ •๋ฆฌํ•ด ๋ด…๋‹ˆ๋‹ค. 

๋ชฉ์ฐจ

 



๐Ÿ“7-1. ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌํ•˜๊ธฐ : ์ด๋ก 

๊ณต์‹๋ฌธ์„œ ๋งํฌ

 

Docker run reference

 

docs.docker.com

 

 

1๏ธโƒฃ ์ปจํ…Œ์ด๋„ˆ ํ•˜๋“œ์›จ์–ด ๋ฆฌ์†Œ์Šค ์ œํ•œ ์–ด๋–ป๊ฒŒ ํ•ด์š”?

 

์ปจํ…Œ์ด๋„ˆ๋Š” ํ˜ธ์ŠคํŠธ ํ•˜๋“œ์›จ์–ด ๋ฆฌ์†Œ์Šค์˜ ์‚ฌ์šฉ ์ œํ•œ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค. (ํ˜ธ์ŠคํŠธ์˜ ์ „๋ถ€ ์‚ฌ์šฉ๊ฐ€๋Šฅ)

ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฆฌ์†Œ์Šค ์ œํ•œ์„ ๊ฑธ์–ด์•ผํ•œ๋‹ค.

 

Docker ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ œํ•œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค

- CPU, Memory, Disk I/O 

 

$ docker run --help

๋ช…๋ น์–ด์—์„œ ๊ทธ ์ข…๋ฅ˜๋ฅผ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

  •  Memory ๋ฆฌ์†Œ์Šค ์ œํ•œ 

์ œํ•œ๋‹จ์œ„ b (๋ฐ”์ดํŠธ), k(ํ‚ค๋กœ๋ฐ”์ดํŠธ), m(๋ฉ”๊ฐ€๋ฐ”์ดํŠธ), g(๊ธฐ๊ฐ€๋ฐ”์ดํŠธ)๋กœ ํ• ๋‹น

์˜ต์…˜ ์˜๋ฏธ
--memory, -m ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ฌ์šฉํ•  ์ตœ๋Œ€ ๋ฉ”๋ชจ๋ฆฌ ์„ค์ •, ๊ทธ ์ด์ƒ ์“ฐ๊ฒŒ๋˜๋ฉด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์Šค์Šค๋กœ ํ‚ฌํ•จ
--memory-swap ์ปจํ…Œ์ด๋„ˆ์˜ ์Šค์™‘๋ฉ”๋ชจ๋ฆฌ[๊ฐ์ฃผ:1] ์˜์—ญ ์„ค์ •
์„ค์ •์‹œ ์ฃผ์˜)
์ด ์˜ต์…˜๋’ค์˜ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ + ์Šค์™‘๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ๋ฅผ ๋„ฃ๋Š”๋‹ค.
์Šค์™‘๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ์ด ์˜ต์…˜๋’ค์— ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ์™€ ๋™์ผํ•˜๊ฒŒ ์ ์–ด์ฃผ๋ฉด ๋˜๋ฉฐ
๋งŒ์•ฝ ์Šค์™‘ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์„ค์ •์„ ๋”ฐ๋กœ ์•ˆํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์˜ 2๋ฐฐ๊ฐ€ ์„ค์ •๋œ๋‹ค.
--memory-reservation --memory ๊ฐ’๋ณด๋‹ค ์ ์€ ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑํ•˜๋Š” ์†Œํ”„ํŠธ ์ œํ•œ ๊ฐ’ ์„ค์ • 
--oom-kill-disable OOM Killer[๊ฐ์ฃผ:2]๊ฐ€ ํ”„๋กœ์„ธ์Šค killํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ณดํ˜ธ
$ docker run -d -m 512m nginx:1.14
      ๋ฉ”๋ชจ๋ฆฌ 512 ๋ฉ”๊ฐ€ ๋ฐ”์ดํŠธ๋กœ ์„ค์ •  ์ด๋ฏธ์ง€๋ช…:ํƒœ๊ทธ
      -m 1g --memory-reservation 500m  
      ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ๋Š” ์ตœ์†Œ 500๋ฉ”๊ฐ€ ๋ฐ”์ดํŠธ๋ฅผ ๋ณด์žฅ๋ฐ›๊ณ  ์ตœ๋Œ€ 1๊ธฐ๊ฐ€๋ฐ”์ดํŠธ ์‚ฌ์šฉ๊ฐ€๋Šฅ   
      -m 200m --memory-swap 300m  
      ๋ฉ”๋ชจ๋ฆฌ๋Š” 200๋ฉ”๊ฐ€๋ฐ”์ดํŠธ ํ• ๋‹นํ•˜๊ณ  ์Šค์™‘ ๋’ค์— 300๋ฉ”๊ฐ€ ๋ฐ”์ดํŠธ๋ฅผ ์จ๋†จ์œผ๋‹ˆ
200m + 300m = 500m ์ผ๊นŒ? โŒ
๋’ค์˜ 300m๋Š” ์•ž์˜ 200m๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด ์‹ค์ œ ์Šค์™‘๋ฉ”๋ชจ๋ฆฌ๋Š” 100m์— ํ•ด๋‹น
 
      -m 200m --oom-kill-disable  
      ๋ฉ”๋ชจ๋ฆฌ๋Š” 200m ํ• ๋‹นํ•˜๊ณ  ๋ฌผ๋ฆฌ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ด์„œ oom killer๊ฐ€ ์‹คํ–‰๋ฌ์„ ๋•Œ์—๋„ ์ด ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ฐ•์ œ ์ข…๋ฃŒ๋˜์ง€ ์•Š๊ณ  ์‹คํ–‰์„ ๋ณด์žฅ๋ฐ›๋Š”๋‹ค.   

 

 

  •  CPU ๋ฆฌ์†Œ์Šค ์ œํ•œ 
์˜ต์…˜ ์˜๋ฏธ
--cpus ์ปจํ…Œ์ด๋„ˆ์— ํ• ๋‹นํ•  ์ตœ๋Œ€ CPI core์ˆ˜๋ฅผ ์ง€์ •. ์–ด๋–ค core๋ฅผ ์“ธ์ง€๋Š” ์ง€์ •๋˜์ง€ ์•Š๋Š”๋‹ค
--cpuset-cpus ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” CPU๋‚˜ ์ฝ”์–ด๋ฅผ ํ• ๋‹น. CPU index๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘.
--cpu--share ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” CPU์˜ ์ƒ๋Œ€ ๊ฐ€์ค‘์น˜ ์„ค์ •.
๋ง๊ทธ๋Œ€๋กœ CPU๋ฅผ ์ƒ๋Œ€์ ์œผ๋กœ ์–ผ๋งˆ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ์„ค์ •ํ•œ๋‹ค. ๊ธฐ๋ณธ์€ 1024์ด๋‹ค.
$ docker run -d -cpus=".5" ubuntu:20.04
      ์ด ์ปจํ…Œ์ด๋„ˆ๋Š” ์ตœ๋Œ€ 0.5๊ฐœ์˜ CPUํŒŒ์›Œ ์‚ฌ์šฉ๊ฐ€๋Šฅ ์ด๋ฏธ์ง€๋ช…:ํƒœ๊ทธ
      -cpuset-cpus 0-3  
      ์ด ์ปจํ…Œ์ด๋„ˆ๋Š” ์ธ๋ฑ์Šค 0๋ถ€ํ„ฐ 3๊นŒ์ง€ ํ•ด๋‹นํ•˜๋Š” CPU๊ฐ€ ํ• ๋‹น  
      -cpu-shares 2048  
      ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” CPU ์ƒ๋Œ€ ๊ฐ€์ค‘์น˜๋ฅผ 2048๋กœ ์„ค์ •
๋งŒ์•ฝ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ 1024๋ผ๋ฉด ์ด ์ปจํ…Œ์ด๋„ˆ๋Š” ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์— ๋น„ํ•ด 2๋ฐฐ ์‚ฌ์šฉ๊ฐ€๋Šฅ
 

 

์˜ต์…˜ ์˜๋ฏธ
--blkio-weight
--blkio-weight-device
๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋™์ž‘์‹œ block I/O์— I/O ์Šค์ผ€์ฅด๋ง์„ ๋ฐ›๊ฒŒ ๋˜๋Š”๋ฐ ์—ฌ๊ธฐ์„œ Quota(์ฟผํ„ฐ/๋ชซ)๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ 100-1000๊นŒ์ง€ ์„ ํƒ๊ฐ€๋Šฅํ•˜๋‹ค
๊ธฐ๋ณธ์€  500
weight๋Š” ์ผ๋‹จ ์ƒ๋Œ€์  ๊ฐ€์ค‘์น˜๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ ๋งŒ์•ฝ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ 500์ด๊ณ  ํ•œ ์ปจํ…Œ์ด๋„ˆ๋งŒ 1000์ผ์‹œ I/O ์Šค์ผ€์ฅด๋ง์„ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์— ๋น„ํ•ด 2๋ฐฐ๋” ํ• ๋‹น ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. 
-devide๊ฐ€ ๋ถ™์€ ์˜ต์…˜์€ ํŠน์ • ๋””๋ฐ”์ด์Šค์— ๋Œ€ํ•ด์„œ๋งŒ ๊ฐ€์ค‘์น˜๋ฅผ ๋ถ€์—ฌํ•œ๋‹ค. 
--device-read-bps
--device-write-bps
ํŠน์ • ๋””๋ฐ”์ด์Šค์— ๋Œ€ํ•œ ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ ์ž‘์—…์˜ ์ดˆ๋‹น ์ œํ•œ์€ kb, mb, gb ๋‹จ์œ„๋กœ ์„ค์ •
--device-read-iops
--device-write-iops
์ปจํ…Œ์ด๋„ˆ์˜ read/write ์†๋„์˜ ์ฟผํ„ฐ๋ฅผ ์„ค์ •ํ•œ๋‹ค
์ดˆ๋‹น ์ฟผํ„ฐ๋ฅผ ์ œํ•œํ•ด์„œ I/O๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. ์„ค์ •์‹œ 0 ์ด์ƒ์˜ ์ •์ˆ˜๋กœ ํ‘œ๊ธฐํ•˜๋ฉฐ ์ด ์ˆ˜๋Š” ์•„๋ž˜ ์‹์˜ iops ๊ฐ’์— ํ•ด๋‹นํ•œ๋‹ค. 
์ดˆ๋‹น ๋ฐ์ดํ„ฐ ์ „์†ก๋Ÿ‰ = IOPS * ๋ธ”๋Ÿญํฌ๊ธฐ (๋‹จ์œ„ ๋ฐ์ดํ„ฐ ์šฉ๋Ÿ‰)
$ docker run  -it --rm  --blkio-weight 100 ubuntu:latest /bin/bash
      (๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ๋“ค์ด ์ „๋ถ€ 500์ด๋ฉด) ์ด ์ปจํ…Œ์ด๋„ˆ์˜ Block IO์˜ ์ฟผํ„ฐ๋ฅผ 100์œผ๋กœ ํ•˜์—ฌ 500๋ณด๋‹ค ์ƒ๋Œ€์ ์œผ๋กœ ์ ๊ฒŒ ๋ฆฌ์†Œ์Šค๋ฅผ ํ• ๋‹น ๋ฐ›๊ฒ ๋‹ค    
      --device-write-bps /dev/vda:1mb    
      ๋””๋ฐ”์ด์Šค vda์— writeํ•ด์ค„๋•Œ๋Š” ์ตœ๋Œ€ 1๋ฉ”๊ฐ€๋ฐ”์ดํŠธ๋กœ ์„ค์ •    
      --device-write-iops /dev/vda:100    
      ๋””๋ฐ”์ด์Šค vda์— iops๊ฐ’ 100์„ ํ• ๋‹น    

 


2๏ธโƒฃ ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์šฉ ๋ฆฌ์†Œ์Šค๋ฅผ ํ™•์ธํ•˜๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง ํˆด์ด ์žˆ๋‚˜์š”?

 

  • ๋„์ปค ๋ชจ๋‹ˆํ„ฐ๋ง ๋ช…๋ น์–ด

1) ์‹คํ–‰์ค‘์ธ ์ปจํ…Œ์ด๋„ˆ์˜ ๋Ÿฐํƒ€์ž„ ํ†ต๊ณ„ ํ™•์ธ

docker stats [์˜ต์…˜] [์ปจํ…Œ์ด๋„ˆ]

 

2) ๋„์ปค ํ˜ธ์ŠคํŠธ์˜ ์‹ค์‹œ๊ฐ„ event ์ •๋ณด ์ˆ˜์ง‘ ๋ฐ ์ถœ๋ ฅ

docker events -f container=<์ปจํ…Œ์ด๋„ˆ๋ช…>
docker image -f container=<์ปจํ…Œ์ด๋„ˆ๋ช…>

 

  • cAdvisor

๊ตฌ๊ธ€์—์„œ ๋งŒ๋“  ๋„์ปค ๋ชจ๋‹ˆํ„ฐ๋ง ํˆด

 

GitHub - google/cadvisor: Analyzes resource usage and performance characteristics of running containers.

Analyzes resource usage and performance characteristics of running containers. - GitHub - google/cadvisor: Analyzes resource usage and performance characteristics of running containers.

github.com

 

 


๐Ÿ“7-2. ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌํ•˜๊ธฐ : ์‹ค์Šต

 

โž• ์ด ์‹ค์Šต ์ „์— ์ถ”๊ฐ€๋กœ ์•Œ์•„๋‘˜ ๋‚ด์šฉ

๋ฆฌ๋ˆ…์Šค์˜ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ํ”„๋กœ๊ทธ๋žจ ์ค‘ ํ•˜๋‚˜ Stress

๋”๋ณด๊ธฐ

๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ํ”„๋กœ๊ทธ๋žจ stress๋ฅผ ์ด์šฉํ•œ dockerfile ์ƒ์„ฑ

๋น„์ฅฌ์–ผ ์—๋””ํ„ฐ๋กœ dockerfile ์ƒ์„ฑ

 

์ปจํ…Œ์ด๋„ˆ ๋นŒ๋“œํ•˜๊ณ  

 

์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์น˜๋ฉด 2๊ฐœ์˜ cpu์— ์ž‘์—…๋ถ€ํ•˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ด

stress --cpu 2

์•„๋ž˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ๋กœ ํ”„๋กœ์„ธ์Šค 2๊ฐœ์™€ ์‚ฌ์šฉํ•  ๋ฉ”๋ชจ๋ฆฌ ๋งŒํผ์„ ๋ถ€ํ•˜ ๋ฐœ์ƒ์‹œํ‚ด

stress --vm 2 --vm-bytes <์‚ฌ์šฉํ•  ํฌ๊ธฐ>

 

1๏ธโƒฃ ์ปจํ…Œ์ด๋„ˆ ๋ฆฌ์†Œ์Šค ์ œํ•œ

  •  ๋ฉ”๋ชจ๋ฆฌ ๋ฆฌ์†Œ์Šค ์ œํ•œ 
$ docke run [-m ๋ฉ”๋ชจ๋ฆฌํฌ๊ธฐ] [--memory-wap ๋ฉ”๋ชจ๋ฆฌ+์Šค์™‘ํฌ๊ธฐ] <์ด๋ฏธ์ง€๋ช…> [๋ช…๋ น์–ด]
# $ docke run -m 100m --memory-swap 100m stress:latest stress --vm 1 --vm-bytes 90m -t 5s
$ docker run -m 100m --memory-swap 100m stress:latest stress --vm 1 --vm-bytes 90m -t 5s
    ๋ฌผ๋ฆฌ๋ฉ”๋ชจ๋ฆฌ ๋ฌผ๋ฆฌ๋ฉ”๋ชจ๋ฆฌ+์Šค์™‘๋ฉ”๋ชจ๋ฆฌ ์ด๋ฏธ์ง€ ๋ช…๋ น์–ด stress 90mb์˜ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€ํ•˜๋ฅผ 5์ดˆ๊ฐ„

์„ฑ๊ณต

100mb์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ 90mb๋งŒ ์‚ฌ์šฉํ–ˆ์œผ๋ฏ€๋กœ ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰ 

ํ•˜์ง€๋งŒ ๋งŒ์•ฝ 90mb๊ฐ€ ์•„๋‹ˆ๋ผ 150mb๋ฅผ ์ค€๋‹ค๋ฉด?

์‹คํŒจ

์ตœ๋Œ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์˜ค๋ฒ„ํ•˜์—ฌ ์‹คํŒจ๊ฐ€ ๋˜์–ด ๋ฐ”๋กœ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ kill๋œ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์—ฌ๊ธฐ์„œ ์Šค์™‘๋ฉ”๋ชจ๋ฆฌ ์˜ต์…˜์„ ์ง€์›Œ์ค€๋‹ค๋ฉด?

์„ฑ๊ณต!

์™œ๋ƒํ•˜๋ฉด ์Šค์™‘๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ช…๋ น์–ด๋กœ ์„ค์ •ํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด ๋ฌผ๋ฆฌ๋ฉ”๋ชจ๋ฆฌ์˜ 2๋ฐฐ๋กœ ๊ธฐ๋ณธ ์„ค์ •์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— 

--memory-swap 200m๋ฅผ ์„ค์ •ํ•ด์ค€ ๊ฒƒ์ฒ˜๋Ÿผ ๋˜์–ด ์ •์ƒ ์ž‘๋™ํ•œ๋‹ค. 

 

๐Ÿšฉ ํŠธ๋Ÿฌ๋ธ” (ํ•ด๊ฒฐ์€ ์•„์ง์ด๊ณ  ์ผ๋‹จ ์ฒดํฌ)

๋”๋ณด๊ธฐ

๋˜์ž‰?? oom killer๋กœ ํ…Œ์ŠคํŠธ ํ•ด๋ณด๋ ค๊ณ  ํ•˜๋‹ˆ ๋‹น์‹ ์˜ kernel์—์„œ ์ง€์›์„ ์•ˆํ•ด oom killer ๋‚ด์šฉ์„ ์‚ญ์ œํ–ˆ๋‹ค๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์˜จ๋‹ค.

docker run -d -m 100m --name m4 --oom-kill-disable=true nginx
inspect๋กœ ๋ด๋„ ์•ˆ๋˜์–ด ์žˆ์Œ

 

ubuntu ์ „์ฒด๊ฐ€ ๊ทธ๋Ÿฐ๊ฑด ์•„๋‹Œ๊ฑฐ ๊ฐ™๊ณ  .. ๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ ํ˜„์žฌ ๋‚˜๋ž‘ ๊ฐ™์€ 22.04 LTS์—์„œ ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ๊ฒช์—ˆ๋‹ค๋Š” ๊ธ€์„ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์›์ธ๊ณผ ํ•ด๊ฒฐ์ฑ…์€ ์•„์ง์ด๋ผ ์ข€ ๋” ์กฐ์‚ฌํ•ด๋ด์•ผ๊ฒ ๋‹ค.

 

 


 ์ผ๋‹จ 20.04 LTS์—์„œ๋Š” ์ •์ƒ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ํ™•์ธ

docker inspect --format '{{.HostConfig.OomKillDisable}}' m4

 

๋˜ ๋‹ค๋ฅธ ํŒŒ์ผ์„ ์กฐํšŒํ•˜์—ฌ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค. 

cat /sys/fs/cgroup/memory/docker/์ปจํ…Œ์ด๋„ˆfullID/memory.oom_control

 

ํ•œ๋ฐ ์ด๊ฒƒ๋„ 22.04์—์„œ ์‹œ์Šคํ…œ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋€Œ์—ˆ๊ณ , ์ปจํ…Œ์ด๋„ˆ์— memory.oom_control์ด๋ผ๋Š” ํŒŒ์ผ๋„ ์—†๋‹ค. 

 


  •  CPU ๋ฆฌ์†Œ์Šค ์ œํ•œ ์‹ค์Šต 

1) cpu ํ™•์ธ

lscpu

๋ฒ„์ถ”์–ผ๋ฐ•์Šค์—์„œ cpu2๊ฐœ ์„ค์ •ํ•ด๋†จ๊ธฐ ๋•Œ๋ฌธ์— 2๊ฐœ ์กฐํšŒ

 

2) CPU ํ• ๋‹นํ•ด๋ณด๊ธฐ

์ธ๋ฑ์Šค 1์ธ CPU ํ• ๋‹นํ•˜๊ณ (--cpuset-cpus 1), stress ์ด๋ฏธ์ง€์— cpu๊ฐ€ 2๊ฐœ ๋Œ์•„๊ฐ€๊ฒŒ ๋˜์–ด์žˆ์–ด์„œ cpu๋ฅผ 1๊ฐœ๋„ ๋ฐ”๊ฟ”์ฃผ๊ณ (stress --cpu 1), ์ด๋ฆ„ c1์ด๋ผ๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•ด(--name c1) ๋ฐฑ๊ทธ๋ผ์šด๋“œ(-d)๋กœ ๋Ÿฌ๋‹์‹œํ‚ค๋Š” ๋ช…๋ น์–ด 

# docker run [--cpuset-cpus cpu์ธ๋ฑ์Šค] [--name ์ปจํ…Œ์ด๋„ˆ์ด๋ฆ„] [-d] <์ด๋ฏธ์ง€๋ช…:ํƒœ๊ทธ> [๋ช…๋ น์–ด]
docker run --cpuset-cpus 1 --name c1 -d stress:latest stress --cpu 1

 

3) ํ™•์ธ

htop
# ์ด ๋ช…๋ น์–ด ์“ฐ๋ ค๋ฉด ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ htop ์„ค์น˜ํ•ด์•ผํ•จ
# sudo apt install htop

๋ณด๋ฉด ํ”„๋กœ์„ธ์Šค๋กœ stress --cpu 1์ด ์‹คํ–‰๋˜๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ , cpu 1๋ฒˆ์ด 100ํผ์„ผํŠธ๋กœ ๋Œ๊ณ  ์žˆ๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

์œผ๋กœ 0๋ฒˆ๋„ 100ํผ์„ผํŠธ ๋Œ์•„๊ฐ€๊ฒŒ ํ•˜๋‹ˆ

์•„๊นŒ์˜ ์ปจํ…Œ์ด๋„ˆ๋ž‘ ๊ฐ™์ด 0๋ฒˆ๊ณผ 1๋ฒˆ ๋ชจ๋‘ 100ํ”„๋กœ ๋Œ๊ณ  ์žˆ๋‹ค. 

 

๋งŒ์•ฝ --cpuser-cpus๋ฅผ 0๋ถ€ํ„ฐ 1๊นŒ์ง€๋กœ ์„ค์ •ํ•˜๊ณ  cpu ์‹คํ–‰์„ 1๊ฐœ๋กœ๋งŒ ์„ค์ •ํ–ˆ๋‹ค๋ฉด 0๋ถ€ํ„ฐ 1์‚ฌ์ด์—์„œ ๊ทธ๋•Œ๊ทธ๋•Œ ์ƒํ™ฉ๋งˆ๋‹ค 1๊ฐœ๋งŒ ์„ ํƒํ•ด์„œ ๋Œ์•„๊ฐ„๋‹ค.

docker run --cpuset-cpus 0-1 --name c1 -d stress:latest stress --cpu 1

 

4) cpu-share๋กœ ๊ฐ€์ค‘์น˜๋ฅผ ์ค˜๋ณด์ž

๊ฐ๊ฐ cload1์— 2048, cload2์— ๊ธฐ๋ณธ, cload3,4์— 512 ๊ฐ€์ค‘์น˜๋ฅผ ์ฃผ์—ˆ๋‹ค. 

# docker run [-c ๊ฐ€์ค‘์น˜] [--name ์ปจํ…Œ์ด๋„ˆ๋ช…] [-d] <์ด๋ฏธ์ง€๋ช…:ํƒœ๊ทธ>

# ๊ฐ€์ค‘์น˜ ์„ค์ • ์ผ€์ด์Šค
docker run -c 2048 --name cload1 -d stress:latest
# ๊ฐ€์ค‘์น˜ ์„ค์ • ๋”ฐ๋กœ ์•ˆํ•œ ๊ธฐ๋ณธ ์ผ€์ด์Šค
docker run --name cload2 -d stress:latest
# ๊ฐ€์ค‘์น˜ ์„ค์ • ์ผ€์ด์Šค
docker run -c 512 --name cload3 -d stress:latest
# ๊ฐ€์ค‘์น˜ ์„ค์ • ์ผ€์ด์Šค (3์ด๋ž‘ ๋˜‘๊ฐ™์ด)
docker run -c 512 --name cload4 -d stress:latest

์ด๊ฑฐ ์‹ค์ œ ๊ฐ€์ค‘์น˜๋ฅผ ๋ฐ›์€ ๋งŒํผ ์•Œ์•„๋ณด๊ณ  ์‹ถ๋‹ค!

๊ทธ๋Ÿผ ๋ชจ๋‹ˆํ„ฐ๋ง ํˆด๋กœ ใ„ฑใ„ฑ

 

 


  •  Block I/O ์ œํ•œ 

1) block I/O ์กฐํšŒ

lsblk

ํ•˜๋Š˜์ƒ‰ ๋ถ€๋ถ„์ด device ์ด๋ฆ„์ด๋‹ค

 

2) ๋””๋ฐ”์ด์Šค ๋ณ„ iops ์„ค์ •

# docker run [-it] [--rm] [--device-write-iops /dev/๋””๋ฐ”์ด์Šค์ด๋ฆ„:์ฟผํ„ฐ] <์ด๋ฏธ์ง€๋ช…:ํƒœ๊ทธ> [๋ช…๋ น์–ด]
docker run -it --rm --device-write-iops /dev/sda:10 ubuntu:latest /bin/bash

์—ฌ๊ธฐ์„œ --rm ์€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ผํšŒ์„ฑ์œผ๋กœ ์“ธ๋•Œ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์ปจํ…Œ์ด๋„ˆ์™€ ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ จ ๋ฆฌ์†Œ์Šค๊นŒ์ง€ ๊นจ๋—ํ•˜๊ฒŒ ์‚ญ์ œํ•˜๋Š” ์˜ต์…˜์ด๋‹ค. 

 

์œ„์˜ ๋ช…๋ น์–ด๋กœ  ์ฟผํ„ฐ 10์œผ๋กœ ํ• ๋‹น๋œ ์šฐ๋ถ„ํˆฌ๋ฅผ ์‹คํ–‰์‹œํ‚จ ํ›„

์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด๋ณด์ž

dd if=/dev/zero of=file1 bs=1M count=10 oflag=direct

* dd : data duplicator

* if : ์ง€์ •ํ•œ ํŒŒ์ผ(์œ„์—์„œ๋Š” /dev/zero)๋ฅผ ์ž…๋ ฅ ๋Œ€์ƒ์œผ๋กœ ์„ค์ •

* of : ์ง€์ •ํ•œ ํŒŒ์ผ(file1)์„ ์ถœ๋ ฅ ๋Œ€์ƒ์œผ๋กœ ์„ค์ •

* bs : ๋ฐ”์ดํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•˜๋ฉฐ ํ•œ๋ฒˆ์— ์ฝ๊ณ  ์“ธ ์ตœ๋Œ€ ๋ฐ”์ดํŠธ ํฌ๊ธฐ ์ง€์ • 

* count : ์ง€์ •ํ•œ ๋ธ”๋ก ์ˆ˜ ๋งŒํผ ๋ณต์‚ฌ

* oflag : ํ…Œ์ŠคํŠธ ํŒŒ์ผ์„ ์“ธ๋•Œ ์‚ฌ์šฉํ•˜๋Š” file flag๋ฅผ ์„ค์ •, direct ๊ฒฝ์šฐ O_DIRECTํ”Œ๋ž˜๊ทธ๋ฅผ ์ผœ๊ณ  write()๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด ํ”Œ๋Ÿฌ๊ทธ๋ฅผ ์ด์šฉํ•˜๋ฉด ํŒŒ์ผ์‹œ์Šคํ…œ์— ์บ์‹œ ์˜์—ญ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ๋””์Šคํฌ๋ฅผ ์“ฐ๊ธฐ๋•Œ๋ฌธ์— ์ž…์ถœ๋ ฅ ์„ฑ๋Šฅ ์ธก์ •ํ• ๋•Œ ํ•„์š”ํ•˜๋‹ค.[๊ฐ์ฃผ:4]

10๊ฐœ ๋ณต์‚ฌํ•œ ๊ฒฐ๊ณผ์™€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„๋“ฑ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

์ฟผํ„ฐ๋ฅผ 100์œผ๋กœ ํ• ๋‹นํ•ด์„œ ๋‹ค์‹œ ํ•ด๋ณด๋ฉด

์ฟผํ„ฐ 10์ผ๋•Œ 5.5 MB/s ๋ฐ–์— ์•ˆ๋‚˜์˜ค๋˜๊ฒŒ ์ฟผํ„ฐ 100์ด ๋˜๋‹ˆ 93.2MB/s ๋‚˜ ๋‚˜์˜จ๊ฑธ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 


2๏ธโƒฃ ์ปจํ…Œ์ด๋„ˆ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ธฐ

 

1) ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ํ†ต๊ณ„

์ปจํ…Œ์ด๋„ˆ ์„ค์ • ์•ˆํ•˜๋ฉด ์‹คํ–‰์ค‘์ธ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ๋Œ€์ƒ ์กฐํšŒ

docker stats [์˜ต์…˜] [์ปจํ…Œ์ด๋„ˆ]

์ด๋ ‡๊ฒŒ ๋Ÿฐํƒ€์ž„์œผ๋กœ ๋Œ์•„๊ฐ€๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค

๊ทธ๋Ÿฐ๋ฐ ์ƒ๋Œ€์  ๋น„์œจ๋กœ ๋Œ์•„๊ฐ„๋‹ค๊ณ  ํ•˜์…จ๋Š”๋ฐ CPU ๋น„์œจ์ด ๊ฐ€์ค‘์น˜์ฒ˜๋Ÿผ ์•ˆ๋Œ์•„๊ฐ€๋Š” ๋ฐ.. ์™œ์ง€.. ์˜คํžˆ๋ ค ๊ธฐ๋ณธ์„ค์ •์ธ cload2๊ฐ€ ๋” ๋งŽ์€ ๋น„์œจ์„ ๋ณด์ธ๋‹ค. 

 

cpu๋ฅผ ํ•˜๋‚˜๋กœ ๊ณ ์ •ํ•ด๋ด๋„... cload2๊ฐ€ ๋” ๋งŽ์€ ํผ์„ผํŠธ๋ฅผ ์ฐจ์ง€.. ๊ธฐ๋ณธ ์„ค์ •์ด ๋ญ”๊ฐ€ ๋‹ฌ๋ผ์ง„๊ฑธ๊นŒ?

ํ™•์‹คํžˆ ๊ธฐ๋ณธ ์„ค์ •์ด ๋‹ฌ๋ผ์ง„ ๋“ฏ

cload5๋กœ ๊ฐ€์ค‘์น˜๋ฅผ 1024๋ฅผ ๋ช…์‹œํ•ด์ฃผ๊ณ  ๋Œ๋ ค๋ณด๋‹ˆ ํ™•์‹คํžˆ ๋งž๋Š” ๋น„์œจ์ด ๋‚˜์˜จ๋‹ค. 

 

๋‹ค์‹œ cpu๋ฅผ ํ•˜๋‚˜๋กœ ๊ณ ์ •ํ•˜์ง€๋ง๊ณ  ํ…Œ์ŠคํŠธ ํ•ด๋ณด์ž

cpu๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์‚ฌ์šฉํ•˜๋ฉด ํ•˜๋‚˜๋กœ ๊ณ ์ •ํ–ˆ์„๋•Œ ๋ณด๋‹ค ์•ˆ์ •์ •์œผ๋กœ ๋น„์œจ์ด ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋ž˜๋„ ๊ฝค ๋น„์œจ์ด ๋งž๋Š” ํŽธ

 

 


3๏ธโƒฃ cAdvisor ์„ค์น˜ํ•ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ

 

๊ทธ๋ฆฌ๊ณ  cAdvisor ๊นƒํ—™์˜ ๋ช…๋ น์–ด๋ฅผ ์ ์šฉ

 

๋ช…๋ น์–ด ์ ์šฉํ•ด ๋Œ๋ฆฌ๊ณ  ํ•ด๋‹น ํฌํŠธ๋กœ ์—ฐ๊ฒฐํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ UI๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•  ์ˆ˜ ์žˆ๋‹ค. 

  1.  Swap Memory
    RAM ์ฆ‰ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋‹ค ์ฐจ๊ฒŒ ๋˜์–ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž‘์—…์„ ์ด์–ด ๋‚˜๊ฐ€์ง€ ๋ชปํ•˜๊ณ  ์ข…๋ฃŒ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋“œ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์ด์šฉํ•˜์—ฌ ๋ถ€์กฑํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ [๋ณธ๋ฌธ์œผ๋กœ]
  2. OOM Killer (Out Of Memory Killer)
    ๋ฆฌ๋ˆ…์Šค ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋กœ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•  ๊ฒฝ์šฐ ํŠน์ • ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™•๋ณดํ•˜๋Š” ๊ธฐ๋Šฅ [๋ณธ๋ฌธ์œผ๋กœ]
  3. Block I/O
    ๋ธ”๋ก ์žฅ์น˜๋Š” ๊ฐœ๋ณ„ ๋ฐ”์ดํŠธ ๋‹จ์œ„๊ฐ€ ์•„๋‹Œ ์ผ์ • ํฌ๊ธฐ(block) ๋‹จ์œ„๋กœ ์ ‘๊ทผํ•˜๋Š” ์žฅ์น˜
    ๊ฐ„๋‹จํžˆ ๋งํ•˜๋ฉด ํ•˜๋“œ ๋””์Šคํฌ์™€ ๊ฐ™์€ ๋Œ€์šฉ๋Ÿ‰ ์ €์žฅ ์žฅ์น˜๋ฅผ ๋งํ•œ๋‹ค. [๋ณธ๋ฌธ์œผ๋กœ]
  4. ์ถœ์ฒ˜: https://hbase.tistory.com/21 [๋ณธ๋ฌธ์œผ๋กœ]

+ Recent posts