[PATCH 00/11] Avoid numerous calls of virQEMUCapsCacheLookup

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



For a domain definition there are numerous calls of
virQEMUCapsCacheLookup (the same applies to the domain start). This
slows down the process since virQEMUCapsCacheLookup validates that the
QEMU capabilitites are still valid (among other things, a fork is done
for this if the user for the QEMU processes is 'qemu'). Therefore
let's reduce the number of virQEMUCapsCacheLookup calls whenever
possible and reasonable.

In addition to the speed up, there is the risk that
virQEMUCapsCacheLookup returns different QEMU capabilities during a
task if, for example, the QEMU binary has changed during the task.

The correct way would be:

 - get the QEMU capabilities only once per task via virQEMUCapsCacheLookup
 - do the task with these QEMU capabilities

or

 - abort the task after a cache invalidation

Note: With this patch series the behavior is still not (completely)
fixed, but the performance has been significantly improved. In a quick
test this gave a speed up of factor 4 for a simple define/undefine
loop.

In general, the more devices a domain has, the more drastic the
overhead becomes (because a cache validation is performed for each
device).

Marc Hartmayer (11):
  qemu: Use VIR_STEAL_PTR macro
  qemu: Introduce qemuDomainUpdateQEMUCaps()
  qemu: Pass QEMUCaps to virDomainDefPostParse
  conf: Use getParseOpaque() in virDomainObjSetDefTransient
  conf: Add function description for virDomainDefPostParse
  conf: Get rid of virDomainDeviceDefPostParseOne
  conf: Extend virDomainDefValidate(Callback) for parseOpaque
  conf: Use domainPostParseData(Alloc|Free) in virDomainDefValidate
  qemu: Use @parseOpaque in qemuDomainDefValidate
  conf: Extend virDomainDeviceDefValidate(Callback) for parseOpaque
  qemu: Use @parseOpaque in qemuDomainDeviceDefValidate

 src/conf/domain_conf.c  | 98 ++++++++++++++++++++++++++---------------
 src/conf/domain_conf.h  |  9 ++--
 src/qemu/qemu_domain.c  | 82 +++++++++++++++++++---------------
 src/qemu/qemu_domain.h  |  4 ++
 src/qemu/qemu_process.c | 18 +++-----
 src/vz/vz_driver.c      |  6 ++-
 6 files changed, 128 insertions(+), 89 deletions(-)

-- 
2.17.0

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux