我目前正在部署带有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/machine-qemu\x2d1\x2dcentos7.0\x2dclone.scope

我试过了什么我尝试通过执行cgdelete -r cpu从内存中删除我的内存/ cpu cgroup,内存:vmHolder.slice

然后将我的qemu访客进程添加到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的内存使用量 . 我不知道下一步该做什么 . 有什么建议?