Получить использование процессора виртуальной машины без использования SSH (KVM)
Есть ли способ получить использование процессора и памяти vm в KVM без подключения к гостю через SSH? Я имею в виду, как диспетчер виртуальных машин получает загрузку процессора (график)? Мне нужен процент использования процессора и памяти, а также. Кто-нибудь знает как общаться с kvm через libvirt? Мне просто нужно как можно больше использовать процессор и память без SSH.
Сценарий: я пытаюсь создать установку, которая содержит балансировщик нагрузки (хост) + 3 сервера (ВМ), а затем уведомит меня об использовании процессора этими 3 серверами, чтобы, если мне нужно было подготовить другой сервер, я знал бы, когда.
Спасибо за помощь. Действительно ценю это.
1 ответ
Вы можете использовать функцию virDomainGetInfo из libvirt, чтобы получить информацию о памяти и времени процессора, потребляемом доменом.
Вот очень простой пример:
#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
вы обнаружите, что он использует именно эти функции для генерации различных графиков, на которые вы ссылаетесь в своем вопросе. Вы можете определить "использование" процессора, посмотрев, как сильно меняется значение "время процессора" с течением времени.
Если вы просто ищете что-то вроде процессора хоста, используемого этим доменом, вы можете просто использовать ps
, То есть, если соответствующий qemu
процесс 19650, вы можете запустить:
$ ps -p 19650 -o pid,%cpu
PID %CPU
19650 10.2