[libvirt] [PATCH 1/3] qemu: handle new 'setup' migration state
Michael R. Hines
mrhines at linux.vnet.ibm.com
Fri Jul 26 18:51:35 UTC 2013
On 07/26/2013 02:32 PM, Eric Blake wrote:
> On 07/26/2013 11:47 AM, mrhines at linux.vnet.ibm.com wrote:
>> From: "Michael R. Hines" <mrhines at us.ibm.com>
>>
>> Previously, QEMU's 'setup' state was no a formal state in their
>> state machine, but it is now. This state is used by RDMA to optionally
>> perform memory pinning. This state is now exposed over the monitor
>> and also measured in the migration info status.
>>
>> This patch consumes both the new setup state as well as the timestamp
>> of the total time spent in that state as reported by QEMU.
>>
>> RDMA migrations perform an optional 'pin-all' operation du
>>
>> Signed-off-by: Michael R. Hines <mrhines at us.ibm.com>
>> ---
>> include/libvirt/libvirt.h.in | 2 ++
>> src/qemu/qemu_migration.c | 6 ++++++
>> src/qemu/qemu_monitor.c | 2 +-
>> src/qemu/qemu_monitor.h | 11 +++++++++++
>> src/qemu/qemu_monitor_json.c | 18 ++++++++++++++++++
>> 5 files changed, 38 insertions(+), 1 deletion(-)
>>
>> diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in
>> index c0eb25b..31fb37e 100644
>> --- a/include/libvirt/libvirt.h.in
>> +++ b/include/libvirt/libvirt.h.in
>> @@ -4048,6 +4048,8 @@ struct _virDomainJobInfo {
>> /* Time is measured in mill-seconds */
>> unsigned long long timeElapsed; /* Always set */
>> unsigned long long timeRemaining; /* Only for VIR_DOMAIN_JOB_BOUNDED */
>> + unsigned long long setupTime; /* length of the SETUP phase */
>> + double mbps; /* Migration throughput in Mbps */
> This series adds a new feature, and we're already in freeze for 1.1.1,
> so it would have to be post-freeze.
No problem - we're not in a hurry to get libvirt RDMA support
merged - just wanted to make sure we get these reviews through
so all the code plays nicely.
> NACK; this is a change to ABI. We cannot change the existing struct
> size without invalidating apps compiled against an earlier version of
> the library (ie. virDomainGetJobInfo is cast in stone). Rather, we
> should be adding new VIR_DOMAIN_JOB_* macros for use in the
> virTypedParameters of virDomainGetJobStats().
Acknowledged.
> It does point out a bug that can be fixed during freeze: we should fix
> our documentation so that virDomainGetJobInfo() refers to the better
> virDomainGetJobStats().
>
> Somewhat related: I mentioned in another thread that neither
> virDomainGetJob{Info,Stats} nor virDomainGetBlockJobInfo play nicely
> with the idea of being able to have multiple jobs running in parallel,
> which is necessary if we want to be able to support fleecing of
> point-in-time snapshots from multiple clients. Ultimately, that means I
> think we need to enhance the job mechanism so that new jobs return a
> handle, then we add new API that can query and abort jobs based on the
> handle instead of being limited to only the current job; I guess for
> back-compat, it would also help to have an API that sets the current job
> out of a set of jobs so that the old APIs are still usable. If we do an
> upgrade of the job API, we would make sure that the new query method
> sticks to virTypedParameters in the same was as virDomainGetJobStats().
>
More information about the libvir-list
mailing list