How do I calculate %CPU in my own libvirt programs?
Übrigens scheint Qiita in der Lage zu sein, die Notation $ \ LaTeX $ zu verwenden.
libvirt verfügt nicht über eine Methode, um die CPU-Auslastung der Domäne direkt abzurufen. Gemäß dem obigen Artikel kann die Auslastung jedoch anhand der CPU-Auslastungszeit berechnet werden. Das Folgende ist die Geschichte von libvirt-python.
Die Dokumentation wird vorbereitet. http://libvirt.org/docs/libvirt-appdev-guide-python/en-US/html/index.html
Stellen Sie zunächst eine Verbindung zu libvirtd her.
import libvirt
con = libvirt.openReadOnly()
dom0 = con.listAllDomains()[0]
dom0
ist die Domain.
Mit dom0.info ()
können Sie ermitteln, wie viele Sekunden die CPU seit dem Start der Domain verwendet wurde ($ cpuTime $). Die Datenstruktur lautet virDomainInfo. Fünfter Wert.
cpuTime = dom0.info()[4]
Wenn Sie dies alle $ t $ Sekunden erhalten, wird die CPU-Auslastung der Domäne sein
\frac{cpuTime_{now} - cpuTime_{now-t}}{t \times nrCores \times 10^9}\times 100
$ nrCores $ gibt die Anzahl der physischen Kerne im System an und kann mit con.getInfo ()
(virNodeInfo) abgerufen werden. ..
Wenn Sie die CPU-Auslastungsrate für jeden Kern wissen möchten, können Sie mit dom0.vcpus () die CPU-Auslastungszeit für jeden Kern abrufen (virVcpuInfo). -libvirt-domain.html # virVcpuInfo)). In diesem Fall ist $ nrCores $ 1 oder 2, wenn Hyperthreading funktioniert.