• cgroup介绍之为什么需要了解cgroup


    cgroup是control group的简称,称为控制组,主要是为系统用户提供不同类型的资源分配和限制功能,是实现docker的基础。

    cgroup主要的功能可以归纳如下:

    1、资源限制:资源限制主要体现在进程运行过程中所需要的资源,例如cpu使用配额、内存大小、磁盘访问等

    2、设置程序的优先级: 程序的执行优先级可以通过对cpu的使用以及I/O带宽的限制

    3、系统资源使用统计:统计cpu运行时间,统计内存使用,统计程序wakeup次数等。

    4、进程控制:对cpu进行带宽限制,可以控制进程的运行和挂起。

    cgroup支持的子系统

    cgroup子系统目前有下列几种:
    1. devices 进程范围设备权限
    2. cpuset 分配进程可使用的 CPU数和内存节点
    3. cpu 控制CPU占有率
    4. cpuacct 统计CPU使用情况,例如运行时间,throttled时间
    5. memory 限制内存的使用上限
    6. freezer 暂停 Cgroup 中的进程
    7. net_cls 配合 tc(traffic controller)限制网络带宽
    8. net_prio 设置进程的网络流量优先级
    9. huge_tlb 限制 HugeTLB 的使用
    10. perf_event 允许 Perf 工具基于 Cgroup 分组做性能检测
    对于本人来说,本人最关注是红色标记的三点,因为此处本人因为项目开发,涉及到了cgroup这三种子系统,并对其进行了较为深入的分析。

    在学习cgroup的时候,本人认为可以分为如下几个阶段:

    1、学会使用它,知道怎么挂载、卸载,怎么创建子系统、怎么设置参数。

    2、知道每个子系统参数设置的意义,并能熟练修改并且了解修改后发生的变化

    3、分析cgroup框架,分析出cgroup之间错综复杂的调用流程,关键结构体之间是怎么联系起来的

    4、结合源码分析各子系统各参数的设置的调用流程,并能说明其是怎么实现资源限制的。

    5、熟悉cgroup v1和cgroup v2的区别,对比起优劣,并能对cgroup v2中好的方面进行借鉴和改造。

    6、发现cgroup在使用中带来的问题,分析原因并优化之。

  • 相关阅读:
    SecureRandom
    一个不错的架构图:基于SpringCloud的微服务项目
    Android 增量更新完全解析 是增量不是热修复
    Android热修复方案比较
    Android Activity作为dialog对话框的使用详细介绍
    Android 微信分享不出去?四步搞定!
    Android:用签名打包后微信分享失效
    Android 根据QQ号跳转到QQ聊天界面
    Android fragment-findFragmentByTag 始终返回 null
    Android RecyclerView遇到notifyDataSetChanged无效时的解决方案
  • 原文地址:https://www.cnblogs.com/haoxing990/p/12154414.html
Copyright © 2020-2023  润新知