日期 内核版本 CPU架构 作者
2019.04.06 Linux-4.4 PowerPC LoneHugo

系列文章:https://blog.csdn.net/Vince_/article/details/89070001

初始化过程

  1. 在start_kernel中cgroup_init之前调用cpuset_init进行初始化;
  2. 初始化struct cpuset top_cpuset,主要是各个mask参数分配和初始化;
  3. 初始化fmeter信息;
  4. 注册文件系统cpuset(struct file_system_type cpuset_fs_type);
  5. 初始化cpus_attach信息;

cgroup_mount

cpuset文件系统注册之后可以进行mount操作,cpuset_mount处理对应的mount

调用,实际上简单地调用了cgroup的mount操作cgroup_mount:

/** This is ugly, but preserves the userspace API for existing cpuset* users. If someone tries to mount the "cpuset" filesystem, we* silently switch it to mount "cgroup" instead*/
static struct dentry *cpuset_mount(struct file_system_type *fs_type,int flags, const char *unused_dev_name, void *data)
{struct file_system_type *cgroup_fs = get_fs_type("cgroup");struct dentry *ret = ERR_PTR(-ENODEV);if (cgroup_fs) {char mountopts[] ="cpuset,noprefix,""release_agent=/sbin/cpuset_release_agent";ret = cgroup_fs->mount(cgroup_fs, flags,unused_dev_name, mountopts);put_filesystem(cgroup_fs);}return ret;
}

cpuset_init

/*** cpuset_init - initialize cpusets at system boot** Description: Initialize top_cpuset and the cpuset internal file system,**/int __init cpuset_init(void)
{int err = 0;if (!alloc_cpumask_var(&top_cpuset.cpus_allowed, GFP_KERNEL))BUG();if (!alloc_cpumask_var(&top_cpuset.effective_cpus, GFP_KERNEL))BUG();
#ifdef CONFIG_DYNAMIC_ISOLATIONif (!alloc_cpumask_var(&top_cpuset.cpus_original, GFP_KERNEL))BUG();if (!alloc_cpumask_var(&top_cpuset.cpus_isolated, GFP_KERNEL))BUG();
#endifcpumask_setall(top_cpuset.cpus_allowed);
#ifdef CONFIG_DYNAMIC_ISOLATIONcpumask_setall(top_cpuset.cpus_original);cpumask_clear(top_cpuset.cpus_isolated);
#endifnodes_setall(top_cpuset.mems_allowed);cpumask_setall(top_cpuset.effective_cpus);nodes_setall(top_cpuset.effective_mems);fmeter_init(&top_cpuset.fmeter);set_bit(CS_SCHED_LOAD_BALANCE, &top_cpuset.flags);top_cpuset.relax_domain_level = -1;err = register_filesystem(&cpuset_fs_type);if (err < 0)return err;if (!alloc_cpumask_var(&cpus_attach, GFP_KERNEL))BUG();return 0;
}

