US 11,055,203 B2
Virtualizing precise event based sampling
Matthew C. Merten, Hillsboro, OR (US); Beeman C. Strong, Portland, OR (US); Michael W. Chynoweth, Rio Rancho, NM (US); Grant G. Zhou, Chandler, AZ (US); Andreas Kleen, Portland, OR (US); Kimberly C. Weier, Austin, TX (US); Angela D. Schmid, Pleasanton, CA (US); Stanislav Bratanov, Nizhniy Novgorod (RU); Seth Abraham, Tempe, AZ (US); Jason W. Brandt, Austin, TX (US); and Ahmad Yasin, Kafr Manda (IL)
Assigned to Intel Corporation, Santa Clara, CA (US)
Filed by Intel Corporation, Santa Clara, CA (US)
Filed on Dec. 2, 2019, as Appl. No. 16/699,871.
Application 15/972,390 is a division of application No. 15/194,881, filed on Jun. 28, 2016, granted, now 9,965,375, issued on May 8, 2018.
Application 16/699,871 is a continuation of application No. 15/972,390, filed on May 7, 2018, granted, now 10,496,522.
Prior Publication US 2020/0242003 A1, Jul. 30, 2020
This patent is subject to a terminal disclaimer.
Int. Cl. G06F 11/36 (2006.01); G06F 9/455 (2018.01); H04L 12/24 (2006.01); H04L 12/26 (2006.01)
CPC G06F 11/3636 (2013.01) [G06F 9/45558 (2013.01); G06F 2009/45591 (2013.01); H04L 41/0613 (2013.01); H04L 43/04 (2013.01)] 20 Claims
OG exemplary drawing
1. A processor comprising:
a memory buffer;
a circuitry to execute an instruction within a virtual machine, wherein the circuitry executes a virtual machine monitor (VMM) to manage the virtual machine and comprises:
a processor tracer to capture trace data produced by execution of an instruction and to format the trace data as a plurality of trace data packets; and
an event-based sampler to generate field data for elements of a sampling record of the memory buffer in response to occurrence of an event of a certain type as a result of execution of the instruction;
wherein the processor tracer is further to, upon receipt of the field data from the event-based sampler:
format the field data into a group of record packets corresponding to the elements;
insert the group of record packets between ones of the plurality of trace data packets of the trace data, to generate a combined packet stream;
generate a time stamp counter (TSC) packet to indicate a precise time of insertion of the group of record packets;
insert the TSC packet associated with the group of record packets within the combined packet stream; and
store the combined packet stream in the memory buffer as a series of output pages using guest physical addresses.