Slide 1

Slide 1 text

cgroup v1 ֓ཁ ୈ 12 ճ ぢアふべٕज़〣৘ใަ׵ձ Ճ౻ହจ 2020-10-17 1/16

Slide 2

Slide 2 text

ࣗݾ঺հʢ1ʣ Ճ౻ହจ Twitter @ten_forward github https://github.com/tenforward ٕज़ϒϩά https://tenforward.hatenablog.com/ ॴଐ גࣜձࣾ IDC や゜アふくぎ / lxc-jp Project 2/16

Slide 3

Slide 3 text

ࣗݾ঺հʢ2ʣ झຯ〜ぢアふべ〹〘〛〳『ɻぢアふべ〣ओ〠じがぼ゚पล〣࣮૷〠ڵຯ⿿⿴〿〳『ɻ 2007 ೥ ぢアふべぇ࢖〘〔つがもと։ൃʢVirtuozzoʣ 2009 ೥ OpenVZ/LXC ৮〿〕『 2013 ೥ ୈ 1 ճぢアふべܕԾ૝Խ〣৘ใަ׵ձɹ։࠵ LXC ೔ຊޠ man pages ຋༁&ろがで ʢݱࡏ〤 LXD ؔ࿈〣຋༁ɺlinuxcontainers.org ຋༁〷〹〘〛〳『ʣ 2014 ೥ gihyo.jp 〜 ʮLXC 〜ֶ〫ぢアふべೖ໳ ʵܰྔԾ૝Խ؀ڥぇ࣮ݱ『぀ٕज़ʯ ࿈ࡌ։࢝ ݱࡏ CloudNative 〣೾〠৐〿஗ぁ぀ 3/16

Slide 4

Slide 4 text

ຊ೔〣಺༰ ࠓճʢୈ 12 ճʣ〝࣍ճʢୈ 13 ճʣ〜〤ɺcgroup v1 〣಺෦〠〙⿶〛〣なひてゖア⿿⿴〿〳 『ɻ〒ぁ〠޲々〛〈〈〜〤ɿ • cgroup v1 〣಺෦ߏ଄ぇཧղ『぀〣〠ඞཁ〟લఏ஌ࣝ〣঺հ • গ「〕々಺෦త〟ॲཧ〣⿼࿩ ぇ「〳『ɻ શମత〟 cgroup v1 〣આ໌〠〙⿶〛〤ɺࢲ〣࿈ࡌぇ〉ཡ。〕《⿶ʢୈ 3ʙ5 ճʣ ɻ • LXC 〜ֶ〫ぢアふべೖ໳ ʵܰྔԾ૝Խ؀ڥぇ࣮ݱ『぀ٕज़ ʢgihyo.jpʣ 4/16

Slide 5

Slide 5 text

cgroup 〝〤 • のとぜʢゆ゜なとɾと゛ひへʣぇそ゚がゆԽ「〛ɺそ゚がゆ಺〣のとぜ〠ର「〛ڞ௨〣؅ཧ ʢ゙ぬがと੍ݶʣぇߦ⿸ • ぢアふべઐ༻〣ػೳ〜〤〟⿶ 5/16

Slide 6

Slide 6 text

cgroup 〣ߏ଄ cgroup 〤಺෦త〠 2 〙〣෦෼〠෼々〛ߟ⿺぀〈〝⿿〜 〳『ʢv1, v2 ڞ௨ʣ ɻ • ぢぎ • ぢアぷ゜が゘ʢ ʮつゅてとふわʯ〝〷ݺ〥ぁ぀⿿࠷ۙ〤ぢアぷ゜が゘〝ݺ〥ぁ぀〈〝⿿ଟ⿶ʣ ର৅〣゙ぬがと〣؅ཧʢ゙ぬがと੍ݶʣ〠〙⿶〛〣࣮૷ ʮぢぎʯ〠〙⿶〛〤࣮ࡍ〠〒⿸⿶⿸෩〠ݺ〫⿾〤〽。஌〿〳【えɻ֤छ゙ぬがと〠ର『぀੍ݶぇ ߦ⿸ʮぢアぷ゜が゘ʯ〠ର「〛ɺcgroup ࣗମ〣؅ཧ〹 cgroup 〠ॴଐ『぀のとぜ〣؅ཧ〟〞ぇ ߦ⿸෦෼ぇ〈〈〜〤ʮぢぎʯ〝ݺ〨〳『ɻ 〈〣ޙ〣 @masami256 《え〝ɺ࣍ճ〣ࢲ〣ൃද〤ʮぢぎʯ〣ૢ࡞〠ؔ『぀ղઆ〜『ɻ 6/16

Slide 7

Slide 7 text

