Red Hat Bugzilla – Bug 210141
XenD HTTP service serializes all requests
Last modified: 2007-11-30 17:07:35 EST
Description of problem:
Libvirt talks to XenD over its HTTP service. Unfortunately the HTTP service
implementation is single-threaded, so all incoming requests are serialized. This
may not sound so bad until you consider that the 'VM Create' operation can take
anywhere from 5- 60 seconds to complete. During this time no other requests to
XenD will even be started. This means that *all* other applications using
libvirt will be blocked / hang until the create operation completes.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. Make a long running request to XenD (eg, a VM Create operation)
2. Attempt to make another unrelated request (eg list domains) at the same time
The list domains request isn't processed until the create operation finishes
The requests are processed in parallel
I posted a prototype patch upstream to make XenD multi-threaded
We'd like this as a Beta2 blocker, but this isn't required.
This request was evaluated by Red Hat Product Management for inclusion in a Red
Hat Enterprise Linux release. Product Management has requested further review
of this request by Red Hat Engineering. This request is not yet committed for
inclusion in release.
It has been posted upstream twice now, but no feedback has been forthcoming yet.
Merged upstream in 12776:c287052a0a654a74153f176fbd8159cb1d75211b
This is built into xen-3.0.3-29.el5 in dist-5E-qu-candidate. To test try the
1. Create a guest VM with 1 GB of RAM
2. Crete a second guest VM 'B'
3. Open two console windows
4. In one run 'virsh save [guest A] /var/lib/xen/test.save
5. At the same time as this is running, also run 'virsh dumpxml [guest B]' many
Prior to thsi fix, step 4 would 'hang' until step 3 completed. With this fix,
you should be able to run step 4 without seeing any hang.
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on the solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.