繁体   English   中英

cgroups freeze 和 golang 中的 linux 命令“Kill - STOP pid”有什么区别?

[英]What is the difference between cgroups freeze and linux command "Kill - STOP pid" in golang?

我使用这个cgroups package。

我对type Cgroup有两个接口感兴趣。 一个是Freeze() error ,一个是Thaw() error 。它们的描述如下:

    ...
    // Freeze freezes or pauses all processes inside the cgroup
    Freeze() error
    // Thaw thaw or resumes all processes inside the cgroup
    Thaw() error
    ...

并且有两个 linux 命令可以暂停和恢复进程,即kill -STOP pidkill -CONT pid

我想知道如果一个cgroup中只有一个进程,这两种暂停和恢复进程的方式有什么区别吗? 谢谢。

这两个州都是在 10 月引入的。 2016 年在containerd/cgroups提交 b3f3344并参考cgroup v1 自我状态

cgroup freezer 是分层的。

冻结一个 cgroup 会冻结属于该 cgroup 及其所有后代 cgroup 的所有任务。
每个cgroup都有自己的state(self-state)和从parent继承的state(parent-state)。
如果两个状态都已解冻,则 cgroup 已解冻。

CGroup 冷冻机状态:

freezer.state仅在非根 cgroups 中可用,具有三个可能的值:

  • FROZEN — cgroup 中的任务被暂停。
  • FREEZING — 系统正在挂起 cgroup 中的任务。
  • THAWED — cgroup 中的任务已恢复。

意思( 这里):

freezer 子系统用于暂停和恢复 cgroup 中的进程。

Freezer有一个控制文件: freezer.state ,写FROZEN到这个文件,可以挂起cgroup中的进程,写THAWED到这个文件,可以恢复挂起的进程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM