来自perf sample事件的程序上下文

时间:2018-04-13 13:45:07

标签: kernel perf

我正在使用perf_event实用程序来收集内核空间中的PEBS示例。如何从perf_sample_data获取上下文信息(中断/ nmi上下文,程序上下文)?我可以看到perf_regs包含寄存器信息。哪个寄存器位指示样本的上下文?

更新

我在用户空间使用perf_event_open并在perf事件处理程序中修改内核。我正在为Intel Broadwel机器配置具有以下属性(mem trans detired)的perf_event。

struct perf_event_attr pe = {
        .type                   = PERF_TYPE_RAW,
        .size                   = sizeof(struct perf_event_attr),
        .sample_period          = 10003,
        .sample_type            = PEBS_SAMPLE_TYPE,
        .exclude_user           = 1,
        .exclude_kernel         = 0,
        .exclude_hv             = 0,
        .disabled               = 0, 
        .config                 = 0x1cd,
        .config1                = 0x3,
        .precise_ip             = 3,
        .exclude_callchain_kernel = 0,
        .read_format            = PERF_FORMAT_GROUP | PERF_FORMAT_ID,
        .task                   = 1,
    };
    perf_event_open(&pe, processId, -1, -1 /*group*/, 0);

在内核空间perf事件处理程序中,我在每个示例事件上都有perf_sample_data。如何知道样本是从中断处理程序中获取还是样本来自进程上下文?

0 个答案:

没有答案