我目前正在部署带有mesos / marathon的kvm / qemu虚拟机。在马拉松中,我使用内置的mesos命令执行程序并运行脚本。
virsh start centos7.0; while true; do echo 'centos 7.0 guest is running'; sleep 5; done
请注意,while循环仅用于保持任务运行。我的问题是我无法使用mesos来监视虚拟机的资源使用情况。
当marathon在mesos-agent上部署此任务时,它正在创建一个使用内存和cpu cgroup的容器。
/ SYS / FS / cgroup中/ CPU / mesos / 31b48dc3-6f09-4b5a-8964-b82d711bb895
/ SYS / FS / cgroup中/存储器/ mesos / 31b48dc3-6f09-4b5a-8964-b82d711bb895
当虚拟机启动时,virsh start命令正在向libvirtd发送请求。然后,Libvirtd读取位于/ etc / libvirt / qemu /中的guest.xml文件,然后向qemu / kvm驱动程序发送请求以进行部署。
在我的guest.xml文件中,我使用自定义分区cgroup slice来监控我的虚拟机使用情况。
https://libvirt.org/cgroups.html
(对于每个cgroup)
/ SYS / FS / cgroup中/ ??? / vmHolder.slice /机器QEMU \ X2D1 \ x2dcentos7.0 \ x2dclone.scope
我尝试过的。 我尝试从这个切片中删除我的内存/ cpu cgroup cgdelete -r cpu,memory:vmHolder.slice
然后将我的qemu guest进程添加到mesos控制器 cgclassify -g cpu,memory:mesos / 31b48dc3-6f09-4b5a-8964-b82d711bb895 GUEST-PID
当我运行命令cat / proc / 5531 / cgroup
时11:perf_event:/vmHolder.slice/machine-qemu\x2d1\x2dcentos7.0\x2dclone.scope
10:pids:/
9:devices:/vmHolder.slice/machine-qemu\x2d1\x2dcentos7.0\x2dclone.scope
8:cpuset:/vmHolder.slice/machine-qemu\x2d1\x2dcentos7.0\x2dclone.scope/emulator
7:net_prio,net_cls:/vmHolder.slice/machine-qemu\x2d1\x2dcentos7.0\x2dclone.scope
6:freezer:/vmHolder.slice/machine-qemu\x2d1\x2dcentos7.0\x2dclone.scope
5:blkio:/vmHolder.slice/machine-qemu\x2d1\x2dcentos7.0\x2dclone.scope
4:hugetlb:/
3:cpuacct,cpu:/mesos/31b48dc3-6f09-4b5a-8964-b82d711bb895
2:memory:/mesos/31b48dc3-6f09-4b5a-8964-b82d711bb895
1:name=systemd:/vmHolder.slice/machine-qemu\x2d1\x2dcentos7.0\x2dclone.scope
它显示我正在使用这些控制器,但是当我运行systemd-cgtop时,它不会添加VM的内存使用量。我不知道下一步该做什么。有什么建议吗?