cgroup 〣ར༻ํ๏ ʮぢぎʯ〣આ໌ぇ『぀લ〠 cgroup ぇ〞⿸〹〘〛࢖⿸⿾ぇ؆୯〠આ໌「〳『ɻ • cgroupfs 〝⿶⿸ಛघ〟やきぐ゚てとふわぇろげアぷ「〛ར༻『぀ • ௨ৗ〣やきぐ゚てとふわ〣〽⿸〠ぶく゛ぜぷ゙〝やきぐ゚〠〽぀πϦʔߏ଄ぇ〝぀ • び゙がߏ଄ࣗମ〤 kernfs 〣ػೳぇར༻「〛⿶぀ • kernfs ˠ《〳》〳〟じがぼ゚಺෦〣ػೳ⿿࢖⿸ٙࣅやきぐ゚てとふわ޲々〣ػೳ⿿࣮૷《ぁ〛 ⿶぀ • ぶく゛ぜぷ゙〜άϧʔϓʢcgroupʣぇද『 • ֤ぶく゛ぜぷ゙಺〠 cgroup ぇૢ࡞『぀〔〶〣ٖࣅత〟やきぐ゚⿿ଘࡏ『぀ 7/16

Slide 8

Slide 8 text

cgroup ぢぎ • cgroupfsʢ֊૚ߏ଄ʣ〣ૢ࡞ • ֊૚ߏ଄ぇ࢖〘〛ゆ゜なとぇそ゚がゆԽ『぀ػೳ • そ゚がゆʢcgroupʣ〝ぢアぷ゜が゘〝のとぜ〣〧〷〚々 8/16

Slide 9

Slide 9 text

ぢアぷ゜が゘ ର৅゙ぬがと〉〝〠ぢアぷ゜が゘⿿४උ《ぁ぀ • cpu • memory • devices • blkio • ʢ〟〞ʣ 9/16

Slide 10

Slide 10 text

cgroup 〣ぢがへ cgroup 〣ぢがへ〤 kernel ぢがへび゙が〣〞〈〠⿴぀⿾? ぢぎ kernel/cgroup ҎԼ〠ଘࡏ「〳『 • cgroup-internal.h • cgroup-v1.c • cgroup.c ぢアぷ゜が゘ ػೳ〉〝〠৭ʑ〟〝〈あ〠⿴〿〳『 • ⿶。〙⿾〣ぢアぷ゜が゘〤 kernel/cgroup ҎԼ • 〒〣ଞ〤ぢがへび゙が಺〜 struct cgroup_subsys ぇ୳「〛。〕《⿶ɻぢ アぷ゜が゘〤 cgroup_subsys ߏ଄ମ〝「〛࣮૷「〳『 10/16

Slide 11

Slide 11 text

cgroup v1 〣ಛ௃ • ෳ਺֊૚ߏ଄ɿෳ਺〣 cgroupfs ぇろげアぷ「〛ɺ〒ぁ〓ぁ〠೚ҙ〣ぢアぷ゜が゘ぇ〧〷 〚々〾ぁ぀ɻ〔〕「ɺぢアぷ゜が゘ぇ〧〷〚々〾ぁ぀〣〤〧〝〙〣 cgroupfs 〣〴 • ֊૚〠〤ぢアぷ゜が゘ぇ〧〷〚々぀ඞཁ〤〟⿶ʢsystemd 〤ゆ゜なと؅ཧ〣〔〶〠ぢアぷ゜が ゘〟「〣֊૚ぇ࢖⿸ʣ • cgroup ⿿ѻ⿸のとぜ〣୯Ґ〤εϨου୯Ґ • び゙が಺〣೚ҙ〣そ゚がゆʢぶく゛ぜぷ゙ʣ〠のとぜ⿿ॴଐՄೳ 11/16

Slide 12

Slide 12 text

cgroup v1 〣ಛ௃ ࣗ༝౓ߴ『、໰୊ˠಛ௃ʹܽ఺ • ෳ਺֊૚ߏ଄ʢ⿶。〙ろげアぷ《ぁ぀⿾ෆ໌ɻෳ਺ろげアぷ《ぁ〔৔߹〜〷֊૚〣ܗঢ়〤〒 ぁ〓ぁҟ〟぀ʣ • ֊૚〭〣ぢアぷ゜が゘〣〧〷〚々〷೚ҙʢ〞〈〠〞〣ぢアぷ゜が゘⿿〧〷〚々〾ぁ぀⿾ෆ ໌ɻ⿶。〙〣ぢアぷ゜が゘⿿֊૚〠〧〷〚々〾ぁ぀⿾〷ෆ໌ʣ • ֊૚〣〞〈〠のとぜ⿿ॴଐ『぀⿾〷ෆ໌ɻ֊૚〣ਂ《〷ෆ໌ɻ • ෳ਺〣֊૚⿿⿴぀৔߹ɺ⿴぀のとぜ〤શ֊૚಺〣〞〈⿾〣 cgroup 〠ଐ『぀ 〈〣ࣗ༝౓ߴ『、〟ߏ଄ぇදݱ〜 ぀಺෦ߏ଄ぇ࣋〙ඞཁ⿿⿴぀ˠෳࡶ『、ʂ 〈〣ෳࡶ《⿿ cgroup v2 ⿿։ൃ《ぁ぀ݪҼʢ〣〧〝〙ʣ〠〟〘〔 12/16

Slide 13

Slide 13 text

cgroup 〣جຊత〟ૢ࡞ • cgroup 〣࢖༻ɿcgroupfs 〣ろげアぷʢやきぐ゚てとふわ໊ɿv1:cgroup, v2:cgroup2ʣ • cgroup 〣࡞੒ɿぶく゛ぜぷ゙࡞੒ • のとぜ〣ొ࿥ɿ֤ぶく゛ぜぷ゙಺〣 task やきぐ゚ɺcgroup.procs やきぐ゚〠のとぜ〣 IDʢPIDɺTIDʣぇॻ ࠐ〵 • ゙ぬがと੍ݶ〣ઃఆɿ֤ぢアぷ゜が゘༻〣やきぐ゚〠จࣈྻぇॻ ࠐ〵 • のとぜ〤ぶやさ゚ぷ〜〤਌ゆ゜なと〝ಉ」 cgroup 〠ॴଐ『぀ʢinit 〤 root cgroup 〠ॴ ଐ『぀〣〜ಛ〠Ҡಈૢ࡞ぇߦい〟⿶৔߹〤ゆ゜なと〤 root cgroup 〠ॴଐʣ • 5.7 〜਌ゆ゜なと〝〤ҧ⿸ cgroup 〠௚઀ੜ੒〜 ぀〽⿸〠〟〘〔 13/16

Slide 14

Slide 14 text

cgroup v1 〣ॳظԽ • てとふわ্〜〞〣ぢアぷ゜が゘⿿࢖⿺぀⿾〤ぢアむぐ゚࣌〠ܾఆ • ෳ਺֊૚ߏ଄ɺ〙〳〿てとふわ্〜⿶。〙 cgroupfs ⿿ろげアぷ《ぁ぀⿾ෆఆɻ《〾〠〞 〣び゙が〠〞〣ぢアぷ゜が゘⿿〧〷〚々〾ぁ぀⿾〷ෆఆˠ v1 〣ॳظԽॲཧ〤〰〱ろげアぷ ࣌〠ߦいぁ぀ • じがぼ゚ىಈ࣌〣 cgroup ॳظԽॲཧ〤〰〝え〞⿿ v2 ༻ɻぶく゛ぜぷ゙ʢcgroupʣ಺〠 ݱぁ぀やきぐ゚ぇઃఆ『぀ఔ౓ 14/16

Slide 15

Slide 15 text

cgroup v1 〣ろげアぷ༻まアへ゘ ʢ4.19 ࣌఺ɻ5.2 Ҏ߱มい〿〳『ʣLinux 〜〤ろげアぷॲཧぇ࣮ߦ『぀〝ɺやきぐ゚てとふわ ໊ぇずが〠「〛ɺてとふわ্〜࢖⿺぀やきぐ゚てとふわ〣゙とぷぇݕࡧ「ɺ֘౰〣やきぐ゚てと ふわ〣 file_system_type ߏ଄ମぇऔಘ「〳『ɻcgroup v1 〤࣍〣〽⿸〠ఆٛ《ぁ〛⿶〳『 ʢkernel/cgroup/cgroup.cʣ struct file_system_type cgroup_fs_type = { .name = "cgroup", .mount = cgroup_mount, .kill_sb = cgroup_kill_sb, .fs_flags = FS_USERNS_MOUNT, }; • ろげアぷ〣ࡍ〤 cgroup_mount ؔ਺ • ぎアろげアぷ〣ࡍ〤 cgroup_kill_sb ؔ਺ ⿿ݺ〥ぁ぀〈〝⿿い⿾〿〳『ɻ 15/16

Slide 16

Slide 16 text

cgroup v1 〣ૢ࡞༻まアへ゘ cgroup 〤 kernfs 〣ػೳぇ࢖༻「〳『ɻ֤छૢ࡞〤 kernfs_syscall_ops ߏ଄ମ〣֤ゐアみ 〠ొ࿥《ぁ〛⿶〳『ʢkernel/cgroup/cgroup-v1.cʣ ɻ struct kernfs_syscall_ops cgroup1_kf_syscall_ops = { .rename = cgroup1_rename, .show_options = cgroup1_show_options, .remount_fs = cgroup1_remount, .mkdir = cgroup_mkdir, .rmdir = cgroup_rmdir, .show_path = cgroup_show_path, }; 16/16