设为首页 收藏本站
查看: 1535|回复: 0

[经验分享] kvm cgroup的使用

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-12-22 09:55:33 | 显示全部楼层 |阅读模式
参考:
    http://www.ibm.com/developerworks/cn/linux/1506_cgroup/index.html
    http://baike.baidu.com/link?url= ... Ypc0opyeuUEw0dE5U9q
    《kvm虚拟化技术 实战与原理解析》

简介:
    kvm中我们可以用-m -smp等参数为客户机分配资源,但是这种分配是粗粒度的资源分配,假设这么一种场景:本地磁盘上有两台客户机提供mysql服务,但是其中一台对数据的安全比较高,需要及时把数据写入到磁盘里,另外一台对数据安全要求不高,慢一点也无所谓,两者的i/o请求相当。  此时,如果我们仍然像之前的方法简单地把设备分配给客户机,那么两台客户机的i/o速度相当,达不到我们的目的。这个时候cgroup派上用处了。



cgroup的概念:
    任务:就是系统中运行的进程,一个进程是一个或者多个控制组的成员
    控制群组(control group):一个控制群组就是按照某种标准划分的一组任务,每个在控制群组里面的任务受到这个控制群组的资源限制
    层级体系(hierarchy):简称层级,控制群组可以组织成 hierarchical 的形式,既一颗控制族群树。控制族群树上的子节点控制族群是父节点控制族群的孩子,继承父控制族群的特定的属性子系统(subsystem)。一个子系统就是一个资源控制器,比如 cpu 子系统就是控制 cpu 时间分配的一个控制器。子系统必须附加(attach)到一个层级上才能起作用,一个子系统附加到某个层级以后,这个层级上的所有控制族群都受到这个子系统的控制。
    下图来自于书本《kvm虚拟化技术 实战与原理解析》:
wKiom1hZ-E6jDEZsAALSqvDcOeg334.jpg
    简而言之,cgroup就类似于一个服务公司的运行,一个公司(系统资源)划分成不同的部门(层级),每个部门提供不同的服务(子系统),每个客户(任务)能享受不同等级的服务(cgroup),所以这样一来它们的关系就好理解了:
(下面内容摘抄自http://www.ibm.com/developerworks/cn/linux/1506_cgroup/index.html)

    (1)每次在系统中创建新层级时,该系统中的所有任务都是那个层级的默认 cgroup(我们称之为 root cgroup,此 cgroup 在创建层级时自动创建,后面在该层级中创建的 cgroup 都是此 cgroup 的后代)的初始成员;        //每个客户都能享受基本的服务等级
    (2)一个子系统最多只能附加到一个层级;        //一种服务只会在某个部门提供,比如技术方面的服务你只能找技术部
    (3)一个层级可以附加多个子系统;        //一个部门可以提供多个服务,比如技术部的程序员还提供日常被虐狗表演~~
    (4)一个任务可以是多个 cgroup 的成员,但是这些 cgroup 必须在不同的层级;        //你可以既要美女前台接待又要程序员写代码,但是你不能同时要两个美女前台接待你,否则程序员不会放过你~~
    (5)系统中的进程(任务)创建子进程(任务)时,该子任务自动成为其父进程所在 cgroup 的成员。然后可根据需要将该子任务移动到不同的 cgroup 中,但开始时它总是继承其父任务的 cgroup。        //客户的会员卡可以给他儿子用,当然,他儿子可以找更漂亮的前台服务~~

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

    可以在linux 中使用 lssubsys  -am 查看系统支持的子系统



cgroup的操作:
    1.查看内核支持:
        cat  /boot/config-2.6.32-431.el6.x86_64 |grep  -i  cgroup
    2.创建cgroup并附加任务
        mkdir -p /cgroup/blkio
        mount -t  cgroup  -o  blkio blkio  /cgroup/blkio  #-o  blkio 代表blkio这个子系统,第二个blkio代表层级名,这个层级挂载到/cgroup/blkio上
        (mount -t  cgroup  -o cpu,cpuset,memory  cpu_mem  /cgroup/cpu_mem) #类似这条就是把cpu,cpuset,memory这三个子系统附加到cpu_mem这个层级上,挂载目录为/cgroup/cpu_mem
        mkdir /cgroup/blkio/high_prio #创建高等级的控制群组
        mkdir /cgroup/blkio/low_prio #创建低等级的群组
        echo 1000>/cgroup/blkio/high_prio/blkio.weight     #设置控制群组的权重,取值为100-1000,越大优先级越高
        echo 100>/cgroup/blkio/low_prio/blkio.weight
        ps aux    #找到你想要控制的进程的id号
        echo "$pid">/cgroup/blkio/high_prio/tasks    #把进程加入到控制群组,也可以查看/cgroup/blkio/tasks,默认所有的进程都会添加到这个根cgroup

    也可以使用libcgroup提供的cgcreate等工具来管理cgroup ,这个rpm包提供了一个服务:/etc/init.d/cgconfig  它的配置文件为/etc/cgconfig.conf,可以修改这个配置文件来管理cgroup,但是本质和本文的操作一样。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-317787-1-1.html 上篇帖子: kvm 静态迁移、基于nfs的动态迁移 下篇帖子: kvm使用详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表