Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
CgroupʹΑΔϦιʔεִೖ Docker Meetup Tokyo #4 Ճ౻ହจ 2015-01-17 Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 1 / 29
Slide 2
Slide 2 text
୭? Ճ౻ହจ ϑΝʔεταʔόגࣜձࣾɹج൫։ൃ෦ http://www.ten-forward.ws/ @ten forward http://gplus.to/tenforward https://github.com/tenforward http://d.hatena.ne.jp/defiant/ Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 2 / 29
Slide 3
Slide 3 text
୭? 2010 ࠒʹ Cgroup ʹڵຯΛ࣋ͬͯௐࠪΛ࢝Ίͷ͕͖͔͚ͬ ͰίϯςφपลΛ৭ʑ͓͔͚͍ͬͯ·͢ Docker ৄ͋͘͠Γ·ͤΜ Docker Meetup Tokyo Ͱ͓͢Δͷ 2 LXC ͷίϛοτ ຊޠ man pages ࠷ۙগ͠ίʔυ linuxcontainers.org ༁ Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 3 / 29
Slide 4
Slide 4 text
୭? Plamo Linux ϝϯςφ LXC ͰֶͿίϯςφೖɹʔܰྔԾԽڥΛ࣮ݱ͢Δٕज़ gihyo.jp Ͱ࿈ࡌ ৽य़ಛผاըɹ 2015 ͷ Linux ͷίϯςφٕज़ (gihyo.jp) ʲվగ৽൛ʳLinux ΤϯδχΞཆಡຊ (ٕज़ධࣾ) Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 4 / 29
Slide 5
Slide 5 text
ษڧձ ίϯςφܕԾԽͷใަձ ৭ʑͳίϯςφٕज़ΛऔΓѻ͏ ࣮͔ΒԠ༻·Ͱίϯςφ͕͍ؔͯ͠ΕԿͰѻ͏ ౦ژͱେࡕͰަޓʹ։࠵ http://ct-study.connpass.com/ Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 5 / 29
Slide 6
Slide 6 text
ࠓͷඪ Cgroup Λͬͯ Docker ίϯςφͷϦιʔεִɾ੍ݶΛߦ͏ํ ๏Λઆ໌͢Δ Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 6 / 29
Slide 7
Slide 7 text
ࠓͷ༰ Linux Χʔωϧͱίϯςφ Cgroup ͱ ੍ݶΛઃఆ͢Δ (1) ʙ Docker ͔Β ੍ݶΛઃఆ͢Δ (2) ʙ cgroupfs ੍ݶΛઃఆ͢Δ (3) ʙ systemd Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 7 / 29
Slide 8
Slide 8 text
LinuxΧʔωϧͱίϯςφ ʰίϯςφʱΛ࣮ݱ͢ΔͨΊͷ Linux Χʔωϧͷओཁͳػೳ Namespace (໊લۭؒ) OS/ΧʔωϧϦιʔεΛִ Ϛϯτɺϗετ໊ɺPIDɺIPC ΦϒδΣΫτɺUID/GIDɺωοτϫʔΫ Cgroup ίϯϐϡʔλ͕࣋ͭཧϦιʔεͷ੍ݶ CPUɺϝϞϦɺσόΠεɺωοτϫʔΫɺetc Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 8 / 29
Slide 9
Slide 9 text
ࠓͷ༰ Linux Χʔωϧͱίϯςφ Cgroup ͱ ੍ݶΛઃఆ͢Δ (1) ʙ Docker ͔Β ੍ݶΛઃఆ͢Δ (2) ʙ cgroupfs ੍ݶΛઃఆ͢Δ (3) ʙ systemd Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 9 / 29
Slide 10
Slide 10 text
Cgroupͱ ϓϩηε (λεΫ) ΛάϧʔϓԽ (= Cgroup) άϧʔϓ (Cgroup) ͷϓϩηε (λεΫ) ʹରͯ͠·ͱΊͯ Ϧιʔε੍ݶ Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 10 / 29
Slide 11
Slide 11 text
Cgroupͱ ʙ cgroupfs(1) Cgroup cgroupfs ͱ͍͏ಛघͳϑΝΠϧγεςϜΛϚϯτ͠ ͯར༻ cgroupfs ͷϚϯτྫ # mount -t cgroup cgroup /sys/fs/cgroup Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 11 / 29
Slide 12
Slide 12 text
Cgroupͱ ʙ cgroupfs(2) άϧʔϓ (Cgroup) Λ࡞͢ΔʹσΟϨΫτϦΛ࡞ άϧʔϓͷ࡞ # mkdir /sys/fs/cgroup/group01 Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 12 / 29
Slide 13
Slide 13 text
Cgroupͱ ʙ cgroupfs(3) Ϧιʔε੍ݶΛઃఆ͢Δʹάϧʔϓ (σΟϨΫτϦ) ҎԼͷϑΝ ΠϧʹΛॻ͖ࠐΉ Ϧιʔε੍ݶͷྫ # echo $$ > /sys/fs/cgroup/group01/tasks (ϓϩηεΛάϧʔϓʹొ) # echo 100M > /sys/fs/cgroup/group01/memory.limit_in_bytes (ϝϞϦͷ༻Λ 100MB ʹ੍ݶ) ϓϩηεՔಇதಈతʹมߋՄೳ Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 13 / 29
Slide 14
Slide 14 text
Cgroupͱ ʙ αϒγεςϜ ੍ݶ͢ΔϦιʔε͝ͱʹʮαϒγεςϜʯ·ͨʮίϯτϩʔϥʯ ͱݺΕΔෳͷػೳ͕ଘࡏ CPU ؔ࿈ (cpu, cpuacct, cpuset) device freezer ϝϞϦؔ࿈ (memory, hugetlb) ωοτϫʔΫ (net cls, net prio) blkio perf event Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 14 / 29
Slide 15
Slide 15 text
ࠓͷ༰ Linux Χʔωϧͱίϯςφ Cgroup ͱ ੍ݶΛઃఆ͢Δ (1) ʙ Docker ͔Β ੍ݶΛઃఆ͢Δ (2) ʙ cgroupfs ੍ݶΛઃఆ͢Δ (3) ʙ systemd Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 15 / 29
Slide 16
Slide 16 text
੍ݶΛઃఆ͢Δ(1)ʙDocker͔Β cpu, cpuset, memory αϒγεςϜͷ੍ݶΛ docker ͔Βࢦఆ Մೳ ੍ݶΛࢦఆͯ͠ docker run # docker run -t -i \ --cpu-shares=100 \ --cpuset="0-1" \ --memory="512m" \ ubuntu /bin/bash ͨͩ͠ CPU ༏ઌ ͷࢦఆͰ૬ରࢦఆ memory memory.limit in bytes ͱ memory.soft limit in bytes ʹಉ͕͡ઃఆ͞ ΕΔɻswap ΛؚΊ੍ͨݶ͕ΧʔωϧͰ༗ޮʹͳ͍ͬͯΔ߹ memory.memsw.usage in bytes ʹ͕ઃఆ͞ΕΔ (σϑΥϧτͰઃఆͷ 2 ഒ) Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 16 / 29
Slide 17
Slide 17 text
੍ݶΛઃఆ͢Δ(1)ʙDocker͔Β σϞ (https://asciinema.org/a/14923) cpu-shares Λࢦఆͯ͠ 2 ͭͷίϯςφΛىಈ $ docker run -d --cpu-shares=1000 ubuntu sh -c "while :; do true; done" 475eff102bf1981d19567dc64b2c922f4f2adade164656a243de8c8b72330733 $ docker run -d --cpu-shares=100 ubuntu sh -c "while :; do true; done" 744a5282eac4c5faa799bce66e461dfe758e2ea64009e8780bc14a02163e5d05 CPU ͷ༻ঢ়گ PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2597 root 20 0 4444 396 316 R 90.7 0.0 0:09.71 sh 2633 root 20 0 4444 400 316 R 9.0 0.0 0:00.38 sh େମࢦఆ௨Γͷൺ (10:1) Ͱ CPU Λ༻ Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 17 / 29
Slide 18
Slide 18 text
੍ݶΛઃఆ͢Δ(1)ʙDocker͔Β ઃఆͰ͖Δର͕ݶΒΕΔ cpu (૬ରࢦఆ) cpuset (CPU ͷࢦఆ) memory Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 18 / 29
Slide 19
Slide 19 text
ࠓͷ༰ Linux Χʔωϧͱίϯςφ Cgroup ͱ ੍ݶΛઃఆ͢Δ (1) ʙ Docker ͔Β ੍ݶΛઃఆ͢Δ (2) ʙ cgroupfs ੍ݶΛઃఆ͢Δ (3) ʙ systemd Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 19 / 29
Slide 20
Slide 20 text
੍ݶΛઃఆ͢Δ(2)ʙcgroupfs Cgroup ΛͬͨϦιʔε੍ݶϑΝΠϧʹ੍ݶ༰Λॻ͖ࠐ Ή͜ͱͰߦ͏ ˠ Docker ίϯςφͷ cgroup Λ୳ͯ͠ॻ͖ࠐΊྑ͍!! Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 20 / 29
Slide 21
Slide 21 text
੍ݶΛઃఆ͢Δ(2)ʙcgroupfs Docker ίϯςφͷ cgroup ͷॴͷྫ Ubuntu /sys/fs/cgroup/(αϒγεςϜ໊)/docker/(ίϯςφ ID) CentOS7 /sys/fs/cgroup/(αϒγεςϜ ໊)/system.slice/(systemd Ϣχοτ໊)/ Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 21 / 29
Slide 22
Slide 22 text
੍ݶΛઃఆ͢Δ(2)ʙcgroupfs σϞ (https://asciinema.org/a/15287) 2 ͭͷίϯςφʹରͯ͠ cpu ΛͦΕͧΕ 10 ˋɺ5 ˋׂΓͯΔ $ CT1=$(docker run -d ubuntu sh -c "while :; do true; done") $ CT2=$(docker run -d ubuntu sh -c "while :; do true; done") $ cat /sys/fs/cgroup/cpu/docker/cpu.cfs_period_us (୯Ґ࣌ؒͷ֬ೝ) 100000 $ echo 10000 | sudo tee /sys/fs/cgroup/cpu/docker/"$CT1"/cpu.cfs_quota-us (10000/100000 ͚ͩ CPU Λ͏) $ echo 5000 | sudo tee /sys/fs/cgroup/cpu/docker/"$CT2"/cpu.cfs_quota-us (5000/100000 ͚ͩ CPU Λ͏) CPU ͷ༻ঢ়گ PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2230 root 20 0 4444 396 316 R 10.0 0.0 0:27.54 sh 2192 root 20 0 4444 400 316 R 5.0 0.0 0:40.97 sh ઃఆ௨Γ CPU Λ͍ͬͯΔ Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 22 / 29
Slide 23
Slide 23 text
੍ݶΛઃఆ͢Δ(2)ʙcgroupfs cgroup ͷ͕ࣝඞཁͱ͔ɺͪΐͬͱ͍͜͠ Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 23 / 29
Slide 24
Slide 24 text
ࠓͷ༰ Linux Χʔωϧͱίϯςφ Cgroup ͱ ੍ݶΛઃఆ͢Δ (1) ʙ Docker ͔Β ੍ݶΛઃఆ͢Δ (2) ʙ cgroupfs ੍ݶΛઃఆ͢Δ (3) ʙ systemd Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 24 / 29
Slide 25
Slide 25 text
੍ݶΛઃఆ͢Δ(3)ʙsystemd systemd ԼͰ docker ͕ಈ͍͍ͯΔ߹ɺcgroup ͷཧ systemd ܦ༝ɻ ϢχοτϑΝΠϧʹ cgroup ͷઃఆΛॻ͍ͯىಈ systemctl ίϚϯυ͔Βಈతʹࢦఆ systemctl ίϚϯυͰಈతʹઃఆ # systemctl set-property (ίϯςφͷϢχοτ໊) CPUShares=512 --runtime Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 25 / 29
Slide 26
Slide 26 text
੍ݶΛઃఆ͢Δ(3)ʙsystemd systemd ܦ༝ͰઃఆͰ͖Δ cgroup ύϥϝʔλ͕·ͩ·ͩগ ͳ͍ (docker run ͰࢦఆͰ͖Δͷͱ΄΅ಉ) (ཧ༝) Χʔωϧͷ cgroup ͷ࣮͕ࠓΨϯΨϯมΘ͍ͬͯΔͨ Ίམͪண͘·Ͱ࣮Ͱ͖ͳ͍ কདྷతʹ cgroup ͷཧશͯ systemd ܦ༝Ͱߦ͏͜ͱʹ ͳΔ (ͣ) docker run Ͱ cgroup ͷύϥϝʔλΛࢦఆͯ͠ཪͰ systemd ܦ༝Ͱઃఆ͞ΕΔ Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 26 / 29
Slide 27
Slide 27 text
·ͱΊ Linux Χʔωϧͱίϯςφ Cgroup ͱ ੍ݶΛઃఆ͢Δ (1) ʙ Docker ͔Β ੍ݶΛઃఆ͢Δ (2) ʙ cgroupfs ੍ݶΛઃఆ͢Δ (3) ʙ systemd Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 27 / 29
Slide 28
Slide 28 text
·ͱΊ cgroup Λͬͨ Docker ίϯςφͷϦιʔεִɾ੍ݶͷ ํ๏ docker Ͱࢦఆ cgroupfs systemd cgroupfs Λ৮Ε Docker systemd ͰࢦఆͰ͖ͳ͍ύ ϥϝʔλࢦఆͰ͖Δ Cgroup ͷ෦తͳ࣮͕·ͩ·ͩվྑɺมԽ͍ͯ͠ΔͷͰ͓ ؾܰʹઃఆͰ͖ΔΑ͏ʹͳΔͷ͏গ͠ઌ͔ Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 28 / 29
Slide 29
Slide 29 text
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ Ճ౻ହจ Docker Meetup Tokyo #4 2015-01-17 29 / 29