深入解读Docker底层技术Cgroup系列(5)——cgroup子系统cpuset相关推荐

  1. Docker底层技术

    架构师之巅 1 容器 & Docker & 虚拟机 Container(容器)是一种轻量级的虚拟化技术,它不需要模拟硬件创建虚拟机.在Linux系统里面,使用到Linux kernel ...

  2. 你应当了解的Docker底层技术

    本文已获得原作者__七把刀__授权. Docker 容器技术已经发展了好些年,在很多项目都有应用,线上运行也很稳定.整理了部分 Docker 的学习笔记以及新版本特性,对Docker感兴趣的同学可以看 ...

  3. 长文解析:作为容器底层技术的半壁江山, cgroup如何突破并发创建瓶颈?

    简介: io_uring 作为一种新型高性能异步编程框架,代表着 Linux 内核未来的方向,当前仍处于快速发展中.阿里云联合 InfoQ 发起<io_uring 介绍及应用实践>的技术公 ...

  4. Docker 底层技术推导

    文章目录 1. 写在最前面 2. 什么推动了docker 出现 2.1 出现原因 2.2 优势总结 3. 大胆猜测一下实现 3.1 对比 Virtual Machine 3.2 实现 docker 需 ...

  5. 3-docker 架构和底层技术简介

    3-docker 架构和底层技术简介 Docker Platform Docker 是一个平台. 提供了一个开发.打包.运行app的平台 把app和底层 infrastructure 隔离开来 根据上 ...

  6. 实现容器的底层技术 - 每天5分钟玩转 Docker 容器技术(30)

    2019独角兽企业重金招聘Python工程师标准>>> 为了更好地理解容器的特性,本节我们将讨论容器的底层实现技术. cgroup 和 namespace 是最重要的两种技术.cgr ...

  7. mysql引擎层存储层_MySQL存储底层技术:InnoDB底层原理解读

    原标题:MySQL存储底层技术:InnoDB底层原理解读 存储引擎 很多文章都是直接开始介绍有哪些存储引擎,并没有去介绍存储引擎本身.那么究竟什么是存储引擎?不知道大家有没有想过,MySQL是如何存储 ...

  8. 精华推荐 | 【JVM深层系列】「GC底层调优系列」一文带你彻底加强夯实底层原理之GC垃圾回收技术的分析指南(GC原理透析)

    前提介绍 很多小伙伴,都跟我反馈,说自己总是对JVM这一块的学习和认识不够扎实也不够成熟,因为JVM的一些特性以及运作机制总是混淆以及不确定,导致面试和工作实战中出现了很多的纰漏和短板,解决广大小伙伴 ...

  9. 从概念到底层技术,一篇文解读区块链如何在企业中应用(下)

    本文分为上下两部分 猛戳回顾昨天精彩内容! 小锦推荐 近日,井通科技CEO武源文做客锦囊微课堂,围绕<区块链和大数据>一书,从四个方面综合阐述了区块链在智能经济时代如何与大数据无缝连接.课 ...

  10. 【容器底层技术】cgroup v2使用与测试

    cgroup v2使用与测试 1. 配置cgroup v2的环境 判断内核使用的cgroup版本 $ mount | grep cgroup cgroup2 on /sys/fs/cgroup typ ...

最新文章

  1. Python 问题 unindent does not match any outer indentation level 在 pycharm 平台的解决方法
  2. linux mysql端口启动失败怎么办,Linux下apache mysql等服务修改默认端口后无法正常启动解决办法...
  3. tensorflow之lenet训练手写字及应用
  4. thinkphp5 mysql加1_ThinkPHP5.1的数据库链接和增删改查
  5. 后台管理系统--毕业设计02
  6. 详细了解一下股票量化交易接口股
  7. 在计算机运行时 把程序和数据存放在内存中,单选(2.5分) 在计算机运行时,把程序和数据一样存放在内存中,这是1946年由__________领导的小组正式提出并论证的。‍...
  8. Vue-----table 控件自动勾选全选框2 与tab控件组合使用
  9. GrabCut python实现
  10. 游戏纽约夜生活java汉化_纽约玩乐--夜生活开启诱惑模式
  11. 3G带动企业移动管理信息化应用 直播视频
  12. 昇腾Ascend处理器相关介绍
  13. recvfrom的addrlen参数
  14. 科学论文类型分类(letter,nbsp;p…
  15. 腾讯T3大牛亲自讲解!面试字节跳动Android研发岗,值得收藏!
  16. hadoop Permission denied (publickey,password,keyboard-interactive).
  17. 教你绘制一张精美的思维导图
  18. 微信小程序篇】四. 案例:根据单号查询快递编号
  19. 【BZOJ3267】KC采花
  20. 基于蜣螂算法改进的随机森林回归算法 - 附代码

热门文章

  1. spring容器启动的加载过程(三)
  2. 调试时遇到 调试源程序时Loaderlock 的解决办法
  3. Android SharedPreferences
  4. 如何把握好 transition 和 animation 的时序,创作描边按钮特效...
  5. apache 配置虚拟域名默认站点问题
  6. think in uml 2.1
  7. CentOS6.5 webserver---网络配置
  8. MagicMongoDBTool 最新代码 以及 开发进度报告
  9. redis 8种淘汰策略
  10. git --amend 使用和撤销