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

[经验分享] RH442

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-10-10 14:07:23 | 显示全部楼层 |阅读模式
  测试使用的系统版本
  [iyunv@desktop2 ~]# cat /proc/version
Linux version 2.6.32-220.el6.x86_64 (mockbuild@x86-004.build.bos.redhat.com) (gcc version 4.4.5 20110214 (Red Hat 4.4.5-6) (GCC) ) #1 SMP Wed Nov 9 08:03:13 EST 2011
You have new mail in /var/spool/mail/root
[iyunv@desktop2 ~]#



  安装libcgroup和libvirt两个包

  [iyunv@desktop2 ~]# yum list libcgroup
Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
Updating certificate-based repositories.
Installed Packages
libcgroup.x86_64 0.37-3.el6 @anaconda-RedHatEnterpriseLinux-201111171049.x86_64/6.2
Available Packages
libcgroup.i686   0.37-3.el6 base                                                
[iyunv@desktop2 ~]# yum list libvirt
Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
Updating certificate-based repositories.
Installed Packages
libvirt.x86_64 0.9.4-23.el6     @anaconda-RedHatEnterpriseLinux-201111171049.x86_64/6.2
Available Packages
libvirt.x86_64 0.9.4-23.el6_2.1 Updates                                         
[iyunv@desktop2 ~]#

  启动cgconfig和libvirtd服务
[iyunv@desktop2 ~]# service cgconfig restart
Stopping cgconfig service:                                 [  OK  ]
Starting cgconfig service:                                 [  OK  ]
[iyunv@desktop2 ~]# service libvirtd restart
Stopping libvirtd daemon:                                  [  OK  ]
Starting libvirtd daemon:                                  [  OK  ]
[iyunv@desktop2 ~]#

  

  至此已经可以在cgroup目录下看到libvirt目录了,但是还看不到kvm虚拟机的目录(即使虚拟机已经启动)

  [iyunv@desktop2 ~]# ls /cgroup/cpuset/libvirt/qemu/
cgroup.procs            cpuset.memory_spread_page
cpuset.cpu_exclusive    cpuset.memory_spread_slab
cpuset.cpus             cpuset.mems
cpuset.mem_exclusive    cpuset.sched_load_balance
cpuset.mem_hardwall     cpuset.sched_relax_domain_level
cpuset.memory_migrate   notify_on_release
cpuset.memory_pressure  tasks
You have new mail in /var/spool/mail/root
[iyunv@desktop2 ~]#

  

  启动虚拟机(必须在重启cgconfig和libvirtd服务后,再重启虚拟机才会在cgroup目录下生成虚拟机目录)

  [iyunv@desktop2 ~]# virsh list
Id Name                 State
----------------------------------

[iyunv@desktop2 ~]# virsh start vserver
Domain vserver started

[iyunv@desktop2 ~]# virsh list
Id Name                 State
----------------------------------
  1 vserver              running

[iyunv@desktop2 ~]#

  

  现在可以看到虚拟机vserver目录了

  [iyunv@desktop2 ~]# ls /cgroup/cpuset/libvirt/qemu/
cgroup.procs               cpuset.memory_spread_slab
cpuset.cpu_exclusive       cpuset.mems
cpuset.cpus                cpuset.sched_load_balance
cpuset.mem_exclusive       cpuset.sched_relax_domain_level
cpuset.mem_hardwall        notify_on_release
cpuset.memory_migrate      tasks
cpuset.memory_pressure     vserver
cpuset.memory_spread_page
[iyunv@desktop2 ~]# ls /cgroup/cpuset/libvirt/qemu/vserver/
cgroup.procs            cpuset.memory_spread_page
cpuset.cpu_exclusive    cpuset.memory_spread_slab
cpuset.cpus             cpuset.mems
cpuset.mem_exclusive    cpuset.sched_load_balance
cpuset.mem_hardwall     cpuset.sched_relax_domain_level
cpuset.memory_migrate   notify_on_release
cpuset.memory_pressure  tasks
[iyunv@desktop2 ~]#

现在看到虚拟机使用host上的cpu0和cpu1
[iyunv@desktop2 ~]# watch -n .1 "virsh vcpuinfo vserver" #为方便观察,建议新起一个终端后执行此命令
You have new mail in /var/spool/mail/root
[iyunv@desktop2 ~]# virsh vcpuinfo vserver
VCPU:           0
CPU:            1
State:          running
CPU time:       23.7s
CPU Affinity:   -y

VCPU:           1
CPU:            0
State:          running
CPU time:       13.5s
CPU Affinity:   yy

[iyunv@desktop2 ~]#

  

  限制虚拟机只能使用host的cpu0

  [iyunv@desktop2 ~]# cgset -r cpuset.cpus=0 libvirt/qemu/vserver
