Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752486AbdI2VWF (ORCPT ); Fri, 29 Sep 2017 17:22:05 -0400 Received: from mail-pg0-f42.google.com ([74.125.83.42]:45390 "EHLO mail-pg0-f42.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752162AbdI2VWD (ORCPT ); Fri, 29 Sep 2017 17:22:03 -0400 X-Google-Smtp-Source: AOwi7QC1mA3yV0kwaJFqK5wqCOQ7s7vutKg/bmNr6cPfWEiF3U5TIOVAegrB0zsVZCoouavN6ounPA== From: Joel Fernandes To: linux-kernel@vger.kernel.org Cc: kernel-team@android.com, Joel Fernandes , Steven Rostedt , Peter Zilstra Subject: [PATCH v7 0/2] tracing: Add trace events for preemption and irq disable/enable Date: Fri, 29 Sep 2017 14:21:42 -0700 Message-Id: <20170929212144.24039-1-joelaf@google.com> X-Mailer: git-send-email 2.14.2.822.g60be5d43e6-goog Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1899 Lines: 45 These patches add trace events support for preempt and irq disable/enable events. Here's an example of how Android's systrace will be using it to show atomic sections as a gantt chart: http://imgur.com/download/TZplEVp Other advantages of this initial work could be rewriting of preemptirqs off tracer to use trace events, and replacing kprobes with tracepoint hooks for these events in BPF samples (see samples/bpf/lathist_kern.c). Changes since v6: 1. Drop the stop_critical_timings changes - previous patch was generating the preempt_enable/disable events. Instead since we already have cpuidle trace events, we can just rely on those for now to understand how much time was spent in idle. A future patch could do something smarter. 2. Drop the per-cpu variable usage from trace_preempt_enable/disable. The trace_preempt_enable/disable calls don't nest, so there's no need to protect it with a per-cpu variable. 3. trace_irq_enable/disable on the other hand are called in this way, so I added some comments about why per-cpu variable is needed. Joel Fernandes (2): tracing: Prepare to add preempt and irq trace events tracing: Add support for preempt and irq enable/disable events include/linux/ftrace.h | 3 +- include/trace/events/preemptirq.h | 66 ++++++++++++++++++ kernel/trace/Kconfig | 9 +++ kernel/trace/Makefile | 1 + kernel/trace/trace_irqsoff.c | 139 +++++++++++++++++++++++++++++++------- 5 files changed, 191 insertions(+), 27 deletions(-) create mode 100644 include/trace/events/preemptirq.h Links to earlier series: v6: https://lkml.org/lkml/2017/9/21/789 v5: https://lkml.org/lkml/2017/9/12/507 v4: https://lkml.org/lkml/2017/9/6/724 v3: https://lkml.org/lkml/2017/9/3/15 Cc: kernel-team@android.com Cc: Steven Rostedt Cc: Peter Zilstra -- 2.14.2.822.g60be5d43e6-goog