Description of problem:
When migrating to a file using "migrate exec:" (as with libvirt's virDomainSave), saving 2GB of state can take upwards of 10 minutes on a quite high-performance server.
This happens only when the file descriptor on which the migration is occurring is marked non-blocking; commenting out the socket_set_nonblock() call in migration-exec.c:exec_start_outgoing_migration works around the issue, resulting in a save-to-disk time on the scale of 2 minutes for this same guest.
The symptoms of the issue were described by detail by Pierre Riteau in a mailing list post titled "[BUG] Regression of exec migration" on 8/27/2009.
Anthony Ligouri noted in the following thread that setting this socket to be non-blocking is essential for live migration support. However, this performance degredation happens even when a guest is stopped during the migration process.
Version-Release number of selected component (if applicable):
This request was evaluated by Red Hat Product Management for inclusion in a Red
Hat Enterprise Linux major release. Product Management has requested further
review of this request by Red Hat Engineering, for potential inclusion in a Red
Hat Enterprise Linux Major release. This request is not yet committed for
This issue has been proposed when we are only considering blocker
issues in the current Red Hat Enterprise Linux release. It has
been denied for the current Red Hat Enterprise Linux release.
** If you would still like this issue considered for the current
release, ask your support representative to file as a blocker on
your behalf. Otherwise ask that it be considered for the next
Red Hat Enterprise Linux release. **
Please consider this for a future release (ie. RHEL6.1).
*** This bug has been marked as a duplicate of bug 609261 ***