[iyunv@desktop2 ~]# virsh vcpuinfo vserver
VCPU:           0
CPU:            0
State:          running
CPU time:       24.1s
CPU Affinity:   y-

VCPU:           1
CPU:            0
State:          running
CPU time:       13.9s
CPU Affinity:   y-

[iyunv@desktop2 ~]#

  

  限制虚拟机只能使用512M内存

  [iyunv@desktop2 ~]# cgset -r memory.limit_in_bytes=512M libvirt/qemu/vserver
[iyunv@desktop2 ~]# cat /cgroup/memory/libvirt/qemu/vserver/memory.limit_in_bytes
536870912
[iyunv@desktop2 ~]#

  

  限制内存的配置文件写法

  [iyunv@desktop2 etc]# vim /etc/cgconfig.conf
  .....
group libvirt/qemu/vserver {
memory{
memory.limit_in_bytes=512M;
}
}

  

  但是限制只使用某个物理cpu时,采用写配置文件的方法一直出错
  这样写可以(语法是正确的)

  group vserver {
cpuset{
cpuset.cpus=0;
cpuset.mems=0;
}
}

  下面这样就不行(以下配置会让cgconfig服务无法启动,删除后cgconfig服务可以正常启动):
group libvirt/qemu/vserver {
cpuset{
cpuset.cpus=0;
cpuset.mems=0;
}
}

  错误信息如下:
[iyunv@desktop2 init.d]# service cgconfig  restart
Stopping cgconfig service:                                 [  OK  ]
Starting cgconfig service: Loading configuration file /etc/cgconfig.conf failed
Value setting does not succeed
Failed to parse /etc/cgconfig.conf                         [FAILED]
[iyunv@desktop2 init.d]#

再翻了翻书,发现对于有些controllers来说(如cpuset),光限制nested cgroup还不够,还应限制其所有父亲controllers(不包括根controller),要想通过配置文件cgconfig.conf限制虚拟机只使用某个cpu,需按照如下写法:

  * PAGE247: With Some controllers just placing limits on a nested cgroup is not enough. The cpuset controller for instance requires you to at least set cpuset.cpus and cpuset.mems on all parents leading up to (but not including)root.

  ... ...
group libvirt {
cpuset{
cpuset.cpus=0;
cpuset.mems=0;
}
}

group libvirt/qemu {
cpuset{
cpuset.cpus=0;
cpuset.mems=0;
}
}

group libvirt/qemu/vserver {
cpuset{
cpuset.cpus=0;
cpuset.mems=0;
}
}

  

  查看结果:
[iyunv@desktop2 init.d]# service cgconfig  restart
Stopping cgconfig service:                                 [  OK  ]
Starting cgconfig service:                                 [  OK  ]
[iyunv@desktop2 init.d]# cat /cgroup/cpuset/libvirt/qemu/vserver/cpuset.cpus
0
[iyunv@desktop2 init.d]#



  当我们对虚拟机的内存进行限制后,如果虚拟机使用的内存大于限制值,kvm进程将会直接被内核杀掉

  [iyunv@desktop2 ~]# tail /var/log/messages
Jan 17 00:25:24 desktop2 kernel: Total swap = 524280kB
Jan 17 00:25:24 desktop2 kernel: 1048560 pages RAM
Jan 17 00:25:24 desktop2 kernel: 69242 pages reserved
Jan 17 00:25:24 desktop2 kernel: 82826 pages shared
Jan 17 00:25:24 desktop2 kernel: 270283 pages non-shared
Jan 17 00:25:24 desktop2 kernel: [ pid ]   uid  tgid total_vm      rss cpu oom_adj oom_score_adj name
Jan 17 00:25:24 desktop2 kernel: [27532]   107 27532   347618   100566   0       0             0 qemu-kvm
Jan 17 00:25:24 desktop2 kernel: Memory cgroup out of memory: Kill process 27532 (qemu-kvm) score 1000 or sacrifice child
Jan 17 00:25:24 desktop2 kernel: Killed process 27532, UID 107, (qemu-kvm) total-vm:1390472kB, anon-rss:398708kB, file-rss:3556kB
Jan 17 00:25:24 desktop2 kernel: Kill process 27552 (vhost-27532) sharing same memory

[iyunv@desktop2 ~]# virsh list
Id Name                 State
----------------------------------

[iyunv@desktop2 ~]#

         版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 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-125161-1-1.html 上篇帖子: ubuntu14.04 安装HAXM(KVM)提升android虚拟机Android x8运行速度 下篇帖子: iSCSI 多路径实现 KVM 高可用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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