• 云计算_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
  • 相关阅读:
    linux下vim配置以及一些常用的快捷键
    linux下java环境配置
    编译原理实习(应用预测分析法LL(1)实现语法分析)
    hdu 1063(java写高精度)
    loj 1271
    loj 1379(最短路变形)
    hdu 4114(状压dp)
    loj 1002(spfa变形)
    python生产者消费者模型
    python创建一个线程和一个线程池
  • 原文地址:https://www.cnblogs.com/ytwang/p/16456006.html
Copyright © 2020-2023  润新知