US 11,915,028 B2
Virtual machine execution tracing
Jordi Mola, Bellevue, WA (US)
Assigned to Microsoft Technology Licensing, LLC, Redmond, WA (US)
Filed by Microsoft Technology Licensing, LLC, Redmond, WA (US)
Filed on Jan. 22, 2021, as Appl. No. 17/155,892.
Application 17/155,892 is a division of application No. 16/374,172, filed on Apr. 3, 2019, granted, now 10,963,288.
Application 16/374,172 is a division of application No. 15/488,282, filed on Apr. 14, 2017, granted, now 10,318,332, issued on Jun. 11, 2019.
Claims priority of provisional application 62/480,408, filed on Apr. 1, 2017.
Prior Publication US 2021/0141659 A1, May 13, 2021
Int. Cl. G06F 9/455 (2018.01); G06F 11/36 (2006.01)
CPC G06F 9/45558 (2013.01) [G06F 11/3636 (2013.01); G06F 2009/45591 (2013.01)] 18 Claims
OG exemplary drawing
 
1. A computing device comprising:
processing hardware; and
storage hardware that stores:
a virtualization layer comprising a hypervisor;
a first virtual machine comprising a first guest operating system, the first guest operating system comprising a first guest kernel, the first virtual machine further comprising a first set of virtual processors managed by the virtualization layer, the first guest kernel configured to issue guest processor instructions to the first set of virtual processors; and
a second virtual machine comprising a second guest operating system, the second guest operating system comprising a second guest kernel, the second virtual machine further comprising a second set of virtual processors managed by the virtualization layer, the second guest kernel configured to issue guest processor instructions to the second set of virtual processors,
the virtualization layer configured to, when the computing device is operating, concurrently execute the first set of virtual processors and the second set of virtual processors on the virtualization layer, the virtualization layer further configured to, when the computing device is operating:
capture, into a first trace file, first indicia of whichever first guest processor instructions are issued by the first guest kernel to the first set of virtual processors, the first trace file comprising a first set of instruction indicia and a first set of ordering markers, the first set of instruction indicia comprising chunks, wherein the chunks within the first set of instruction indicia preserve causality with respect to each other, and
concurrent with capturing the first trace file, capture, into a second trace file, second indicia of whichever second guest processor instructions are issued by the second guest kernel to the second set of virtual processors, the second trace file comprising a second set of instruction indicia and a second set of ordering markers, the second set of instruction indicia comprising chunks, wherein the chunks within the second set of instruction indicia preserve causality with respect to each other,
wherein the first set of ordering markers and the second set of ordering markers enable a determination of causality between a first processor instruction in the first set of instruction indicia and a second processor instruction in the second set of instruction indicia.