perf: 'perf kvm' tool for monitoring guest performance from host
Here is the patch of userspace perf tool. Signed-off-by: Zhang Yanmin <yanmin_zhang@linux.intel.com> Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
committed by
Avi Kivity
parent
ff9d07a0e7
commit
a1645ce12a
@@ -69,10 +69,15 @@ struct symbol_conf {
|
||||
show_nr_samples,
|
||||
use_callchain,
|
||||
exclude_other,
|
||||
full_paths;
|
||||
full_paths,
|
||||
show_cpu_utilization;
|
||||
const char *vmlinux_name,
|
||||
*field_sep;
|
||||
char *dso_list_str,
|
||||
const char *default_guest_vmlinux_name,
|
||||
*default_guest_kallsyms,
|
||||
*default_guest_modules;
|
||||
const char *guestmount;
|
||||
char *dso_list_str,
|
||||
*comm_list_str,
|
||||
*sym_list_str,
|
||||
*col_width_list_str;
|
||||
@@ -106,6 +111,13 @@ struct addr_location {
|
||||
u64 addr;
|
||||
char level;
|
||||
bool filtered;
|
||||
unsigned int cpumode;
|
||||
};
|
||||
|
||||
enum dso_kernel_type {
|
||||
DSO_TYPE_USER = 0,
|
||||
DSO_TYPE_KERNEL,
|
||||
DSO_TYPE_GUEST_KERNEL
|
||||
};
|
||||
|
||||
struct dso {
|
||||
@@ -115,7 +127,7 @@ struct dso {
|
||||
u8 adjust_symbols:1;
|
||||
u8 slen_calculated:1;
|
||||
u8 has_build_id:1;
|
||||
u8 kernel:1;
|
||||
enum dso_kernel_type kernel;
|
||||
u8 hit:1;
|
||||
u8 annotate_warned:1;
|
||||
unsigned char origin;
|
||||
@@ -143,34 +155,30 @@ static inline void dso__set_loaded(struct dso *self, enum map_type type)
|
||||
|
||||
void dso__sort_by_name(struct dso *self, enum map_type type);
|
||||
|
||||
extern struct list_head dsos__user, dsos__kernel;
|
||||
|
||||
struct dso *__dsos__findnew(struct list_head *head, const char *name);
|
||||
|
||||
static inline struct dso *dsos__findnew(const char *name)
|
||||
{
|
||||
return __dsos__findnew(&dsos__user, name);
|
||||
}
|
||||
|
||||
int dso__load(struct dso *self, struct map *map, symbol_filter_t filter);
|
||||
int dso__load_vmlinux_path(struct dso *self, struct map *map,
|
||||
symbol_filter_t filter);
|
||||
int dso__load_kallsyms(struct dso *self, const char *filename, struct map *map,
|
||||
symbol_filter_t filter);
|
||||
void dsos__fprintf(FILE *fp);
|
||||
size_t dsos__fprintf_buildid(FILE *fp, bool with_hits);
|
||||
void dsos__fprintf(struct rb_root *kerninfo_root, FILE *fp);
|
||||
size_t dsos__fprintf_buildid(struct rb_root *kerninfo_root,
|
||||
FILE *fp, bool with_hits);
|
||||
|
||||
size_t dso__fprintf_buildid(struct dso *self, FILE *fp);
|
||||
size_t dso__fprintf(struct dso *self, enum map_type type, FILE *fp);
|
||||
|
||||
enum dso_origin {
|
||||
DSO__ORIG_KERNEL = 0,
|
||||
DSO__ORIG_GUEST_KERNEL,
|
||||
DSO__ORIG_JAVA_JIT,
|
||||
DSO__ORIG_BUILD_ID_CACHE,
|
||||
DSO__ORIG_FEDORA,
|
||||
DSO__ORIG_UBUNTU,
|
||||
DSO__ORIG_BUILDID,
|
||||
DSO__ORIG_DSO,
|
||||
DSO__ORIG_GUEST_KMODULE,
|
||||
DSO__ORIG_KMODULE,
|
||||
DSO__ORIG_NOT_FOUND,
|
||||
};
|
||||
@@ -178,19 +186,26 @@ enum dso_origin {
|
||||
char dso__symtab_origin(const struct dso *self);
|
||||
void dso__set_long_name(struct dso *self, char *name);
|
||||
void dso__set_build_id(struct dso *self, void *build_id);
|
||||
void dso__read_running_kernel_build_id(struct dso *self);
|
||||
void dso__read_running_kernel_build_id(struct dso *self,
|
||||
struct kernel_info *kerninfo);
|
||||
struct symbol *dso__find_symbol(struct dso *self, enum map_type type, u64 addr);
|
||||
struct symbol *dso__find_symbol_by_name(struct dso *self, enum map_type type,
|
||||
const char *name);
|
||||
|
||||
int filename__read_build_id(const char *filename, void *bf, size_t size);
|
||||
int sysfs__read_build_id(const char *filename, void *bf, size_t size);
|
||||
bool dsos__read_build_ids(bool with_hits);
|
||||
bool __dsos__read_build_ids(struct list_head *head, bool with_hits);
|
||||
int build_id__sprintf(const u8 *self, int len, char *bf);
|
||||
int kallsyms__parse(const char *filename, void *arg,
|
||||
int (*process_symbol)(void *arg, const char *name,
|
||||
char type, u64 start));
|
||||
|
||||
int __map_groups__create_kernel_maps(struct map_groups *self,
|
||||
struct map *vmlinux_maps[MAP__NR_TYPES],
|
||||
struct dso *kernel);
|
||||
int map_groups__create_kernel_maps(struct rb_root *kerninfo_root, pid_t pid);
|
||||
int map_groups__create_guest_kernel_maps(struct rb_root *kerninfo_root);
|
||||
|
||||
int symbol__init(void);
|
||||
bool symbol_type__is_a(char symbol_type, enum map_type map_type);
|
||||
|
||||
|
Reference in New Issue
Block a user