不使用SSH(KVM)获取VM的CPU使用率

时间:2014-06-18 11:52:35

标签: linux memory-management cpu-usage kvm libvirt

有没有办法在没有通过SSH连接到guest虚拟机的情况下在KVM中获取vm的CPU使用率和内存使用量?我的意思是,Virtual Machine Manager如何获得CPU使用率(图表)?我也需要cpu使用和内存的百分比。有谁知道如何通过libvirt与kvm沟通?我真的需要尽可能地在没有SSH的情况下获得cpu使用和内存。

方案: 我正在尝试构建一个包含负载均衡器(主机)+3服务器(VM)的设置,然后它会通知我3台服务器的CPU使用情况,这样如果我需要配置另一台服务器,我就会知道什么时候。

谢谢你的帮助。真的很感激。

1 个答案:

答案 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