登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-07 10:45:37 414浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《golang中的cgroups freeze和linux命令“Kill - STOP pid”有什么区别?》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

我使用这个 cgroups 包。

我对 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 commit b3f3344并参考cgroup v1 self-state

cgroup 冻结器是分层的。

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

CGroup Freezer 状态:

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

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

含义(here):

freer子系统用于挂起和恢复cgroup中的进程。

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

本篇关于《golang中的cgroups freeze和linux命令“Kill - STOP pid”有什么区别?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>