Share
Embed
cgroup v1概要 / 12th CTStudy
「第12回コンテナ技術の情報交換会@オンライン」の発表資料です。
参考となる情報にはPDF中からリンクをしていますが、資料中のリンクは Speaker Deck 上ではクリックできないので PDF をダウンロードしてご覧ください。
tenforward
October 17, 2020
Transcript
16 slides
-
ࣗݾհʢ1ʣ Ճ౻ହจ Twitter @ten_forward github https://github.com/tenforward ٕज़ϒϩά https://tenforward.hatenablog.com/ ॴଐ גࣜձࣾ
IDC や゜アふくぎ / lxc-jp Project 2/16 -
ࣗݾհʢ2ʣ झຯ〜ぢアふべ〹〘〛〳『ɻぢアふべ〣ओ〠じがぼ゚पล〣࣮〠ڵຯ⿴〿〳『ɻ 2007 ぢアふべぇ〘〔つがもと։ൃʢVirtuozzoʣ 2009 OpenVZ/LXC ৮〿〕『 2013
ୈ 1 ճぢアふべܕԾԽ〣ใަձɹ։࠵ LXC ຊޠ man pages ༁&ろがで ʢݱࡏ〤 LXD ؔ࿈〣༁ɺlinuxcontainers.org ༁〷〹〘〛〳『ʣ 2014 gihyo.jp 〜 ʮLXC 〜ֶ〫ぢアふべೖ ʵܰྔԾԽڥぇ࣮ݱ『ٕज़ʯ ࿈ࡌ։࢝ ݱࡏ CloudNative 〣〠〿ぁ 3/16 -
ຊ〣༰ ࠓճʢୈ 12 ճʣ〝࣍ճʢୈ 13 ճʣ〜〤ɺcgroup v1 〣෦〠〙⿶〛〣なひてゖア⿴〿〳 『ɻ〒ぁ〠々〛〈〈〜〤ɿ •
cgroup v1 〣෦ߏぇཧղ『〣〠ඞཁ〟લఏࣝ〣հ • গ「〕々෦త〟ॲཧ〣 ぇ「〳『ɻ શମత〟 cgroup v1 〣આ໌〠〙⿶〛〤ɺࢲ〣࿈ࡌぇ〉ཡ。〕《⿶ʢୈ 3ʙ5 ճʣ ɻ • LXC 〜ֶ〫ぢアふべೖ ʵܰྔԾԽڥぇ࣮ݱ『ٕज़ ʢgihyo.jpʣ 4/16 -
cgroup 〣ߏ cgroup 〤෦త〠 2 〙〣෦〠々〛ߟ⿺〈〝〜 〳『ʢv1, v2 ڞ௨ʣ ɻ •
ぢぎ • ぢアぷ゜がʢ ʮつゅてとふわʯ〝〷ݺ〥ぁ࠷ۙ〤ぢアぷ゜が〝ݺ〥ぁ〈〝ଟ⿶ʣ ର〣゙ぬがと〣ཧʢ゙ぬがと੍ݶʣ〠〙⿶〛〣࣮ ʮぢぎʯ〠〙⿶〛〤࣮ࡍ〠〒⿸⿶⿸෩〠ݺ〫〤〽。〿〳【えɻ֤छ゙ぬがと〠ର『੍ݶぇ ߦ⿸ʮぢアぷ゜がʯ〠ର「〛ɺcgroup ࣗମ〣ཧ〹 cgroup 〠ॴଐ『のとぜ〣ཧ〟〞ぇ ߦ⿸෦ぇ〈〈〜〤ʮぢぎʯ〝ݺ〨〳『ɻ 〈〣ޙ〣 @masami256 《え〝ɺ࣍ճ〣ࢲ〣ൃද〤ʮぢぎʯ〣ૢ࡞〠ؔ『ղઆ〜『ɻ 6/16 -
cgroup 〣ར༻ํ๏ ʮぢぎʯ〣આ໌ぇ『લ〠 cgroup ぇ〞⿸〹〘〛⿸ぇ؆୯〠આ໌「〳『ɻ • cgroupfs 〝⿶⿸ಛघ〟やきぐ゚てとふわぇろげアぷ「〛ར༻『 • ௨ৗ〣やきぐ゚てとふわ〣〽⿸〠ぶく゛ぜぷ゙〝やきぐ゚〠〽πϦʔߏぇ〝
• び゙がߏࣗମ〤 kernfs 〣ػೳぇར༻「〛⿶ • kernfs ˠ《〳》〳〟じがぼ゚෦〣ػೳ⿸ٙࣅやきぐ゚てとふわ々〣ػೳ࣮《ぁ〛 ⿶ • ぶく゛ぜぷ゙〜άϧʔϓʢcgroupʣぇද『 • ֤ぶく゛ぜぷ゙〠 cgroup ぇૢ࡞『〔〶〣ٖࣅత〟やきぐ゚ଘࡏ『 7/16 -
cgroup 〣ぢがへ cgroup 〣ぢがへ〤 kernel ぢがへび゙が〣〞〈〠⿴? ぢぎ kernel/cgroup ҎԼ〠ଘࡏ「〳『 •
cgroup-internal.h • cgroup-v1.c • cgroup.c ぢアぷ゜が ػೳ〉〝〠৭ʑ〟〝〈あ〠⿴〿〳『 • ⿶。〙〣ぢアぷ゜が〤 kernel/cgroup ҎԼ • 〒〣ଞ〤ぢがへび゙が〜 struct cgroup_subsys ぇ୳「〛。〕《⿶ɻぢ アぷ゜が〤 cgroup_subsys ߏମ〝「〛࣮「〳『 10/16 -
cgroup v1 〣ಛ • ෳ֊ߏɿෳ〣 cgroupfs ぇろげアぷ「〛ɺ〒ぁ〓ぁ〠ҙ〣ぢアぷ゜がぇ〧〷 〚々〾ぁɻ〔〕「ɺぢアぷ゜がぇ〧〷〚々〾ぁ〣〤〧〝〙〣 cgroupfs 〣〴
• ֊〠〤ぢアぷ゜がぇ〧〷〚々ඞཁ〤〟⿶ʢsystemd 〤ゆ゜なとཧ〣〔〶〠ぢアぷ゜が 〟「〣֊ぇ⿸ʣ • cgroup ѻ⿸のとぜ〣୯Ґ〤εϨου୯Ґ • び゙が〣ҙ〣そ゚がゆʢぶく゛ぜぷ゙ʣ〠のとぜॴଐՄೳ 11/16 -
cgroup v1 〣ಛ ࣗ༝ߴ『、ˠಛʹܽ • ෳ֊ߏʢ⿶。〙ろげアぷ《ぁෆ໌ɻෳろげアぷ《ぁ〔߹〜〷֊〣ܗঢ়〤〒 ぁ〓ぁҟ〟ʣ • ֊〭〣ぢアぷ゜が〣〧〷〚々〷ҙʢ〞〈〠〞〣ぢアぷ゜が〧〷〚々〾ぁෆ ໌ɻ⿶。〙〣ぢアぷ゜が֊〠〧〷〚々〾ぁ〷ෆ໌ʣ
• ֊〣〞〈〠のとぜॴଐ『〷ෆ໌ɻ֊〣ਂ《〷ෆ໌ɻ • ෳ〣֊⿴߹ɺ⿴のとぜ〤શ֊〣〞〈〣 cgroup 〠ଐ『 〈〣ࣗ༝ߴ『、〟ߏぇදݱ〜 ෦ߏぇ࣋〙ඞཁ⿴ˠෳࡶ『、ʂ 〈〣ෳࡶ《 cgroup v2 ։ൃ《ぁݪҼʢ〣〧〝〙ʣ〠〟〘〔 12/16 -
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 -
cgroup v1 〣ॳظԽ • てとふわ্〜〞〣ぢアぷ゜が⿺〤ぢアむぐ゚࣌〠ܾఆ • ෳ֊ߏɺ〙〳〿てとふわ্〜⿶。〙 cgroupfs ろげアぷ《ぁෆఆɻ《〾〠〞 〣び゙が〠〞〣ぢアぷ゜が〧〷〚々〾ぁ〷ෆఆˠ
v1 〣ॳظԽॲཧ〤〰〱ろげアぷ ࣌〠ߦいぁ • じがぼ゚ىಈ࣌〣 cgroup ॳظԽॲཧ〤〰〝え〞 v2 ༻ɻぶく゛ぜぷ゙ʢcgroupʣ〠 ݱぁやきぐ゚ぇઃఆ『ఔ 14/16 -
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 -
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