云计算_Docker原理-与Linux cgroup


control groups

Linux Container
 LXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,
    而且不需要提供指令解释机制以及全虚拟化的其他复杂性 LXC在资源管理方面依赖于Linux内核的cgroups子系统
1.cgroup全称是control groups
 cgroups是linux内核中的机制,这种机制可以根据特定的行为把一系列的任务,
 子任务整合或者分离,按照资源划分的等级的不同,从而实现资源统一控制的框架,
 cgroup可以控制、限制、隔离进程所需要的物理资源,
 包括cpu、内存、IO,为容器虚拟化提供了最基本的保证,
 是构建docker一系列虚拟化的管理工具
 task  cgroup subsystem  hierarchy
 
 对进程进行分组 并在分组的基础上对进程进行监控和资源控制管理等
 
2.
 01.cat /proc/cgroups
   通过查看/proc/[pid]/cgroup   eg: cat /proc/777/cgroup
     (since Linux 2.6.24)知道指定进程属于哪些cgroup
 
 02.cgroup相关的所有操作都是基于内核中的cgroup virtual filesystem
 /sys/fs/cgroup/
    绑定进程到指定cpu核数
    限制进程cpu使用率  限制内存使用量  限制磁盘读取速度
	
 03.Linux支持下面12种subsystem
   cpuset 绑定cgroup到指定CPUs和NUMA节点
   cpu 用来限制cgroup的CPU使用率。
   cpuacct 统计cgroup的CPU的使用率。
   memory 统计和限制cgroup的内存的使用率,包括process memory, kernel memory, 和swap。
   blkio 限制cgroup访问块设备的IO速度
   devices 限制cgroup创建(mknod)和访问设备的权限。
   freezer suspend和restore一个cgroup中的所有进程。
   net_prio 针对每个网络接口设置cgroup的访问优先级。
   net_cls  将一个cgroup中进程创建的所有网络包加上一个classid标记,用于tc和iptables。 只对发出去的网络包生效,对收到的网络包不起作用。
   net_prio 针对每个网络接口设置cgroup的访问优先级。
   perf_event  对cgroup进行性能监控
   hugetlb 限制cgroup的huge pages的使用量。
   pids 限制一个cgroup及其子孙cgroup中的总进程数。

systemd

CentOS 7 中默认的资源隔离是通过 systemd 进行资源控制的,systemd 内部使用 cgroups 对其下的单元进行资源管理,
包括 CPU、BlcokIO 以及 MEM,通过 cgroup 可以 。
systemd使用了cgroup与fanotify等组
 systemd 的资源管理主要基于三个单元 service、scope 以及 slice
###systemctl 是一个systemd工具,主要负责控制systemd系统和服务管理器	 
   systemctl show toptest
   ##获取当前某个服务的CPU分配额
   systemctl show -p CPUShares docker.service
    ##列出当前使用的运行等级
     systemctl get-default 
 
 
#### 
 systemd-cgls 
   systemd-cgls的作用是递归地显示指定 CGroup 的继承链
 systemd-analyze  
 ### 按CPU、内存、输入和输出列出控制组
 systemd-cgtop	

检测相关虚拟化信息:

sudo dmidecode -s system-manufacturer

systemctl show -p CPUShares

原创文章,作者:,如若转载,请注明出处:https://blog.ytso.com/271873.html

(0)
上一篇 2022年7月8日
下一篇 2022年7月8日

相关推荐

发表回复

登录后才能评论