最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ó)家法律
泰宁县| 桦甸市| 池州市| 阜康市| 商水县| 喀喇| 嘉兴市| 垫江县| 永修县| 渝北区| 江华| 黔西| 博兴县| 方山县| 来宾市| 名山县| 垫江县| 江城| 宝清县| 广平县| 沙洋县| 西城区| 社旗县| 遂昌县| 穆棱市| 芷江| 青神县| 黑水县| 延津县| 泊头市| 交城县| 新宾| 宁陵县| 潞城市| 西平县| 无为县| 从江县| 拉萨市| 宜宾市| 义乌市| 安远县|