Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e33e0a43 authored by Ingo Molnar's avatar Ingo Molnar
Browse files

perf_counter tools: add 'perf record' command



Move perf-record.c into the perf suite of commands.

Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 1d8c8b20
Loading
Loading
Loading
Loading
+63 −0
Original line number Diff line number Diff line
perf-record(1)
==========

NAME
----
perf-record - Run a command and record its profile into output.perf

SYNOPSIS
--------
[verse]
'perf record' [-e <EVENT> | --event=EVENT] [-l] [-a] <command>

DESCRIPTION
-----------
This command runs a command and gathers a performance counter profile
from it, into output.perf - without displaying anything.

This file can then be inspected later on, using 'perf report'.


OPTIONS
-------
<command>...::
	Any command you can specify in a shell.

-e::
--event=::
                             0:0: cpu-cycles          
                             0:0: cycles              
                             0:1: instructions        
                             0:2: cache-references    
                             0:3: cache-misses        
                             0:4: branch-instructions 
                             0:4: branches            
                             0:5: branch-misses       
                             0:6: bus-cycles          
                             1:0: cpu-clock           
                             1:1: task-clock          
                             1:2: page-faults         
                             1:2: faults              
                             1:5: minor-faults        
                             1:6: major-faults        
                             1:3: context-switches    
                             1:3: cs                  
                             1:4: cpu-migrations      
                             1:4: migrations          
                           rNNN: raw PMU events (eventsel+umask)

-a::
        system-wide collection

-l::
        scale counter values

Configuration
-------------

EXAMPLES
--------

SEE ALSO
--------
linkperf:git-stat[1]
+1 −0
Original line number Diff line number Diff line
@@ -309,6 +309,7 @@ LIB_OBJS += usage.o
LIB_OBJS += wrapper.o

BUILTIN_OBJS += builtin-help.o
BUILTIN_OBJS += builtin-record.o
BUILTIN_OBJS += builtin-stat.o
BUILTIN_OBJS += builtin-top.o

+3 −27
Original line number Diff line number Diff line
@@ -81,16 +81,12 @@
	(void) (&_min1 == &_min2);		\
	_min1 < _min2 ? _min1 : _min2; })

asmlinkage int sys_perf_counter_open(
extern asmlinkage int sys_perf_counter_open(
        struct perf_counter_hw_event    *hw_event_uptr          __user,
        pid_t                           pid,
        int                             cpu,
        int                             group_fd,
        unsigned long                   flags)
{
        return syscall(
                __NR_perf_counter_open, hw_event_uptr, pid, cpu, group_fd, flags);
}
        unsigned long                   flags);

#define MAX_COUNTERS			64
#define MAX_NR_CPUS			256
@@ -119,26 +115,6 @@ const unsigned int default_count[] = {
	  10000,
};

static char *hw_event_names[] = {
	"CPU cycles",
	"instructions",
	"cache references",
	"cache misses",
	"branches",
	"branch misses",
	"bus cycles",
};

static char *sw_event_names[] = {
	"cpu clock ticks",
	"task clock ticks",
	"pagefaults",
	"context switches",
	"CPU migrations",
	"minor faults",
	"major faults",
};

struct event_symbol {
	__u64 event;
	char *symbol;
@@ -414,7 +390,7 @@ static void sigchld_handler(int sig)
		done = 1;
}

int main(int argc, char *argv[])
int cmd_record(int argc, const char **argv)
{
	struct pollfd event_array[MAX_NR_CPUS * MAX_COUNTERS];
	struct mmap_data mmap_array[MAX_NR_CPUS][MAX_COUNTERS];
+2 −1
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@ extern void prune_packed_objects(int);
extern int read_line_with_nul(char *buf, int size, FILE *file);
extern int check_pager_config(const char *cmd);

extern int cmd_top(int argc, const char **argv, const char *prefix);
extern int cmd_record(int argc, const char **argv, const char *prefix);
extern int cmd_stat(int argc, const char **argv, const char *prefix);
extern int cmd_top(int argc, const char **argv, const char *prefix);
#endif
+2 −1
Original line number Diff line number Diff line
# List of known perf commands.
# command name				category [deprecated] [common]
perf-top                                mainporcelain common
perf-record                             mainporcelain common
perf-stat                               mainporcelain common
perf-top                                mainporcelain common
Loading