| 
									
										
										
										
											2009-05-01 18:29:57 +02:00
										 |  |  | #ifndef _PERF_PERF_H
 | 
					
						
							|  |  |  | #define _PERF_PERF_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-23 18:28:58 +02:00
										 |  |  | #include <time.h>
 | 
					
						
							| 
									
										
										
										
											2014-05-05 12:58:31 +02:00
										 |  |  | #include <stdbool.h>
 | 
					
						
							| 
									
										
										
										
											2014-04-25 21:31:02 +02:00
										 |  |  | #include <linux/types.h>
 | 
					
						
							| 
									
										
										
										
											2012-11-19 22:21:03 +00:00
										 |  |  | #include <linux/perf_event.h>
 | 
					
						
							| 
									
										
										
										
											2009-05-23 18:28:58 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-05-05 12:58:31 +02:00
										 |  |  | extern bool test_attr__enabled; | 
					
						
							|  |  |  | void test_attr__init(void); | 
					
						
							|  |  |  | void test_attr__open(struct perf_event_attr *attr, pid_t pid, int cpu, | 
					
						
							|  |  |  | 		     int fd, int group_fd, unsigned long flags); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define HAVE_ATTR_TEST
 | 
					
						
							|  |  |  | #include "perf-sys.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-01 18:39:47 +02:00
										 |  |  | #ifndef NSEC_PER_SEC
 | 
					
						
							|  |  |  | # define NSEC_PER_SEC			1000000000ULL
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2013-08-07 21:56:38 -04:00
										 |  |  | #ifndef NSEC_PER_USEC
 | 
					
						
							|  |  |  | # define NSEC_PER_USEC			1000ULL
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2009-05-01 18:39:47 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | static inline unsigned long long rdclock(void) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	struct timespec ts; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	clock_gettime(CLOCK_MONOTONIC, &ts); | 
					
						
							|  |  |  | 	return ts.tv_sec * 1000000000ULL + ts.tv_nsec; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2009-05-01 18:29:57 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-25 09:59:50 +02:00
										 |  |  | #define MAX_NR_CPUS			256
 | 
					
						
							| 
									
										
										
										
											2009-05-01 18:29:57 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-30 11:56:02 +08:00
										 |  |  | extern const char *input_name; | 
					
						
							| 
									
										
										
										
											2010-05-17 15:51:10 -03:00
										 |  |  | extern bool perf_host, perf_guest; | 
					
						
							| 
									
										
											  
											
												perf tools: Make perf.data more self-descriptive (v8)
The goal of this patch is to include more information about the host
environment into the perf.data so it is more self-descriptive. Overtime,
profiles are captured on various machines and it becomes hard to track
what was recorded, on what machine and when.
This patch provides a way to solve this by extending the perf.data file
with basic information about the host machine. To add those extensions,
we leverage the feature bits capabilities of the perf.data format.  The
change is backward compatible with existing perf.data files.
We define the following useful new extensions:
 - HEADER_HOSTNAME: the hostname
 - HEADER_OSRELEASE: the kernel release number
 - HEADER_ARCH: the hw architecture
 - HEADER_CPUDESC: generic CPU description
 - HEADER_NRCPUS: number of online/avail cpus
 - HEADER_CMDLINE: perf command line
 - HEADER_VERSION: perf version
 - HEADER_TOPOLOGY: cpu topology
 - HEADER_EVENT_DESC: full event description (attrs)
 - HEADER_CPUID: easy-to-parse low level CPU identication
The small granularity for the entries is to make it easier to extend
without breaking backward compatiblity. Many entries are provided as
ASCII strings.
Perf report/script have been modified to print the basic information as
easy-to-parse ASCII strings. Extended information about CPU and NUMA
topology may be requested with the -I option.
Thanks to David Ahern for reviewing and testing the many versions of
this patch.
 $ perf report --stdio
 # ========
 # captured on : Mon Sep 26 15:22:14 2011
 # hostname : quad
 # os release : 3.1.0-rc4-tip
 # perf version : 3.1.0-rc4
 # arch : x86_64
 # nrcpus online : 4
 # nrcpus avail : 4
 # cpudesc : Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
 # cpuid : GenuineIntel,6,15,11
 # total memory : 8105360 kB
 # cmdline : /home/eranian/perfmon/official/tip/build/tools/perf/perf record date
 # event : name = cycles, type = 0, config = 0x0, config1 = 0x0, config2 = 0x0, excl_usr = 0, excl_kern = 0, id = { 29, 30, 31,
 # HEADER_CPU_TOPOLOGY info available, use -I to display
 # HEADER_NUMA_TOPOLOGY info available, use -I to display
 # ========
 #
 ...
 $ perf report --stdio -I
 # ========
 # captured on : Mon Sep 26 15:22:14 2011
 # hostname : quad
 # os release : 3.1.0-rc4-tip
 # perf version : 3.1.0-rc4
 # arch : x86_64
 # nrcpus online : 4
 # nrcpus avail : 4
 # cpudesc : Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
 # cpuid : GenuineIntel,6,15,11
 # total memory : 8105360 kB
 # cmdline : /home/eranian/perfmon/official/tip/build/tools/perf/perf record date
 # event : name = cycles, type = 0, config = 0x0, config1 = 0x0, config2 = 0x0, excl_usr = 0, excl_kern = 0, id = { 29, 30, 31,
 # sibling cores   : 0-3
 # sibling threads : 0
 # sibling threads : 1
 # sibling threads : 2
 # sibling threads : 3
 # node0 meminfo  : total = 8320608 kB, free = 7571024 kB
 # node0 cpu list : 0-3
 # ========
 #
 ...
