Received: by 10.223.164.202 with SMTP id h10csp684025wrb; Thu, 9 Nov 2017 12:39:37 -0800 (PST) X-Google-Smtp-Source: ABhQp+QlgaA2uhUhYn85zpZrzxWxCSRHOAae59skoYmCzKPHQoJbJ876M+7JxxuRhDmNwE0+LRZs X-Received: by 10.98.245.21 with SMTP id n21mr1729141pfh.68.1510259977828; Thu, 09 Nov 2017 12:39:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510259977; cv=none; d=google.com; s=arc-20160816; b=BVGdMo4t6cw2XYj9ui9Sxr53j7zrlaz0ZlXCUB8RpszDnr8etY+HAKBkfvlWkHFJDf dibSDKV93VxiUV/+gjK+S5pYtpyelhNRcmFhzYA5Okwdb9++YSEtlaSX43n9TjGisZSn 77z7VLc+epx8MKn8x2OpMti+x/+8eySn3FtMxnXf1Qf2SvhsCcUhhDszboF7jSPMWIGv yyn8LWDs1+II0tW/vpBla22/9onTGYm5Wp5nF8sGXnWWDpo3s/6rmqBxjJPJ3SimCraw LBNCwH1RhUDGp7Cxhs3NG7ZUUvzqggjzWriKzAhtmC+kgMi6Hjmx3dqc8AkL4fpxVf1V vUAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=kCGsqdxCsuZa4jWPYO+/8NrH3CsCbR1LlUO3Z1A3L/A=; b=RvHaekkhJgwJpM6GvZ6zfyzWKosFNtlytRTMgFjhsg8p/xMsbDd+VBBQmUOUaOk+eH cyLPko6veAPf0zAbDnkzYUzd33nqjQlI1Z4tttmF8A8OsWxxIQMJvvR3lr3lJijmbjJe hfEpXjzGthYgTEZNvcTZiQ9dESnd5XaA4IBH4IRQqMnjLs+Uf2cWDcB65k0PWWxmvO3V n9dSfeD2MwnCaVubhBMjWGue2jdxlZbFoCK2Qdrw6l+ZF1Zy5VETm3zI1NRKzjBkYAyw rPZonkPeFutu0GSmOeaG6JwUQrQ9hUxxnYYzE7rOQ6/JuJdOHtEnhOfsQ8+LKSLjqVNv Hn+Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n9si7030467pgs.93.2017.11.09.12.39.26; Thu, 09 Nov 2017 12:39:37 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755186AbdKIUfv (ORCPT + 83 others); Thu, 9 Nov 2017 15:35:51 -0500 Received: from mga14.intel.com ([192.55.52.115]:10298 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751256AbdKIUfs (ORCPT ); Thu, 9 Nov 2017 15:35:48 -0500 Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 Nov 2017 12:35:47 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.44,370,1505804400"; d="scan'208";a="5892287" Received: from dkusalov-mobl4.amr.corp.intel.com (HELO localhost) ([10.254.117.34]) by orsmga002.jf.intel.com with ESMTP; 09 Nov 2017 12:35:45 -0800 From: Tom Zanussi To: rostedt@goodmis.org Cc: tglx@linutronix.de, mhiramat@kernel.org, namhyung@kernel.org, vedang.patel@intel.com, bigeasy@linutronix.de, joel.opensrc@gmail.com, joelaf@google.com, mathieu.desnoyers@efficios.com, baohong.liu@intel.com, rajvi.jingar@intel.com, julia@ni.com, linux-kernel@vger.kernel.org, linux-rt-users@vger.kernel.org, Tom Zanussi Subject: [PATCH v5 29/37] tracing: Add cpu field for hist triggers Date: Thu, 9 Nov 2017 14:34:00 -0600 Message-Id: <1c35fbf511210553b185654850b792bb293760e0.1510252666.git.tom.zanussi@linux.intel.com> X-Mailer: git-send-email 1.9.3 In-Reply-To: References: In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org A common key to use in a histogram is the cpuid - add a new cpu 'synthetic' field for that purpose. This field is named cpu rather than $cpu or $common_cpu because 'cpu' already exists as a special filter field and it makes more sense to match that rather than add another name for the same thing. Signed-off-by: Tom Zanussi --- Documentation/trace/histogram.txt | 17 +++++++++++++++++ kernel/trace/trace_events_hist.c | 28 +++++++++++++++++++++++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/Documentation/trace/histogram.txt b/Documentation/trace/histogram.txt index d1d92ed..cd3ec00 100644 --- a/Documentation/trace/histogram.txt +++ b/Documentation/trace/histogram.txt @@ -172,6 +172,23 @@ The examples below provide a more concrete illustration of the concepts and typical usage patterns discussed above. + 'special' event fields + ------------------------ + + There are a number of 'special event fields' available for use as + keys or values in a hist trigger. These look like and behave as if + they were actual event fields, but aren't really part of the event's + field definition or format file. They are however available for any + event, and can be used anywhere an actual event field could be. + 'Special' field names are always prefixed with a '$' character to + indicate that they're not normal fields (with the exception of + 'cpu', for compatibility with existing filter usage): + + $common_timestamp u64 - timestamp (from ring buffer) associated + with the event, in nanoseconds. May be + modified by .usecs to have timestamps + interpreted as microseconds. + cpu int - the cpu on which the event occurred. 6.2 'hist' trigger examples --------------------------- diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c index e6ff38f..30da21c 100644 --- a/kernel/trace/trace_events_hist.c +++ b/kernel/trace/trace_events_hist.c @@ -227,6 +227,7 @@ enum hist_field_flags { HIST_FIELD_FL_VAR = 1 << 12, HIST_FIELD_FL_EXPR = 1 << 13, HIST_FIELD_FL_VAR_REF = 1 << 14, + HIST_FIELD_FL_CPU = 1 << 15, }; struct var_defs { @@ -1177,6 +1178,16 @@ static u64 hist_field_timestamp(struct hist_field *hist_field, return ts; } +static u64 hist_field_cpu(struct hist_field *hist_field, + struct tracing_map_elt *elt, + struct ring_buffer_event *rbe, + void *event) +{ + int cpu = smp_processor_id(); + + return cpu; +} + static struct hist_field * check_field_for_var_ref(struct hist_field *hist_field, struct hist_trigger_data *var_data, @@ -1617,6 +1628,8 @@ static const char *hist_field_name(struct hist_field *field, field_name = hist_field_name(field->operands[0], ++level); else if (field->flags & HIST_FIELD_FL_TIMESTAMP) field_name = "$common_timestamp"; + else if (field->flags & HIST_FIELD_FL_CPU) + field_name = "cpu"; else if (field->flags & HIST_FIELD_FL_EXPR || field->flags & HIST_FIELD_FL_VAR_REF) { if (field->system) { @@ -2120,6 +2133,15 @@ static struct hist_field *create_hist_field(struct hist_trigger_data *hist_data, goto out; } + if (flags & HIST_FIELD_FL_CPU) { + hist_field->fn = hist_field_cpu; + hist_field->size = sizeof(int); + hist_field->type = kstrdup("int", GFP_KERNEL); + if (!hist_field->type) + goto free; + goto out; + } + if (WARN_ON_ONCE(!field)) goto out; @@ -2338,7 +2360,9 @@ static struct hist_field *parse_var_ref(struct hist_trigger_data *hist_data, hist_data->enable_timestamps = true; if (*flags & HIST_FIELD_FL_TIMESTAMP_USECS) hist_data->attrs->ts_in_usecs = true; - } else { + } else if (strcmp(field_name, "cpu") == 0) + *flags |= HIST_FIELD_FL_CPU; + else { field = trace_find_event_field(file->event_call, field_name); if (!field || !field->size) { field = ERR_PTR(-EINVAL); @@ -4607,6 +4631,8 @@ static void hist_field_print(struct seq_file *m, struct hist_field *hist_field) if (hist_field->flags & HIST_FIELD_FL_TIMESTAMP) seq_puts(m, "$common_timestamp"); + else if (hist_field->flags & HIST_FIELD_FL_CPU) + seq_puts(m, "cpu"); else if (field_name) { if (hist_field->flags & HIST_FIELD_FL_VAR_REF) seq_putc(m, '$'); -- 1.9.3 From 1583618313741353584@xxx Thu Nov 09 19:35:12 +0000 2017 X-GM-THRID: 1583618313741353584 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread