有没有办法在没有通过SSH连接到guest虚拟机的情况下在KVM中获取vm的CPU使用率和内存使用量?我的意思是,Virtual Machine Manager如何获得CPU使用率(图表)?我也需要cpu使用和内存的百分比。有谁知道如何通过libvirt与kvm沟通?我真的需要尽可能地在没有SSH的情况下获得cpu使用和内存。
方案: 我正在尝试构建一个包含负载均衡器(主机)+3服务器(VM)的设置,然后它会通知我3台服务器的CPU使用情况,这样如果我需要配置另一台服务器,我就会知道什么时候。
谢谢你的帮助。真的很感激。
答案 0 :(得分:2)
您可以使用virDomainGetInfo中的libvirt函数来获取有关域消耗的内存和CPU时间的信息。
这是一个非常简单的例子:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <libvirt/libvirt.h>
int main(int argc, char **argv) {
virConnectPtr c;
virDomainPtr d;
virDomainInfo di;
int res;
int domid;
domid = atoi(argv[1]);
c = virConnectOpen(NULL);
d = virDomainLookupByID(c, domid);
res = virDomainGetInfo(d, &di);
printf("res = %d\n", res);
printf("memory used = %ld\n", di.memory);
printf("cpu time used = %ld\n", di.cpuTime);
}
<强>更新强>
我确信,如果您检查了来源,例如virt-manager
,您会发现它正好使用这些函数来生成您在问题中引用的各种图表。你可以确定cpu&#34;用法&#34;通过查看&#34; cpu时间&#34;价值随时间而变化。
如果您只是在查找域名所使用的主机cpu的百分比,则可以使用ps
。也就是说,如果相应的qemu
进程是19650,则可以运行:
$ ps -p 19650 -o pid,%cpu
PID %CPU
19650 10.2