Cgroup Freezer 【ChatGPT】

简介: Cgroup Freezer 【ChatGPT】

Cgroup Freezer

cgroup冷冻器对于批处理作业管理系统非常有用,该系统可以启动和停止一组任务,以便根据系统管理员的需求安排机器的资源。这种程序通常用于HPC集群,以安排对整个集群的访问。cgroup冷冻器使用cgroups来描述批处理作业管理系统要启动/停止的任务集。它还提供了一种启动和停止组成作业的任务的方法。

cgroup冷冻器还可用于对运行中的任务组进行检查点。冷冻器允许检查点代码通过尝试将cgroup中的任务强制转换为静止状态来获得任务的一致图像。一旦任务处于静止状态,另一个任务就可以遍历/proc或调用内核接口来收集有关已静止任务的信息。检查点任务可以在以后重新启动,以防发生可恢复的错误。这还允许将检查点任务在集群中的节点之间迁移,方法是将收集到的信息复制到另一个节点,并在那里重新启动任务。

SIGSTOP和SIGCONT的序列并不总是足以停止和恢复用户空间的任务。这两个信号都可以从我们希望冻结的任务内部观察到。虽然SIGSTOP无法被捕获、阻塞或忽略,但它可以被等待或ptrace父任务看到。SIGCONT特别不适合,因为它可以被任务捕获。任何旨在监视SIGSTOP和SIGCONT的程序都可能因尝试使用SIGSTOP和SIGCONT来停止和恢复任务而出现问题。我们可以使用嵌套的bash shell来演示这个问题:

$ echo $$
16644
$ bash
$ echo $$
16690

从第二个不相关的bash shell:

$ kill -SIGSTOP 16690
$ kill -SIGCONT 16690

<此时16690退出并导致16644也退出>

这是因为bash可以观察到这两个信号并选择如何对其做出响应。

另一个捕获并响应这些信号的程序的例子是gdb。实际上,任何旨在使用ptrace的程序都可能在停止和恢复任务的方法上出现问题。

相比之下,cgroup冷冻器使用内核冷冻器代码来防止冻结/解冻周期对被冻结的任务变得可见。这允许上述bash示例和gdb按预期运行。

cgroup冷冻器是分层的。冻结一个cgroup会冻结属于该cgroup及其所有后代cgroup的所有任务。每个cgroup都有自己的状态(self-state)和从父级继承的状态(parent-state)。只有当这两个状态都是THAWED时,cgroup才是THAWED。

cgroup冷冻器创建了以下cgroupfs文件。

  • freezer.state:读写。
  • 读取时,返回cgroup的有效状态 - "THAWED"、"FREEZING"或"FROZEN"。这是自身状态和父状态的组合。如果任何一个正在冻结,cgroup就处于冻结状态(FREEZING或FROZEN)。
  • 当写入时,设置cgroup的自身状态。允许两个值 - "FROZEN"和"THAWED"。如果写入了FROZEN,则cgroup(如果尚未冻结)进入FREEZING状态,以及其所有后代cgroup。
  • 如果写入了THAWED,则cgroup的自身状态将更改为THAWED。请注意,如果父状态仍在冻结,有效状态可能不会更改为THAWED。如果cgroup的有效状态变为THAWED,则因为该cgroup而处于冻结状态的所有后代也将离开冻结状态。
  • freezer.self_freezing:只读。
  • 显示自身状态。如果自身状态为THAWED,则为0;否则为1。如果最后一次对freezer.state的写入是"FROZEN",则该值为1。
  • freezer.parent_freezing:只读。
  • 显示父状态。如果cgroup的祖先中没有一个被冻结,则为0;否则为1。

根cgroup是不可冻结的,上述接口文件不存在。

使用示例:

# mkdir /sys/fs/cgroup/freezer
# mount -t cgroup -ofreezer freezer /sys/fs/cgroup/freezer
# mkdir /sys/fs/cgroup/freezer/0
# echo $some_pid > /sys/fs/cgroup/freezer/0/tasks

获取冷冻器子系统的状态:

# cat /sys/fs/cgroup/freezer/0/freezer.state
THAWED

冻结容器中的所有任务:

