IP Library Granted Patent US 9,389,899
Granted Patent B2
US 9,389,899 · App. 14/165,203 · Granted Jul 12, 2016

Fair unidirectional multi-queue virtual machine migration

Inventors: Michael S. Tsirkin (Ra'anana, IL); Karen Noel (Pembroke, NH)
Assignee: Red Hat Israel, Ltd.
G06F9/45558G06F2009/4557
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,389,899
App. No.
14/165,203
Granted
Jul 12, 2016
Kind
B2
Abstract

Methods, systems, and computer program products for providing fair unidirectional multi-queue virtual machine migration are disclosed. A computer-implemented method may include maintaining a current scan identifier for each of a plurality of streams used to migrate a virtual machine from a first hypervisor to a second hypervisor, determining when a current scan identifier of a first stream and a current scan identifier of a second stream are associated with different memory states of the virtual machine, and adjusting processing of memory updates when the current scan identifiers are associated with different memory states of the virtual machine. The adjusting may be performed, for example, by pausing processing on each stream having a current scan identifier subsequent to the earliest current scan identifier determined for the streams, and processing memory updates on each stream having a current scan identifier matching the earliest current scan identifier.

Claims (99)

1. A computer-implemented method, comprising:

maintaining, by a hypervisor executed by a processing device, a current scan identifier for each of a plurality of streams used to migrate a virtual machine;

determining, by the hypervisor, when a current scan identifier of a first stream in the plurality of streams and a current scan identifier of a second stream in the plurality of streams are associated with different memory states of the virtual machine; and

adjusting, by the hypervisor, processing of memory updates when the current scan identifier of the first stream and the current scan identifier of the second stream are associated with different memory states of the virtual machine.

2. The method of claim 1 , further comprising:

determining, by the hypervisor, an earliest current scan identifier among the plurality of streams.

3. The method of claim 2 , wherein the adjusting comprises:

pausing, by the hypervisor, processing on each stream having a current scan identifier subsequent to the earliest current scan identifier determined among the streams.

4. The method of claim 2 , further comprising:

processing, by the hypervisor, memory updates on each stream having a current scan identifier matching the earliest current scan identifier determined among the streams.

5. The method of claim 1 , wherein the determining comprises:

comparing, by the hypervisor, the current scan identifier of the first stream to the current scan identifier of the second stream.

6. The method of claim 1 , further comprising:

receiving, by the hypervisor, a first scan identifier on the first stream; and

updating, by the hypervisor, a memory area to track the first scan identifier as the current scan identifier of the first stream.

7. The method of claim 6 , further comprising:

receiving, by the hypervisor, a first memory update associated with the first scan identifier on the first stream.

8. The method of claim 1 , further comprising:

receiving, by the hypervisor, a second scan identifier on the second stream; and

updating, by the hypervisor, a memory area to track the second scan identifier as the current scan identifier of the second stream.

9. The method of claim 6 , wherein one or more of the scan identifiers are received once on a respective stream for a plurality of corresponding memory updates.

10. The method of claim 6 , wherein one or more of the scan identifiers are received with each corresponding memory update on a respective stream.

11. The method of claim 7 , wherein the hypervisor tracks the current scan identifiers to apply memory updates received on the streams in order when migrating the virtual machine.

12. The method of claim 1 , further comprising:

creating, by the hypervisor, the plurality of streams to migrate the virtual machine from a first hypervisor to a second hypervisor.

13. The method of claim 12 , further comprising:

receiving a request to create an additional stream to migrate the virtual machine;

creating the additional stream; and

providing notification that the additional stream is available.

14. The method of claim 12 , further comprising:

receiving a request to close a stream in the plurality of streams; and

providing notification that the stream requested to be closed is unavailable.

15. A non-transitory computer-readable medium having instructions recorded thereon, that when executed by a processing device, cause the processing device to perform operations, comprising:

maintaining, by a hypervisor executed by the processing device, a current scan identifier for each of a plurality of streams used to migrate a virtual machine;

determining, by the hypervisor, when a current scan identifier of a first stream in the plurality of streams and a current scan identifier of a second stream in the plurality of streams are associated with different memory states of the virtual machine; and

adjusting, by the hypervisor, processing of memory updates when the current scan identifier of the first stream and the current scan identifier of the second stream are associated with different memory states of the virtual machine.

16. The non-transitory computer-readable storage medium of claim 15 , the operations further comprising:

determining, by the hypervisor, an earliest current scan identifier among the plurality of streams.

17. The non-transitory computer-readable storage medium of claim 16 , wherein the operations further comprise:

pausing, by the hypervisor, processing on each stream having a current scan identifier subsequent to the earliest current scan identifier determined among the plurality of streams.

18. A system, comprising:

a memory;

a processing device; and

a hypervisor having access to the memory and executed by the processing device, wherein the hypervisor is to:

maintain a current scan identifier for each of a plurality of streams used to migrate a virtual machine;

determine when a current scan identifier of a first stream in the plurality of streams and a current scan identifier of a second stream in the plurality of streams are associated with different memory states of the virtual machine; and

adjust processing of memory updates when the current scan identifier of the first stream and the current scan identifier of the second stream are associated with different memory states of the virtual machine.

19. The system of claim 18 , wherein the hypervisor further is to:

determine an earliest current scan identifier among the plurality of streams.

20. The system of claim 19 , wherein the hypervisor further is to:

pause processing on each stream having a current scan identifier subsequent to the earliest current scan identifier determined among the plurality of streams.

21. The non-transitory computer-readable storage medium of claim 16 , the operations further comprising:

processing, by the hypervisor, memory updates on each stream having a current scan identifier matching the earliest current scan identifier determined among the streams.

22. The non-transitory computer-readable storage medium of claim 15 , the operations further comprising:

comparing, by the hypervisor, the current scan identifier of the first stream to the current scan identifier of the second stream.

23. The non-transitory computer-readable storage medium of claim 15 , the operations further comprising:

receiving, by the hypervisor, a first scan identifier on the first stream; and

updating, by the hypervisor, a memory area to track the first scan identifier as the current scan identifier of the first stream.

24. The non-transitory computer-readable storage medium of claim 23 , the operations further comprising:

receiving, by the hypervisor, a first memory update associated with the first scan identifier on the first stream.

25. The non-transitory computer-readable storage medium of claim 15 , the operations further comprising:

receiving, by the hypervisor, a second scan identifier on the second stream; and

updating, by the hypervisor, a memory area to track the second scan identifier as the current scan identifier of the second stream.

26. The non-transitory computer-readable storage medium of claim 23 , wherein one or more of the scan identifiers are received once on a respective stream for a plurality of corresponding memory updates.

27. The non-transitory computer-readable storage medium of claim 23 , wherein one or more of the scan identifiers are received with each corresponding memory update on a respective stream.

28. The non-transitory computer-readable storage medium of claim 24 , wherein the hypervisor tracks the current scan identifiers to apply memory updates received on the streams in order when migrating the virtual machine.

29. The non-transitory computer-readable storage medium of claim 15 , the operations further comprising:

creating, by the hypervisor, the plurality of streams to migrate the virtual machine from a first hypervisor to a second hypervisor.

30. The non-transitory computer-readable storage medium of claim 29 , the operations further comprising:

receiving a request to create an additional stream to migrate the virtual machine;

creating the additional stream; and

providing notification that the additional stream is available.

31. The non-transitory computer-readable storage medium of claim 29 , the operations further comprising:

receiving a request to close a stream in the plurality of streams; and

providing notification that the stream requested to be closed is unavailable.

32. The system of claim 19 , wherein the hypervisor further is to:

process memory updates on each stream having a current scan identifier matching the earliest current scan identifier determined among the streams.

33. The system of claim 18 , wherein the hypervisor further is to:

compare the current scan identifier of the first stream to the current scan identifier of the second stream.

34. The system of claim 18 , wherein the hypervisor further is to:

receive a first scan identifier on the first stream; and

update a memory area to track the first scan identifier as the current scan identifier of the first stream.

35. The system of claim 34 , wherein the hypervisor further is to:

receive a first memory update associated with the first scan identifier on the first stream.

36. The system of claim 18 , wherein the hypervisor further is to:

receive a second scan identifier on the second stream; and

update a memory area to track the second scan identifier as the current scan identifier of the second stream.

37. The system of claim 34 , wherein one or more of the scan identifiers are received once on a respective stream for a plurality of corresponding memory updates.

38. The system of claim 34 , wherein one or more of the scan identifiers are received with each corresponding memory update on a respective stream.

39. The system of claim 35 , wherein the hypervisor tracks the current scan identifiers to apply memory updates received on the streams in order when migrating the virtual machine.

40. The system of claim 18 , wherein the hypervisor further is to:

create the plurality of streams to migrate the virtual machine from a first hypervisor to a second hypervisor.

41. The system of claim 40 , wherein the hypervisor further is to:

receive a request to create an additional stream to migrate the virtual machine;

create the additional stream; and

provide notification that the additional stream is available.

42. The system of claim 40 , wherein the hypervisor further is to:

receive a request to close a stream in the plurality of streams; and

provide notification that the stream requested to be closed is unavailable.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2014
From: TSIRKIN, MICHAEL S.; NOEL, KAREN
To: RED HAT ISRAEL, LTD.
Reel/Frame 032055/0098 →
Continuity (1)
Related Publication 20150212844A1 · Jul 30, 2015