forked from Minki/linux
8fb4b67939
The --all-cgroups option is to enable cgroup profiling support. It tells kernel to record CGROUP events in the ring buffer so that perf report can identify task/cgroup association later. [root@seventh ~]# perf record --all-cgroups --namespaces /wb/cgtest [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.042 MB perf.data (558 samples) ] [root@seventh ~]# perf report --stdio -s cgroup_id,cgroup,pid # To display the perf.data header info, please use --header/--header-only options. # # # Total Lost Samples: 0 # # Samples: 558 of event 'cycles' # Event count (approx.): 458017341 # # Overhead cgroup id (dev/inode) Cgroup Pid:Command # ........ ..................... .......... ............... # 33.15% 4/0xeffffffb /sub 9615:looper0 32.83% 4/0xf00002f5 /sub/cgrp2 9620:looper2 32.79% 4/0xf00002f4 /sub/cgrp1 9619:looper1 0.35% 4/0xf00002f5 /sub/cgrp2 9618:cgtest 0.34% 4/0xf00002f4 /sub/cgrp1 9617:cgtest 0.32% 4/0xeffffffb / 9615:looper0 0.11% 4/0xeffffffb /sub 9617:cgtest 0.10% 4/0xeffffffb /sub 9618:cgtest # # (Tip: Sample related events with: perf record -e '{cycles,instructions}:S') # [root@seventh ~]# Signed-off-by: Namhyung Kim <namhyung@kernel.org> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lore.kernel.org/lkml/20200325124536.2800725-8-namhyung@kernel.org Link: http://lore.kernel.org/lkml/20200402015249.3800462-1-namhyung@kernel.org [ Extracted the HAVE_FILE_HANDLE from the followup patch ] Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
79 lines
1.9 KiB
C
79 lines
1.9 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _PERF_RECORD_H
|
|
#define _PERF_RECORD_H
|
|
|
|
#include <time.h>
|
|
#include <stdbool.h>
|
|
#include <linux/types.h>
|
|
#include <linux/stddef.h>
|
|
#include <linux/perf_event.h>
|
|
#include "util/target.h"
|
|
|
|
struct option;
|
|
|
|
struct record_opts {
|
|
struct target target;
|
|
bool group;
|
|
bool inherit_stat;
|
|
bool no_buffering;
|
|
bool no_inherit;
|
|
bool no_inherit_set;
|
|
bool no_samples;
|
|
bool raw_samples;
|
|
bool sample_address;
|
|
bool sample_phys_addr;
|
|
bool sample_weight;
|
|
bool sample_time;
|
|
bool sample_time_set;
|
|
bool sample_cpu;
|
|
bool period;
|
|
bool period_set;
|
|
bool running_time;
|
|
bool full_auxtrace;
|
|
bool auxtrace_snapshot_mode;
|
|
bool auxtrace_snapshot_on_exit;
|
|
bool auxtrace_sample_mode;
|
|
bool record_namespaces;
|
|
bool record_cgroup;
|
|
bool record_switch_events;
|
|
bool all_kernel;
|
|
bool all_user;
|
|
bool kernel_callchains;
|
|
bool user_callchains;
|
|
bool tail_synthesize;
|
|
bool overwrite;
|
|
bool ignore_missing_thread;
|
|
bool strict_freq;
|
|
bool sample_id;
|
|
bool no_bpf_event;
|
|
bool kcore;
|
|
unsigned int freq;
|
|
unsigned int mmap_pages;
|
|
unsigned int auxtrace_mmap_pages;
|
|
unsigned int user_freq;
|
|
u64 branch_stack;
|
|
u64 sample_intr_regs;
|
|
u64 sample_user_regs;
|
|
u64 default_interval;
|
|
u64 user_interval;
|
|
size_t auxtrace_snapshot_size;
|
|
const char *auxtrace_snapshot_opts;
|
|
const char *auxtrace_sample_opts;
|
|
bool sample_transaction;
|
|
unsigned initial_delay;
|
|
bool use_clockid;
|
|
clockid_t clockid;
|
|
u64 clockid_res_ns;
|
|
int nr_cblocks;
|
|
int affinity;
|
|
int mmap_flush;
|
|
unsigned int comp_level;
|
|
};
|
|
|
|
extern const char * const *record_usage;
|
|
extern struct option *record_options;
|
|
|
|
int record__parse_freq(const struct option *opt, const char *str, int unset);
|
|
|
|
#endif // _PERF_RECORD_H
|