「第9回 コンテナ型仮想化の情報交換会@福岡」の発表資料です。 参考となる情報にはPDF中からリンクをしていますが、資料中のリンクは Speaker Deck 上ではクリックできないので PDF をダウンロードしてご覧ください。
Linuxίϯςφͷجૅୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬՃ౻ହจ2016-04-23Ճ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 1 / 48
View Slide
ࣗݾհՃ౻ହจhttp://www.ten-forward.ws/@ten forwardhttp://gplus.to/tenforwardhttps://github.com/tenforwardhttp://d.hatena.ne.jp/defiant/ (ٕज़ϒϩά)Ճ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 2 / 48
ࣗݾհϑΝʔεταʔόɹج൫։ൃ෦ɹॴଐՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 3 / 48
ࣗݾհPlamo Linux ϝϯςφLXC ͰֶͿίϯςφೖɹʔܰྔԾԽڥΛ࣮ݱ͢Δٕज़gihyo.jp Ͱ࿈ࡌՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 4 / 48
ࣗݾհLXC/LXD ͷ։ൃʹগ͠ࢀՃman page ͷຊޠ༁ެࣜϖʔδ (linuxcontainers.org) ༁όάϑΟοΫεͳͲগ͚ͩ͠ίʔυʹߩݙLXD ຊޠϝοηʔδՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 5 / 48
ࠓͷඪίϯςφͷ֓ཁΛཧղ͢ΔLinux Χʔωϧ͕࣋ͭίϯςφΛߏ͢ΔͨΊͷओཁͳػೳΛ֮͑ΔՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 6 / 48
ࠓͷ༰ίϯςφͷ֓ཁLinux ʹ͓͚ΔίϯςφͷΈNamespaceσϞcgroupσϞ·ͱΊՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 7 / 48
ίϯςφ֓ཁՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 8 / 48
ίϯςφͱΧʔωϧͷػೳͰִ͞ΕۭͨؒͰϓϩηεΛ࣮ߦ͢Δϓϩηεʹରͯ͠Ϧιʔε੍ݶΛઃఆ͢ΔՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 9 / 48
ίϯςφͱΧʔωϧ͔ΒݟΔͱී௨ʹϓϩηε͕ىಈ͢Δ͚ͩىಈ͢ΔࡍʹִΛࢦࣔ͢ΔΧʔωϧͷػೳͰ (ෳͷ) ಠཱۭͨؒ͠Λ࡞Γग़͠ɼϦιʔεΛׂɾ͢ΔϓϩηεΛάϧʔϓԽͯ͠ଞͷάϧʔϓͱϦιʔεۭؒΛִάϧʔϓԽͨ͠ϓϩηεʹର͢ΔϦιʔε੍ݶԾԽͱ͍͏ΑΓʮִԽʯͱݴͬͨ΄͏͕Θ͔Γ͍͔͢ԾతͳίϯϐϡʔλɾγεςϜΛ࠶ݱ͢ΔԾϚγϯʹରͯ͠ɺԾతͳ OS ڥΛఏڙ͢Δˠ OS ϨϕϧͷԾԽՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 10 / 48
ίϯςφͷϝϦοτߴີԽ͕Մೳىಈ͍ͯ͠Δ OS (Χʔωϧ) ҰͭΦʔόʔϔου͕খ͍͞ϋʔυΣΞͷԾԽ͕ෆཁىಈ͕ૣ͍ԾϚγϯͷىಈͰͳ͘ɼϗετ OS ͔ΒݟͨΒ୯ʹϓϩηε͕ىಈ͍ͯ͠Δ͚ͩͳͷͰɼී௨ͷϓϩάϥϜ͕ىಈ͢Δͷͱ΄ͱΜͲมΘΒͳ͍ඞͣ͠γεςϜΛಈ͔͢ඞཁͳ͍ (ΞϓϦέʔγϣϯίϯςφ)ྫ͑ίϯςφͰ httpd ͷΈ͕ಈ͍͍ͯΔίϯςφʹϝϞϦΛݻఆతʹׂΓͯΔඞཁ͕ͳ͍Ճ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 11 / 48
ίϯςφͷσϝϦοτҟͳΔ OS ͷγεςϜ / ϓϩάϥϜಈ͔ͤͳ͍୯ʹϗετ OS ্Ͱϓϩηε͕ىಈ͢Δ͚ͩͳͷͰͨΓલΧʔωϧʹؔΘΔૢ࡞Ͱ͖ͳ͍ىಈ͍ͯ͠ΔΧʔωϧมΘΒͳ͍ͷͰίϯςφຖʹϩʔυ͢ΔϞδϡʔϧΛม͑ΔͳͲΧʔωϧͷ࣮ෳࡶʹͳΔશͯΧʔωϧͷػೳͱ࣮ͯ͠͞Ε͍ͯΔͷͰՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 12 / 48
ࠓͷ༰ίϯςφͷ֓ཁLinux ʹ͓͚ΔίϯςφͷΈNamespaceσϞcgroupσϞ·ͱΊՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 13 / 48
Linuxʹ͓͚ΔίϯςφͷΈՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 14 / 48
Linuxʹ͓͚ΔίϯςφΧʔωϧʹʰίϯςφʱͱ͍͏୯Ұͷػೳ͕࣮͞Ε࣮ͯݱ͍ͯ͠ΔΘ͚Ͱ͋Γ·ͤΜՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 15 / 48
Linux ͰίϯςφΛ࣮ݱ͢ΔͨΊͷػೳLinux Χʔωϧʹؚ·ΕΔ৭ʑͳػೳΛΈ߹ΘͤͯίϯςφڥΛ࡞͢ΔɻͦΕͧΕͷػೳίϯςφઐ༻ͷػೳͱ͍͏Θ͚Ͱͳ͍ɻϓϩηεΛάϧʔϓԽͯ͠ଞͷάϧʔϓͱִOS Ϧιʔεͷִˠ Namespace (໊લۭؒ)άϧʔϓԽͨ͠ϓϩηεʹର͢ΔϦιʔε੍ݶϗετͷཧϦιʔεʹର͢Δ੍ݶˠ cgroup (control group)Ճ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 16 / 48
LinuxͰίϯςφΛ࣮ݱ͢ΔͨΊͷػೳͦͷଞωοτϫʔΫ (veth, macvlan ͳͲ)έʔύϏϦςΟchroot (pivot root)bind mountCheckpoint/Restore (CRIU)ͳͲͳͲՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 17 / 48
Linuxͷίϯςφ࣮ྫDockerΞϓϦέʔγϣϯίϯςφͷ࣮ߦʹಛԽɻίϯςφؔ࿈ͷॲཧ runC ϓϩδΣΫτͷ libcontainer Λ༻ɻLXC/LXDUbuntu Λத৺ʹ։ൃɻओʹγεςϜίϯςφΛ࣮ߦ͢Δ͜ͱΛલఏʹ࡞ΒΕ͍ͯΔ͕ɺΞϓϦέʔγϣϯίϯςφͷ࣮ߦՄೳɻඇಛݖίϯςφ͕࣮ߦͰ͖ΔɻOpenVZLinux ͷίϯςφ࣮ͱͯ͠ݹ͔͘Β͋Δ࣮ͷͻͱͭɻ2000 ͝Ζ͔ΒɻΧʔωϧʹύονΛద༻͢ΔɻΧʔωϧʹ࣮͞Ε͍ͯΔίϯςφؔ࿈ػೳ OpenVZ ༝དྷͷػೳ͕ଟ͋ΔɻOpenVZ Λϕʔεʹͨ͠༻൛ Virtuozzo ͕ଘࡏ͢ΔɻՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 18 / 48
Linuxͷίϯςφ࣮ྫrktCoreOS ͕ࣾ։ൃ͢ΔΞϓϦέʔγϣϯίϯςφͷϥϯλΠϜɻsystemd͝ଘ Linux ͚ͷ࠷ۙओྲྀͱͳͬͨ init ࣮ͷͻͱͭɻίϯςφΛѻ͏ίϚϯυΈแ͍ͯ͠ΔMINCSγΣϧεΫϦϓτͰॻ͔Εͨίϯςφ࣮runC (libcontainer)Docker ʹΑΔ Open Container Project ४ڌͷ࣮Ճ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 19 / 48
ࠓͷ༰ίϯςφͷ֓ཁLinux ʹ͓͚ΔίϯςφͷΈNamespaceσϞcgroupσϞ·ͱΊՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 20 / 48
Linuxʹ͓͚ΔίϯςφͷΈNamespaceՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 21 / 48
Namespace(໊લۭؒ)ִ͍ͨ͠ OS Ϧιʔε͝ͱʹ Namespace ͕४උ͞ΕΔҰ෦ͷ Namespace ͚ͩ༻ִͯ͠ڥΛ࡞Δ͜ͱ͕Ͱ͖ΔՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 22 / 48
Namespace ͷछྨ (1)Mount Namespace: 2.4.19ϓϩηε͔Βݟ͍͑ͯΔϚϯτͷू߹ɼૢ࡞Λ͢ΔɽNamespace ͷ mount, umount ͕ଞͷ Namespace ʹӨڹΛ༩͑ͳ͍Α͏ʹͰ͖Δ (༩͑ΔΑ͏ʹͰ͖Δ)ˠ private/shared/slave(ࢀߟ) Ϛϯτ໊લۭؒΛద༻͢Δ (IBM developerWorks)(ࢀߟ) Χʔωϧෟଐจॻ(Documentation/filesystems/sharedsubtree.txt)(ࢀߟ) σϑΥϧτ private ͕ͩɺsystemd /Λ shared ͰϚϯτ͢ΔUTS Namespace: 2.6.19ϗετ໊ͳͲɼuname(2) ͕ฦ͢ͷू߹Λɽsetdomainname(2), sethostname(2) Ͱ Namespace ͷͷΈมߋͰ͖ΔՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 23 / 48
Namespace ͷछྨ (2)PID Namespace: 2.6.24PID ۭؒͷɽ৽͍͠ PID Namespace Ͱ PID 1 ͔Β࢝·Δ PID ׂ͕ΓͯΒΕΔɽ͔Βࢠͷ PID Namespace ݟ͑Δ (ͷۭؒͷ PID Λ࣋ͭ) ͕ɼࢠ͔Βݟ͑ͳ͍IPC Namespace: 2.6.19SysV IPC ΦϒδΣΫτɼPOSIX ϝοηʔδΩϡʔͷִUser Namespace: 2.6.23 ˜ 3.8ಠཱͨ͠ UID/GID ۭؒͱ֎෦ۭؒͷϚοϐϯά (ྫ͑ɼִۭؒͰ uid/gid 0/0ɼ֎෦Ͱ 1000/1000 ͱ͔ՄೳʹͳΔ)Network Namespace: 2.6.26ωοτϫʔΫϦιʔεͷִɽωοτϫʔΫσόΠεɼΞυϨεɼϧʔςΟϯάςʔϒϧɼιέοτɼϑΟϧλϦϯάՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 24 / 48
Namespaceͷछྨ(3)cgroup Namespace: 4.6cgroup ͷִ/proc/$PID/cgroup ϑΝΠϧͷ cgroup ύεnamespace ͰϚϯτͨ͠ cgroupfs πϦʔ(͜ͷ Namespace Ͱ clone(2) ʹ༩͑Δϑϥά (32bit )Λ͍͖Γ·ͨ͠ :-)Ճ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 25 / 48
NamespaceৄࡉNamespace ͷΧʔωϧ෦ͷ࣮ʹ͍ͭͯʮୈ 8 ճ ίϯςφܕԾԽͷใަձˏ౦ژʯͰͷ Masami Ichikawa ͞ΜͷLinux Namespaces ͕ৄ͍͠Ͱ͢ (ಈը)Ճ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 26 / 48
ͦͷଞͷNamespaceաڈʹఏҊ͞Ε͍ͯͨͷLog NamespaceDevice NamespaceՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 27 / 48
Namespace ͷૢ࡞ (γεςϜίʔϧ)clone(2) Ͱ৽͍͠ϓϩηε Λੜunshare(2) Ͱ৽͍͠ϓϩηεΛੜͤͣʹ࣮ߦίϯςΩετΛ੍ޚ͢Δsetns(2) ͰϓϩηεΛطଘ ͷ Namespace ʹؔ࿈͚ΔՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 28 / 48
NamespaceσϞ(1)Mount + PID + UTS + Net Namespace Λಉ࣌ʹ࡞ͯ͠γΣϧΛىಈͤ͞ΔɿNamespace ͱϗετ্ͰҎԼ͕ҟͳΔ͜ͱϚϯτͷใ (Namespace ͷϚϯτ͕ϗετ্Ͱݟ͑ͳ͍)ϓϩηεͷใ (PID 1 ͰγΣϧ͕ىಈ͍ͯ͠Δɺϗετ্ͷϓϩηεݟ͑ͳ͍)ωοτϫʔΫΠϯλʔϑΣʔε (ϗετͱҟͳΓϧʔϓόοΫҎ֎ʹଘࡏ͠ͳ͍)ϗετ໊ (Namespace Ͱมߋͯ͠ϗετ্ͷϗετ໊มΘΒͳ͍)Ճ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 29 / 48
NamespaceσϞ(1)Mount + PID + UTS + Net Namespace $ sudo unshare --pid --mount --uts --net --mount-proc --fork \> -- /bin/bash(PID, Mount Namespace Λࢦఆͯ͠ unshre ࣮ߦ)# mount --make-private / (/ Λ private ʹ)# mount -o bind /usr /mnt (bind mount Λ࣮ߦ)# ps aux (ᶃϓϩηεҰཡ)# cat /proc/1/mountinfo (ᶄ/ ͱ /mnt ͷϚϯτͷ༷ࢠΛ֬ೝ)# ip a (ᶅωοτϫʔΫΠϯλʔϑΣʔεͷ༷ࢠΛ֬ೝ)# hostname hogehoge (ϗετ໊Λมߋ)# hostname (ᶆϗετ໊ͷ֬ೝ) ผͷγΣϧͰ $ ps aux (ᶃϓϩηεҰཡ)$ cat /proc/1/mountinfo (ᶄ/ ͱ /mnt ͷϚϯτͷ༷ࢠΛ֬ೝ)$ ip a (ᶅωοτϫʔΫΠϯλʔϑΣʔεͷ༷ࢠΛ֬ೝ)$ hostname (ᶆϗετ໊ͷ֬ೝ) Ճ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 30 / 48
NamespaceσϞ(2)User Namespace Λ࡞ͯ͠γΣϧΛىಈ͢ΔɿҰൠϢʔβ͕ Namespace Λ࡞Ͱ͖Δ͜ͱNamespace ͱϗετ্ͰγΣϧͷ࣮ޮϢʔβɾάϧʔϓ͕ҟͳΔ͜ͱNamespace Ͱ࡞ͨ͠ϑΝΠϧͷɺNamespace ͰݟͨΦʔφʔͱɺϗετ্ͰݟͨΦʔφʔ͕ҟͳΔ͜ͱՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 31 / 48
NamespaceσϞ(2)User Namespace $ unshare -U --map-root-user -- /bin/bash(User Namespace Λ࡞ɻݱϢʔβΛ Namespace ͷ root ʹϚοϐϯά)# echo $$# grep ’[U|G]id’ /proc/1082/status (ᶃϓϩηεͷ࣮ޮ ID ͷ֬ೝ)# touch /tmp/testfile# ls -l /tmp/testfile (ᶄϑΝΠϧͷΦʔφʔͷ֬ೝ) ผγΣϧͰ $ grep ’[U|G]id’ /proc/1082/status (ᶃϓϩηεͷ࣮ޮ ID ͷ֬ೝ)$ ls -l /tmp/testfile (ᶄϑΝΠϧͷΦʔφʔͷ֬ೝ) Ճ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 32 / 48
ࠓͷ༰ίϯςφͷ֓ཁLinux ʹ͓͚ΔίϯςφͷΈNamespaceσϞcgroupσϞ·ͱΊՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 33 / 48
Linuxʹ͓͚ΔίϯςφͷΈcgroupՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 34 / 48
cgroupͱϓϩηεΛάϧʔϓԽ͠ɺάϧʔϓʹରͯ͠Ϧιʔε੍ݶΛߦ͏ɻίϯςφઐ༻ͷΈͰͳ͍ɻcgroup ͷಛػೳ͝ͱʹαϒγεςϜʹ͔ΕΔcgroupfs ΛϚϯτͯ͠σΟϨΫτϦͰάϧʔϓΛද͢ϓϩηεΛάϧʔϓͷ tasks ϑΝΠϧʹՃ͢Δͱؔ࿈͢ΔλεΫ͕εϨου୯ҐͰάϧʔϓʹՃ͞ΕΔෳ֊ߏɻվߏ͝ͱʹҟͳΔπϦʔΛ࡞Ͱ͖Δɻͨͩ͠ɺҰͭͷαϒγεςϜ͕ॴଐͰ͖ΔπϦʔҰͭπϦʔͷͲͷϨϕϧͷάϧʔϓʹλεΫ͕ॴଐͰ͖ΔՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 35 / 48
cgroupͷ֊ߏՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 36 / 48
cgroupͷαϒγεςϜcpu: 2.6.24CFS(Completely Fair Scheduler) bandwidth controlɽ୯Ґ࣌ؒͷάϧʔϓͷλεΫ͕࣮ߦͰ͖Δ߹ܭ࣌ؒΛ੍ݶ͢Δ(3.2 Ͱ࣮)૬ରɽάϧʔϓؒͷ CPU ࣌ؒͷׂͷׂ߹Λࢦఆ͢Δɽྫ͑ GroupA=100,GroupB=50 ͱ͢Δͱ A:B=2:1cpuacct: 2.6.24άϧʔϓͷ CPU ϦιʔεͷϨϙʔτ (CPU ࣌ؒ)cpuset: 2.6.24ׂΓͯΔ CPU, ϝϞϦϊʔυͷׂՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 37 / 48
cgroupͷαϒγεςϜdevice: 2.6.26σόΠεͷΞΫηεڐՄɼ੍ݶͷࢦఆfreezer: 2.6.28άϧʔϓͷϓϩηεΛશͯҰ࣌ఀࢭ͢Δmemory: 2.6.29ϝϞϦϦιʔεͷ੍ݶ (ϢʔβϝϞϦɼΧʔωϧϝϞϦ)blkio (Block IO):I/O weight controller(2.6.33 Ҏ߱) άϧʔϓͷ༏ઌΛࢦఆ͢ΔI/O throttling(2.6.37 Ҏ߱) άϧʔϓͷϓϩηεͷσόΠεʹର͢Δૢ࡞ͷ߹ܭͷࢦఆ(ࢀߟ)Linux2.6.37 ͷ৽ػೳ “I/O throttling”Ճ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 38 / 48
cgroupͷαϒγεςϜhugetlb: 3.6cgroup ͔Βͷ hugetlb ͷ༻perf event: 2.6.39άϧʔϓ୯ҐͰ perf πʔϧͰϞχλϦϯά (ύϑΥʔϚϯεղੳ)net cls: 2.6.29ύέοτʹࣝผࢠΛ͚ͭɼτϥϑΟοΫίϯτϩʔϧ (tc) ͱnetfilter(3.14 Ҏ߱) ͰίϯτϩʔϧՄೳʹLinux 3.14 Ͱ net cls cgroup ʹՃ͞Εͨ netfilter ରԠnet prio: 3.3άϧʔϓؒͰͷωοτϫʔΫͷ༏ઌΛΠϯλʔϑΣʔεຖʹࢦఆ͢ΔLinux 3.3 ͷ৽ػೳ Network priority cgroupLinux 3.3 ͷ৽ػೳ Network priority cgroup (2)Ճ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 39 / 48
cgroupͷαϒγεςϜpids: 4.3fork() clone() ͰىಈͰ͖ΔϓϩηεΛ੍ݶ͢ΔLXC ͰֶͿίϯςφೖ ୈ 30 ճ Linux Χʔωϧͷίϯςφػೳ [8] ʔ cgroup ͷ pids αϒγεςϜՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 40 / 48
cgroupͷ͍ํcgroup ίϯςφͱؔͳ͘༻Մೳ # mount -t tmpfs cgroup_root /sys/fs/cgroup# mkdir /sys/fs/cgroup/memory# mount -t cgroup -o memory cgroup /sys/fs/cgroup/memory (ϝϞϦαϒγεςϜͷϚϯτ)# mkdir /sys/fs/cgroup/memory/test01 ("test01" ͱ͍͏άϧʔϓͷ࡞)# echo $$ > /sys/fs/cgroup/memory/test01/tasks (ϓϩηεΛάϧʔϓʹొ)# cat /sys/fs/cgroup/memory/test01/tasks (άϧʔϓͷϓϩηεͷ֬ೝ)28242837# echo 30M > /sys/fs/cgroup/memory/test01/memory.limit_in_bytes(άϧʔϓʹରͯ͠ϝϞϦ্ݶ 30M ͱ͍͏੍ݶΛઃఆ)# cat /sys/fs/cgroup/memory/test01/memory.limit_in_bytes (੍ݶͷ֬ೝ)31457280# cat /sys/fs/cgroup/memory/test01/memory.usage_in_bytes (ݱࡏͷ༻ྔͷ֬ೝ)565248 Ճ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 41 / 48
cgroup v24.5 ΧʔωϧͰ stable ʹͳͬͨ (ͦΕ·Ͱ։ൃ༻Ͱ࣮͞Ε͍ͯͨ)cgroup v1 ͕͋Δෳࡶ੍͗͢ݶ͕͋ΔͷͰෳࡶͳ͜ͱ͕Ͱ͖࣮ͯࡍ͑ͳ͍ɾΘͳ͍αϒγεςϜಉ࢜ͷ࿈ܞ͕औΕͳ͍·ͩҰ෦ͷαϒγεςϜͷΈ (memory,io,pids)Ұ෦ v2 Λͬͯɺଞ v1 Λ͏͜ͱͰ͖ΔΧʔωϧෟଐจॻ (Documentation/cgroup-v2.txt)Ճ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 42 / 48
cgroupσϞ1 CPU ༻࣌ؒͷ੍ݶ (https://asciinema.org/a/29131)୯Ґ࣌ؒ 100000(Ж s) த 1000(Ж s) ͚ͩ༻͢Δ2 ϓϩηεͷ੍ݶ (https://asciinema.org/a/29276)Ճ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 43 / 48
·ͱΊՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 44 / 48
·ͱΊίϯςφͷ֓ཁLinux ʹ͓͚ΔίϯςφͷΈίϯςφΧʔωϧʹ࣮͞Ε͍ͯΔ৭ʑͳػೳͷΈ߹ΘͤͰ࣮ݱ͞Ε͍ͯΔNamespaceOS ϦιʔεͷִcgroupϗετͷཧϦιʔεͷ੍ݶωοτϫʔΫؔ࿈ػೳvethmacvlanίϯςφͰ͑Δ໘ന͍ػೳՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 45 / 48
lxc-jpLXC ʹݶΒͣίϯςφͷΛѻ͍ͬͯ·͢ɻhttps://groups.google.com/d/forum/lxc-jpՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 46 / 48
ڠྗऀืूҎԼͷ༁Λߦ͍ͬͯ·͢ɻ͕࣌ؒ͋Δͱ͖͚ͩͰྑ͍ͷͰϨϏϡʔɺमਖ਼ɺվྑΛͯͩ͘͠͞Δํܴ͠·͢ɻLXC ϚχϡΞϧ (man pages)linuxcontainers.org ίϯςϯπLXD ຊޠϝοηʔδՃ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 47 / 48
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠Ճ౻ହจ ୈ 9 ճ ίϯςφܕԾԽͷใަձˏԬ 2016-04-23 48 / 48