Reviewed-by: David Ahern <dsahern@gmail.com>
Tested-by: David Ahern <dsahern@gmail.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Robert Richter <robert.richter@amd.com>
Cc: Andi Kleen <ak@linux.intel.com>
Link: http://lkml.kernel.org/r/20110930134040.GA5575@quad
Signed-off-by: Stephane Eranian <eranian@google.com>
[ committer notes: Use --show-info in the tools as was in the docs, rename
  perf_header_fprintf_info to perf_file_section__fprintf_info, fixup
  conflict with f69b64f7 "perf: Support setting the disassembler style" ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
											
										 
											2011-09-30 15:40:40 +02:00
										 |  |  | extern const char perf_version_string[]; | 
					
						
							| 
									
										
										
										
											2010-04-19 13:32:50 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-10-13 08:52:46 -03:00
										 |  |  | void pthread__unblock_sigwinch(void); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-04-26 14:15:22 +09:00
										 |  |  | #include "util/target.h"
 | 
					
						
							| 
									
										
										
										
											2012-04-26 14:15:15 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-12-19 14:43:45 -03:00
										 |  |  | struct record_opts { | 
					
						
							| 
									
										
										
										
											2013-11-12 16:46:16 -03:00
										 |  |  | 	struct target target; | 
					
						
							| 
									
										
										
										
											2011-11-11 15:12:56 -02:00
										 |  |  | 	bool	     group; | 
					
						
							| 
									
										
										
										
											2011-11-08 14:41:57 -02:00
										 |  |  | 	bool	     inherit_stat; | 
					
						
							| 
									
										
										
										
											2014-01-14 17:52:14 -03:00
										 |  |  | 	bool	     no_buffering; | 
					
						
							| 
									
										
										
										
											2011-11-08 14:41:57 -02:00
										 |  |  | 	bool	     no_inherit; | 
					
						
							| 
									
										
										
										
											2013-11-18 11:55:57 +02:00
										 |  |  | 	bool	     no_inherit_set; | 
					
						
							| 
									
										
										
										
											2011-11-08 14:41:57 -02:00
										 |  |  | 	bool	     no_samples; | 
					
						
							|  |  |  | 	bool	     raw_samples; | 
					
						
							|  |  |  | 	bool	     sample_address; | 
					
						
							| 
									
										
										
										
											2013-01-24 16:10:29 +01:00
										 |  |  | 	bool	     sample_weight; | 
					
						
							| 
									
										
										
										
											2011-11-08 14:41:57 -02:00
										 |  |  | 	bool	     sample_time; | 
					
						
							| 
									
										
										
										
											2011-12-20 17:32:45 +03:00
										 |  |  | 	bool	     period; | 
					
						
							| 
									
										
										
										
											2011-11-08 14:41:57 -02:00
										 |  |  | 	unsigned int freq; | 
					
						
							| 
									
										
										
										
											2011-11-09 09:16:26 -02:00
										 |  |  | 	unsigned int mmap_pages; | 
					
						
							| 
									
										
										
										
											2011-11-08 14:41:57 -02:00
										 |  |  | 	unsigned int user_freq; | 
					
						
							| 
									
										
										
										
											2012-05-25 23:13:44 +02:00
										 |  |  | 	u64          branch_stack; | 
					
						
							| 
									
										
										
										
											2011-11-08 14:41:57 -02:00
										 |  |  | 	u64	     default_interval; | 
					
						
							|  |  |  | 	u64	     user_interval; | 
					
						
							| 
									
										
										
										
											2013-09-20 07:40:43 -07:00
										 |  |  | 	bool	     sample_transaction; | 
					
						
							| 
									
										
										
										
											2014-01-11 13:38:27 -08:00
										 |  |  | 	unsigned     initial_delay; | 
					
						
							| 
									
										
										
										
											2011-11-08 14:41:57 -02:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-01 18:29:57 +02:00
										 |  |  | #endif
 |