mbox series

[V2,00/11] perf intel-pt: Add perf event clocks to better support VM tracing

Message ID 20220214110914.268126-1-adrian.hunter@intel.com (mailing list archive)
Headers show
Series perf intel-pt: Add perf event clocks to better support VM tracing | expand

Message

Adrian Hunter Feb. 14, 2022, 11:09 a.m. UTC
Hi

These patches add 2 new perf event clocks based on TSC for use with VMs.

The first patch is a minor fix, the next 2 patches add each of the 2 new
clocks.  The remaining patches add minimal tools support and are based on
top of the Intel PT Event Trace tools' patches.

The future work, to add the ability to use perf inject to inject perf
events from a VM guest perf.data file into a VM host perf.data file,
has yet to be implemented.


Changes in V2:
      perf/x86: Fix native_perf_sched_clock_from_tsc() with __sched_clock_offset
	  Add __sched_clock_offset unconditionally

      perf/x86: Add support for TSC as a perf event clock
	  Use an attribute bit 'ns_clockid' to identify non-standard clockids

      perf/x86: Add support for TSC in nanoseconds as a perf event clock
	  Do not affect use of __sched_clock_offset
	  Adjust to use 'ns_clockid'

      perf tools: Add new perf clock IDs
      perf tools: Add API probes for new clock IDs
      perf tools: Add new clock IDs to "perf time to TSC" test
      perf tools: Add perf_read_tsc_conv_for_clockid()
      perf intel-pt: Add support for new clock IDs
      perf intel-pt: Use CLOCK_PERF_HW_CLOCK_NS by default
      perf intel-pt: Add config variables for timing parameters
      perf intel-pt: Add documentation for new clock IDs
	  Adjust to use 'ns_clockid'


Adrian Hunter (11):
      perf/x86: Fix native_perf_sched_clock_from_tsc() with __sched_clock_offset
      perf/x86: Add support for TSC as a perf event clock
      perf/x86: Add support for TSC in nanoseconds as a perf event clock
      perf tools: Add new perf clock IDs
      perf tools: Add API probes for new clock IDs
      perf tools: Add new clock IDs to "perf time to TSC" test
      perf tools: Add perf_read_tsc_conv_for_clockid()
      perf intel-pt: Add support for new clock IDs
      perf intel-pt: Use CLOCK_PERF_HW_CLOCK_NS by default
      perf intel-pt: Add config variables for timing parameters
      perf intel-pt: Add documentation for new clock IDs

 arch/x86/events/core.c                     | 39 ++++++++++--
 arch/x86/include/asm/perf_event.h          |  5 ++
 arch/x86/kernel/tsc.c                      |  2 +-
 include/uapi/linux/perf_event.h            | 18 +++++-
 kernel/events/core.c                       | 63 +++++++++++++-------
 tools/include/uapi/linux/perf_event.h      | 18 +++++-
 tools/perf/Documentation/perf-config.txt   | 18 ++++++
 tools/perf/Documentation/perf-intel-pt.txt | 47 +++++++++++++++
 tools/perf/Documentation/perf-record.txt   |  9 ++-
 tools/perf/arch/x86/util/intel-pt.c        | 95 ++++++++++++++++++++++++++++--
 tools/perf/builtin-record.c                |  2 +-
 tools/perf/tests/perf-time-to-tsc.c        | 42 ++++++++++---
 tools/perf/util/clockid.c                  | 14 +++++
 tools/perf/util/evsel.c                    |  1 +
 tools/perf/util/intel-pt.c                 | 27 +++++++--
 tools/perf/util/intel-pt.h                 |  7 ++-
 tools/perf/util/perf_api_probe.c           | 24 ++++++++
 tools/perf/util/perf_api_probe.h           |  2 +
 tools/perf/util/perf_event_attr_fprintf.c  |  1 +
 tools/perf/util/record.h                   |  2 +
 tools/perf/util/tsc.c                      | 58 ++++++++++++++++++
 tools/perf/util/tsc.h                      |  2 +
 22 files changed, 444 insertions(+), 52 deletions(-)


Regards
Adrian

Comments

Adrian Hunter Feb. 21, 2022, 6:54 a.m. UTC | #1
On 14/02/2022 13:09, Adrian Hunter wrote:
> Hi
> 
> These patches add 2 new perf event clocks based on TSC for use with VMs.
> 
> The first patch is a minor fix, the next 2 patches add each of the 2 new
> clocks.  The remaining patches add minimal tools support and are based on
> top of the Intel PT Event Trace tools' patches.
> 
> The future work, to add the ability to use perf inject to inject perf
> events from a VM guest perf.data file into a VM host perf.data file,
> has yet to be implemented.
> 
> 
> Changes in V2:
>       perf/x86: Fix native_perf_sched_clock_from_tsc() with __sched_clock_offset
> 	  Add __sched_clock_offset unconditionally
> 
>       perf/x86: Add support for TSC as a perf event clock
> 	  Use an attribute bit 'ns_clockid' to identify non-standard clockids
> 
>       perf/x86: Add support for TSC in nanoseconds as a perf event clock
> 	  Do not affect use of __sched_clock_offset
> 	  Adjust to use 'ns_clockid'