# echo FROZEN > /sys/fs/cgroup/freezer/0/freezer.state
# cat /sys/fs/cgroup/freezer/0/freezer.state
FREEZING
# cat /sys/fs/cgroup/freezer/0/freezer.state
FROZEN

解冻容器中的所有任务:

# echo THAWED > /sys/fs/cgroup/freezer/0/freezer.state
# cat /sys/fs/cgroup/freezer/0/freezer.state
THAWED

这是在简单场景中为用户空间任务执行正确操作的基本机制。

相关文章
|
2月前
|
网络协议
网络优先级cgroup 【ChatGPT】
网络优先级cgroup 【ChatGPT】
|
2月前
网络分类器 cgroup 【ChatGPT】
网络分类器 cgroup 【ChatGPT】
|
6月前
|
人工智能 IDE Linux
chatgpt的ai编程工具
该内容是关于两个chatgpt的ai编程工具的安装和使用说明。Copilot的下载步骤包括在IDE的设置中搜索并安装插件,然后重启IDE并登录GitHub账户。使用时,通过写注释触发建议,用快捷键选择建议。启用或禁用Copilot可通过底部状态图标。另一个工具是Alibaba Cloud AI Coding Assistant (Cosy),同样在IDE的插件市场下载安装后重启。其详细使用方法建议参考官网。
299 0
|
3月前
|
人工智能 自然语言处理 搜索推荐
chatgpt这么火,现在AI搜索引擎有哪些呢?
国外AI搜索引擎包括ChatGPT,擅长自然语言处理与内容生成;Google Bard,提供智能个性化搜索体验;Microsoft Bing集成GPT模型增强智能检索;Perplexity AI以简洁答案及文献引用著称;Neeva强调隐私保护与无广告服务。国内方面,天工AI支持多种功能如知识问答与代码编程;腾讯元宝基于混元模型助力内容创造与学习;360AI搜索以精准全面的信息搜索见长;秘塔AI专注提升写作质量和效率;开搜AI搜索提供个性化智能搜索服务。以上引擎均利用先进AI技术提升用户体验。更多详情参阅[AI搜索合集](zhangfeidezhu.com/?page_id=651)。
110 8
chatgpt这么火,现在AI搜索引擎有哪些呢?
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
HuggingGPT解析:使用 ChatGPT及HuggingFace上的族系解决AI问题
HuggingGPT是一个框架,它使用大型语言模型(如ChatGPT)作为控制器来管理和协调Hugging Face上的AI模型,以语言作为通用接口解决多模态和领域的复杂AI任务。
57 0
HuggingGPT解析:使用 ChatGPT及HuggingFace上的族系解决AI问题
|
3月前
|
机器学习/深度学习 人工智能 算法
为什么ChatGPT等AI大模型都是基于Python开发?
为什么ChatGPT等AI大模型都是基于Python开发?
|
3月前
|
人工智能 自然语言处理 Linux
免费ChatGPT4o灵办AI可体验浏览器插件
灵办AI就是您所需的最佳助手!我们为您带来了一款多功能AI工具,ChatGPT4o不仅能为您提供精准翻译,还能满足您的对话需求、智能续写、AI搜索、文档阅读、代码生成与修正等多种需求。灵办 AI,真正让工作和学习变得轻松高效!一款多功能智能助手,旨在提升工作和学习效率。它提供实时翻译、对话问答、搜索、写作和网页阅读等服务,支持多种浏览器和操作系统,帮助用户随时获取信息,打破语言障碍,优化内容创作和信息处理。
116 0
|
3月前
|
Web App开发 人工智能 安全
Gemini vs ChatGPT:谷歌最新的AI和ChatGPT相比,谁更强?
Gemini vs ChatGPT:谷歌最新的AI和ChatGPT相比,谁更强?
|
3月前
|
人工智能 安全 机器人
ChatGPT 1岁:创新、争议和AI产生突破的一年
ChatGPT 1岁:创新、争议和AI产生突破的一年
|
5月前
|
人工智能 安全 机器人
ChatGPT 1岁:创新、争议和AI产生突破的一年
ChatGPT 1岁:创新、争议和AI产生突破的一年