容器核心技术

编程入门 行业动态 更新时间:2024-10-24 16:27:21

容器<a href=https://www.elefans.com/category/jswz/34/1767668.html style=核心技术"/>

容器核心技术

一、Cgroups

  • Cgroups (Control Groups) 是 Linux 下用于对一个或一组进程进行资源控制和监控的机制;
  • 可以对诸如CPU使用时间、内存、磁盘I/O等进程所需的资源进行限制;
  • 不同资源的具体管理工作由相应的Cgroup 子系统(Subsystem)来实现;
  • 针对不同类型的资源限制,只要将限制策略在不同的的子系统上进行关联即可;
  • Cgroups在不同的系统资源管理子系统中以层级树(Hierarchy)的方式来组织管理:每个Cgroup都可以包含其他的子Cgroup,因此子Cgroup能使用的资源除了受本Cgroup 配置的资源参数限制,还受到父Cgroup 设置的资源限制。
  • 在cgroup中,使用 task(任务) 来表示系统的一个进程或线程。

二、子系统

  1. blkio: 这个子系统设置限制每个块设备的输入输出控制。例如:磁盘,光盘以及USB等等
  2. cpu: 这个子系统使用调度程序为cgroup任务提供CPU的访问
  3. cpuacct: 产生cgroup任务的CPU资源报告
  4. cpuset: 如果是多核心的CPU,这个子系统会为cgroup任务分配单独的CPU和内存
  5. devices: 允许或拒绝cgroup 任务对设备的访问
  6. freezer: 暂停和恢复 cgroup 任务
  7. memory: 设置每个cgroup的内存限制以及产生内存资源报告
  8. net_cls: 标记每个网络包以供cgroup方便使用
  9. ns: 名称空间子系统
  10. pid: 进程标识子系统

三、示例

3.1 cpu子系统

busyloop:

package main
func main(){go func(){for{}}()for{}
}

1.运行busyloop,top查看 CPU 使用情况,CPU 占用 200%:

2.通过cgroup 限制 cpu:

#在cgroup cpu 子系统目录中创建目录
#创建完之后在目录中自动生成一些文件,只需要修改文件的配置就可以
cd/sys/fs/cgroup/cpu
mkdir cpudemo


3.把进程添加到cgroup.procs

echo $(ps -ef | grep busyloop | grep -v grep | awk '{print $2}') > cgroup.procs
echo 10000> cpu.cfs_quota_us


4.进程的cpu限制到了10%


cpu.cfs_period_us ,是CFS 调度的周期,默认是 100000,单位是 microseconds 也就是 100ms
cpu.cfs_quota_us 在一个调度周期里,这个控制组被允许的运行时间,比如 30000 ,就是 30ms
这两个参数进行除法 cpu.cfs_quota_us/cpu.cfs_period_us ,比如 10ms /100ms = 0.1 ,表示这个控制组被允许使用的CPU最大配额是 0.1个cpu

更多推荐

容器核心技术

本文发布于:2023-11-16 08:16:16,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1614687.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:核心技术   容器

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!