Any comments on version 2?

> 
>       perf tools: Add new perf clock IDs
>       perf tools: Add API probes for new clock IDs
>       perf tools: Add new clock IDs to "perf time to TSC" test
>       perf tools: Add perf_read_tsc_conv_for_clockid()
>       perf intel-pt: Add support for new clock IDs
>       perf intel-pt: Use CLOCK_PERF_HW_CLOCK_NS by default
>       perf intel-pt: Add config variables for timing parameters
>       perf intel-pt: Add documentation for new clock IDs
> 	  Adjust to use 'ns_clockid'
> 
> 
> Adrian Hunter (11):
>       perf/x86: Fix native_perf_sched_clock_from_tsc() with __sched_clock_offset
>       perf/x86: Add support for TSC as a perf event clock
>       perf/x86: Add support for TSC in nanoseconds as a perf event clock
>       perf tools: Add new perf clock IDs
>       perf tools: Add API probes for new clock IDs
>       perf tools: Add new clock IDs to "perf time to TSC" test
>       perf tools: Add perf_read_tsc_conv_for_clockid()
>       perf intel-pt: Add support for new clock IDs
>       perf intel-pt: Use CLOCK_PERF_HW_CLOCK_NS by default
>       perf intel-pt: Add config variables for timing parameters
>       perf intel-pt: Add documentation for new clock IDs
> 
>  arch/x86/events/core.c                     | 39 ++++++++++--
>  arch/x86/include/asm/perf_event.h          |  5 ++
>  arch/x86/kernel/tsc.c                      |  2 +-
>  include/uapi/linux/perf_event.h            | 18 +++++-
>  kernel/events/core.c                       | 63 +++++++++++++-------
>  tools/include/uapi/linux/perf_event.h      | 18 +++++-
>  tools/perf/Documentation/perf-config.txt   | 18 ++++++
>  tools/perf/Documentation/perf-intel-pt.txt | 47 +++++++++++++++
>  tools/perf/Documentation/perf-record.txt   |  9 ++-
>  tools/perf/arch/x86/util/intel-pt.c        | 95 ++++++++++++++++++++++++++++--
>  tools/perf/builtin-record.c                |  2 +-
>  tools/perf/tests/perf-time-to-tsc.c        | 42 ++++++++++---
>  tools/perf/util/clockid.c                  | 14 +++++
>  tools/perf/util/evsel.c                    |  1 +
>  tools/perf/util/intel-pt.c                 | 27 +++++++--
>  tools/perf/util/intel-pt.h                 |  7 ++-
>  tools/perf/util/perf_api_probe.c           | 24 ++++++++
>  tools/perf/util/perf_api_probe.h           |  2 +
>  tools/perf/util/perf_event_attr_fprintf.c  |  1 +
>  tools/perf/util/record.h                   |  2 +
>  tools/perf/util/tsc.c                      | 58 ++++++++++++++++++
>  tools/perf/util/tsc.h                      |  2 +
>  22 files changed, 444 insertions(+), 52 deletions(-)
> 
> 
> Regards
> Adrian
Adrian Hunter March 1, 2022, 11:06 a.m. UTC | #2
On 21/02/2022 08:54, Adrian Hunter wrote:
> On 14/02/2022 13:09, Adrian Hunter wrote:
>> Hi
>>
>> These patches add 2 new perf event clocks based on TSC for use with VMs.
>>
>> The first patch is a minor fix, the next 2 patches add each of the 2 new
>> clocks.  The remaining patches add minimal tools support and are based on
>> top of the Intel PT Event Trace tools' patches.
>>
>> The future work, to add the ability to use perf inject to inject perf
>> events from a VM guest perf.data file into a VM host perf.data file,
>> has yet to be implemented.
>>
>>
>> Changes in V2:
>>       perf/x86: Fix native_perf_sched_clock_from_tsc() with __sched_clock_offset
>> 	  Add __sched_clock_offset unconditionally
>>
>>       perf/x86: Add support for TSC as a perf event clock
>> 	  Use an attribute bit 'ns_clockid' to identify non-standard clockids
>>
>>       perf/x86: Add support for TSC in nanoseconds as a perf event clock
>> 	  Do not affect use of __sched_clock_offset
>> 	  Adjust to use 'ns_clockid'
> 
> Any comments on version 2?

☺/