Skip to content

YHYLab/DockerStudy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

3 Commits
ย 
ย 
ย 
ย 

Repository files navigation

DockerStudy

clone()์„ ์ด์šฉํ•œ namespace์˜ ๊ฒฉ๋ฆฌ

clone()์„ ํ†ตํ•œ ์‹ ๊ทœ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด์„œ ์ƒˆ๋กœ์šด namespace์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹. clone()์€ ์‚ฌ์‹ค์ƒ fork()์˜ ๊ตฌํ˜„์ด๋‹ค.

namespace system parameter ๊ฒฉ๋ฆฌ๋‚ด์šฉ
UTS CLONE_NEWUTS host๋„ค์ž„, ๋„๋ฉ”์ธ๋„ค์ž„
IPC CLONE_NEWIPC ์‹œ๊ทธ๋„, ๋ฉ”์„ธ์ง€ํ์™€ ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ
PID CLONE_NEWPID ํ”„๋กœ์„ธ์Šค ID
Network CLONE_NEWNET ๋„คํŠธ์›Œํฌ์žฅ๋น„, ๋„คํŠธ์›Œํฌ ์Šคํƒ, ํฌํŠธ ๋“ฑ
Mount CLONE_NEWNS ํŒŒ์ผ์‹œ์Šคํ…œ
User CLONE_NEWUSER ์‚ฌ์šฉ์ž ๋ฐ ์‚ฌ์šฉ์ž ๊ทธ๋ฃน

์‚ฌ์šฉ์ž๊ฒฉ๋ฆฌ๋Š” ๋ฆฌ๋ˆ…์Šค์ปค๋„ 3.8 ์ด์ƒ์ด๊ณ  ์ปค๋„์ปดํŒŒ์ผ ์‹œ USER_NS ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ํ™•์ธ์ด ์–ด๋ ค์šฐ๋ฉด Ubuntu10.04๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

cgroups๋ฅผ ์ด์šฉํ•œ ์ž์›์˜ ์ œํ•œ

cgroups ๋Š” controller groups.

cgroups์˜ ์ž‘์šฉ

  1. ์ž์›์˜ ์ œํ•œ. cgroups์˜ task๊ฐ€ ์‚ฌ์šฉํ•  ์ž์›์˜ ์ด๋Ÿ‰์— ๋Œ€ํ•ด ์ œํ•œํ•œ๋‹ค. task๊ฐ€ ์ด ์ œํ•œ์„ ์ดˆ๊ณผํ•˜๋ฉด OOM(Out of Memory)๊ฐ€ ๋ฐœ์ƒ๋œ๋‹ค.
  2. ์šฐ์„ ์ˆœ์œ„ ๋ถ„๋ฐฐ. CPU ์‹œ๊ฐ„ ํ• ๋‹น, ๋””์Šคํฌ IO throughput๋ฅผ ํ• ๋‹นํ•˜๋ฉด์„œ ์‚ฌ์‹ค์ƒ task์˜ ์šฐ์„ ์ˆ˜์œ„๋ฅผ ์ œํ•œํ•œ๊ฒƒ์ด๋‹ค.
  3. ์ž์› ํ†ต๊ณ„. cgroups๋Š” ์‹œ์Šคํ…œ ์ž์›์˜ ์‚ฌ์šฉ๋Ÿ‰์— ๋Œ€ํ•œ ํ†ต๊ณ„๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด cpu์˜ ์‚ฌ์šฉ์‹œ๊ฐ„, ๋ฉ”๋ชจ๋ฆฌ์˜ ์‚ฌ์šฉ๋Ÿ‰ ๋“ฑ์ด๋‹ค. ์ด๋Š” ๊ณผ๊ธˆ์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. task ์ปจํŠธ๋กค. cgroups๋Š” task์— ๋Œ€ํ•ด ๋Œ€๊ธฐ, ์žฌ์‹คํ–‰ ๋“ฑ ์ž‘์—…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

