国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

深究Runc源碼-2-創(chuàng)建Create流程分析

2022-11-15 12:31 作者:黑暗光影DIY  | 我要投稿


代碼基于1.1.0

首先將OCI runtime-spec轉(zhuǎn)換成libcontainer Config

libcontainer.Create復(fù)制Container實(shí)例的構(gòu)建,首先根據(jù)root,創(chuàng)建對(duì)應(yīng)目錄,root是一個(gè)全局命令行參數(shù),默認(rèn)是$XDG_RUNTIME_DIR/runc

main.go

XDG_RUNTIME_DIR=/run/user/${uid},root目錄用戶保存創(chuàng)建的容器state.json,全路徑為$root/$container-id/state.json

然后構(gòu)建cgroup.Manager實(shí)例,存在三種Manager實(shí)例,systemd,cgroupv1,cgroupv2,systemd通過全局配置項(xiàng)--systemd-cgroup控制,cgroupv1/v2則判斷操作系統(tǒng)是否開啟了v2,優(yōu)先使用v2

默認(rèn)dirPath是/sys/fs/cgroup/$ownCgroup/$container-id

最終構(gòu)建的Container實(shí)例為

runner實(shí)例為

然后進(jìn)入到runner.run流程

首先根據(jù)spec.Process構(gòu)建Process實(shí)例

根據(jù)CT_ACT_CREATE進(jìn)入Container.Start流程

首先創(chuàng)建execFifo文件,${root}/exec.fifo, root是上述container root,例如/run/user/1000/runc/mycontainer/exec.fifo,然后調(diào)用Container.start,首先構(gòu)建ParentProcess實(shí)例

其中Cmd實(shí)例為

initProcess.start首先調(diào)用cmd.start啟動(dòng)runc init子進(jìn)程,然后在父進(jìn)程中與子進(jìn)程進(jìn)行通信和同步等待runc init 完成。此時(shí)進(jìn)程已經(jīng)分化成兩個(gè)進(jìn)程,runc create和runc init。runc init流程在2.2.2 章節(jié)中詳細(xì)分析。runc create流程中重點(diǎn)分析一下cgroup的設(shè)置,如前面分析,默認(rèn)支持cgroupv1 cgroupv2 systemd三種類型,systemd通過命令行指定,cgroupv1 v2是通過檢測(cè)linux釋放開啟v2,優(yōu)先使用v2,在parent Process.start流程中調(diào)用manage.Apply設(shè)置runc init進(jìn)程的pid。

CreateCgroupPath調(diào)用根據(jù)manager.dirPath,從/sys/fs/cgroup開始,如果目錄不存在的話,依次循環(huán)創(chuàng)建對(duì)應(yīng)目錄,并寫入cgroup.subtree_control。

WriteCgroupProc將Init Pid寫入到dirPath/cgroup.procs中。

在parentProcess.start流程中,parseSync procHooks case中通過manage.Set設(shè)置cgroup資源控制值。

核心Kernel Cgroupv2接口的調(diào)用,詳細(xì)可參考kernel文檔https://docs.kernel.org/admin-guide/cgroup-v2.html


開源的東西,轉(zhuǎn)發(fā)不需要出處,就說你自己寫的

深究Runc源碼-2-創(chuàng)建Create流程分析的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
田林县| 资源县| 德阳市| 泰顺县| 应用必备| 大宁县| 海宁市| 天祝| 沾化县| 安仁县| 尼木县| 黎平县| 芦山县| 大英县| 靖西县| 阿荣旗| 临潭县| 彭水| 安宁市| 南宁市| 抚松县| 广西| 营山县| 鄱阳县| 灵寿县| 宣汉县| 大余县| 化隆| 灵川县| 宁陕县| 泰和县| 富顺县| 石门县| 定州市| 沅江市| 石阡县| 武义县| 绵竹市| 大理市| 泽州县| 田林县|