Docker容器学习 --- cgroup搭建

什么是cgroup:

Cgroups 是 control groups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组
(process groups)所使用的物理资源(如:cpu,memory,IO等等)的机制。最初由 google 的
工程师提出,后来被整合进 Linux 内核。Cgroups 也是 LXC 为实现虚拟化所使用的资源管理手段,
可以说没有cgroups就没有LXC。

cgroup可以干什么:

1.限制进程组可以使用的资源数量,限制进程最大使用的内存等
2.进程组的优先级控制,比如为某个进程组分配特定的cpu share
3.记录进程组使用的资源数量,比如记录某个进程CPU的使用时间
4.进程组隔离,比如通过namespace以达到隔离的目的
5.进程组控制,比如可以将进程组挂起或恢复

在Cgroup可以说理解了这四个概念,那么对于如何使用cgroup,将会是如鱼得水。

Subsystems: 称之为子系统,一个子系统就是一个资源控制器,比如 cpu子系统就是控制
cpu时间分配的一个控制器。
Hierarchies: 可以称之为层次体系也可以称之为继承体系,指的是Control Groups是
按照层次体系的关系进行组织的。
Control Groups: 一组按照某种标准划分的进程。进程可以从一个Control Groups迁移
到另外一个Control Groups中,同时Control Groups中的进程也会受到这个组的资源限制。
Tasks: 在cgroups中,Tasks就是系统的一个进程。

在Red_Hat_Enterprise_Linux-6系列的linux中,默认提供了如下子系统。

    blkio这个子系统为块设备设定输入/输出限制,比如物理设备(磁盘,固态硬盘,USB 等等) 。
    cpu这个子系统使用调度程序提供对 CPU 的 cgroup 任务访问。
    cpuacct这个子系统自动生成 cgroup 中任务所使用的 CPU 报告。
    cpuset这个子系统为 cgroup 中的任务分配独立 CPU(在多核系统)和内存节点。
    devices这个子系统可允许或者拒绝 cgroup 中的任务访问设备。
    freezer这个子系统挂起或者恢复 cgroup 中的任务。
    memory这个子系统设定 cgroup 中任务使用的内存限制,并自动生成由那些任务使用的内存资源报告。
    net_cls这个子系统使用等级识别符(classid)标记网络数据包,可允许 Linux 流量控制程序
   (tc)识别从具体 cgroup 中生成的数据包。
    ns名称空间子系统。

cgroup ##(此例是在redhat6.5中做测试)
cgroups 实现了对资源的配额和度量.(此例中凡是需要/etc/init.d/cgconfig restart 均需跳出cgroup目录进行操作,否则会重启失败)

[root@server1 ~]# yum search cgroup  寻找软件包
Loaded plugins: product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
LoadBalancer                                                         | 3.9 kB     00:00     
rhel-source                                                          | 3.9 kB     00:00     
salt                                                                 | 2.9 kB     00:00     
=================================== N/S Matched: cgroup ====================================
libcgroup.i686 : Tools and libraries to control and monitor control groups
libcgroup.x86_64 : Tools and libraries to control and monitor control groups
libcgroup-devel.i686 : Development libraries to develop applications that utilize control
                     : groups
libcgroup-devel.x86_64 : Development libraries to develop applications that utilize control
                       : groups

  Name and summary matches only, use "search all" for everything.
[root@server1 ~]# yum install libcgroup.x86_64 -y  安装软件包
安装好libcgroup之后,会在根下产生/cgroup,此时该目录下还没有任何东西
/etc/init.d/cgconfig start 打开cgroup(注意不能在当前目录下) 

这里写图片描述

[root@server1 ~]# cd /cgroup/
[root@server1 cgroup]# ls
[root@server1 cgroup]# pwd
/cgroup
[root@server1 cgroup]# /etc/init.d/cgconfig start  开启cgconfig服务
Starting cgconfig service:                                 [  OK  ]
[root@server1 cgroup]# cd /cgroup/
[root@server1 cgroup]# ls
blkio  cpu  cpuacct  cpuset  devices  freezer  memory  net_cls
[root@server1 cgroup]# ll
total 0
drwxr-xr-x 2 root root 0 Aug 21 15:39 blkio
drwxr-xr-x 2 root root 0 Aug 21 15:39 cpu
drwxr-xr-x 2 root root 0 Aug 21 15:39 cpuacct
drwxr-xr-x 2 root root 0 Aug 21 15:39 cpuset
drwxr-xr-x 2 root root 0 Aug 21 15:39 devices
drwxr-xr-x 2 root root 0 Aug 21 15:39 freezer
drwxr-xr-x 2 root root 0 Aug 21 15:39 memory
drwxr-xr-x 2 root root 0 Aug 21 15:39 net_cls
[root@server1 cgroup]# pwd
/cgroup

这里写图片描述

[root@server1 cgroup]# cd memory/
[root@server1 memory]# ls
cgroup.event_control       memory.memsw.limit_in_bytes      memory.swappiness
cgroup.procs               memory.memsw.max_usage_in_bytes  memory.usage_in_bytes
memory.failcnt             memory.memsw.usage_in_bytes      memory.use_hierarchy
memory.force_empty         memory.move_charge_at_immigrate  notify_on_release
memory.limit_in_bytes      memory.oom_control               release_agent
memory.max_usage_in_bytes  memory.soft_limit_in_bytes       tasks
memory.memsw.failcnt       memory.stat
[root@server1 memory]# cat memory.limit_in_bytes
9223372036854775807
[root@server1 memory]# free -m  查看空闲内存大小
             total       used       free     shared    buffers     cached
Mem:           490        332        157          0         32        165
-/+ buffers/cache:        134        355
Swap:          991          0        991
[root@server1 memory]# df  查看挂载
Filesystem                   1K-blocks    Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root  19134332 1204464  16957888   7% /
tmpfs                           251124      36    251088   1% /dev/shm
/dev/vda1                       495844   33478    436766   8% /boot

这里写图片描述
tmpfs临时文件系统:

tmpfs,临时文件系统,是一种基于内存的文件系统,它和虚拟磁盘ramdisk比较类似像,但不完全相同,
和ramdisk一样,tmpfs可以使用RAM,但它也可以使用swap分区来存储,而且传统的ramdisk是个块设备,
要用mkfs来格式化它,才能真正地使用它;而tmpfs是一个文件系统,并不是块设备,只是安装它,就可以
使用了。tmpfs是最好的基于RAM的文件系统。
[root@server1 memory]# cat /etc/fstab  查看默认挂载可以看到临时文件系统

#
# /etc/fstab
# Created by anaconda on Fri Jul 27 11:46:21 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
UUID=2f7fafc6-5946-4115-b837-692b2d7b4c31 /boot                   ext4    defaults        1 2
/dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
[root@server1 me
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值