cgoups ์šฉ์–ด ์„ค๋ช…

  • task๋Š” ํ”„๋กœ์„ธ์Šค์ผ์ˆ˜๋„ ์žˆ๊ณ  ์Šค๋ ˆ๋“œ ์ผ ์ˆ˜๋„ ์žˆ๋‹ค.
  • cgroup์€ ์ž์›์— ๋Œ€ํ•œ ์ปจํŠธ๋กค์˜ ๋‹จ์œ„๋‹ค. ํ•˜๋‚˜ ํ˜น์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ subsystem์œผ๋กœ ๊ทธ์„ฑ๋œ๋‹ค.
  • subsystem์€ ํ•˜๋‚˜์˜ ์ž์›์— ๋Œ€ํ•œ ์ปจํŠธ๋กค๋Ÿฌ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด CPU subsystem์€ CPU ์‹œ๋ถ„ํ• ์— ๋Œ€ํ•œ ์ปจํŠธ๋กค์„ ํ• ์ˆ˜ ์žˆ๊ณ  ๋ฉ”๋ชจ๋ฆฌ subsystem์€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์— ๋Œ€ํ•œ ์ปจํŠธ๋กค์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • hierachy. ํ•˜๋‚˜์˜ ๊ณ„์ธต์€ ํ•˜๋‚˜์˜ ํŠธ๋ฆฌ๋ชจ์–‘์˜ cgroup์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ๋งค ๊ณ„์ธต์€ ๋Œ€์‘๋˜๋Š” subsystem์— ๋Œ€ํ•œ ์ž์›์„ ์ปจํŠธ๋กคํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ณ„์ธต์•ˆ์˜ cgroup ๋…ธ๋“œ๋Š” ๋ถ€๋ชจ์˜ ๋…ธ๋“œ์˜ subsystem์„ ์ƒ์†๋ฐ›๋Š”๋‹ค. ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ์€ ์—ฌ๋Ÿฌ hierachy๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

๊ณ„์ธต ์ด๋ฏธ์ง€

๊ทธ๋ฆผ์—์„œ Cgroup Hierarchiy A๋Š” CPU subsystem๊ณผ CPUACCT(cgroups์˜ CPU์‚ฌ์šฉ๋Ÿ‰์„ ์ง‘๊ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ธŒ์‹œ์Šคํ…œ)subsystem์„ ์ถ”๊ฐ€ ํ•˜๊ณ  cgroup cgrp1๋ฅผ ์‚ฌ์šฉํ•˜๋Š” task๋Š” CPU์˜ ์‹œ๋ถ„ํ• ์ž์›์„ 60% ์ ์œ  ํ•  ์ˆ˜ ์žˆ๊ณ  cgroup cgrp2๋ฅผ ์‚ฌ์šฉํ•˜๋Š” task๋Š” ์‹œ๋ถ„ํ• ์ž์›์„ 20% ์ ์œ  ํ• ์ˆ˜ ์žˆ๋‹ค.

cgroups์˜ ๊ตฌ์กฐ ์ƒ์„ฑ ๊ทœ์น™

  1. ๊ฐ™์€ hierachy๋Š” ํ•˜๋‚˜ ํ˜น์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ subsystem์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. subsystem์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ hierachy์— ์ถ”๊ฐ€ ๋ ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋•Œ ์ถ”๊ฐ€ํ•˜๋Š” hierachy๋Š” subsystem์ด ํ•˜๋‚˜๋งŒ ์žˆ์–ด์•ผ ์žˆ๋‹ค.
  3. ์‹œ์Šคํ…œ์ด ํ•˜๋‚˜์˜ hierachy๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜๋ฉด ์ด hierachy๋Š” ์‹œ์Šคํ…œ์˜ ๋ชจ๋“  task์— ์ถ”๊ฐ€๋˜๋ฉฐ ์ด cgroup์€ root cgroup์ด๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค. task๋Š” ๋™์ผํ•œ hierarchiy์—์„œ ํ•˜๋‚˜์˜ cgroup์—๋งŒ ์กด์žฌํ•  ์ˆ˜ ์žˆ๊ณ  ์„œ๋กœ ๋‹ค๋ฅธ hierarchiy์˜ cgroup์—๋Š” ๋™์‹œ์— ์กด์žฌ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ์œ ํ•˜๋Š” cgroup์—์„œ 10MB์šฉ๋Ÿ‰๊ณผ 10GB์šฉ๋Ÿ‰์„ ๊ฐ™๋Š”๋‹ค๋Š”๊ฒƒ์€ ์ƒํ˜ธ ๋ชจ์ˆœ๋œ๋‹ค. ์ฆ‰ ํ•˜๋‚˜๋งŒ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๋Š” 10GB ์‚ฌ์šฉ๋Ÿ‰์„ ํ™•๋ณดํ•˜๊ณ  CPU๋Š” 20%์˜ ์‹œ๋ถ„ํ•  ์ž์›์„ ์ ์œ  ํ• ์ˆ˜ ์žˆ๋‹ค.
  4. fork๋œ ์ž์‹ํ”„๋กœ์„ธ์Šค๋Š” ๋ถ€๋ชจํ”„๋กœ์„ธ์Šค์™€ ๋™์ผํ•œ cgroup์— ์†ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ƒํ˜ธ ๋…๋ฆฝ๋œ ํ”„๋กœ์„ธ์Šค์ด๋ฏ€๋กœ ์•ž์œผ๋กœ ์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ cgroup์œผ๋กœ ๋ณ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

ย 
ย 
ย 

Contributors