Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752751AbbBWPAQ (ORCPT ); Mon, 23 Feb 2015 10:00:16 -0500 Received: from mga11.intel.com ([192.55.52.93]:19513 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752156AbbBWPAO (ORCPT ); Mon, 23 Feb 2015 10:00:14 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.09,631,1418112000"; d="scan'208";a="689460018" From: Kan Liang To: a.p.zijlstra@chello.nl, linux-kernel@vger.kernel.org Cc: mingo@kernel.org, acme@infradead.org, eranian@google.com, andi@firstfloor.org, Kan Liang Subject: [PATCH V5 0/6] large PEBS interrupt threshold Date: Mon, 23 Feb 2015 09:25:50 -0500 Message-Id: <1424701556-28270-1-git-send-email-kan.liang@intel.com> X-Mailer: git-send-email 1.8.3.2 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2933 Lines: 67 This patch series implements large PEBS interrupt threshold. Currently, the PEBS threshold is forced to set to one. A larger PEBS interrupt threshold can significantly reduce the sampling overhead especially for frequently occurring events (like cycles or branches or load/stores) with small sampling period. For example, perf record cycles event when running kernbench with 10003 sampling period. The Elapsed Time reduced from 32.7 seconds to 16.5 seconds, which is 2X faster. For more details, please refer to patch 3's description. Limitations: - It can not supply a callgraph. - It requires setting a fixed period. - It cannot supply a time stamp. - To supply a TID it requires flushing on context switch. If the above requirement doesn't apply, the threshold will set to one. Collisions: When PEBS events happen near to each other, the records for the events can be collapsed into a single one, and it's not possible to reconstruct. When collision happens, we drop the PEBS record. Actually, collisions are extremely rare as long as different events are used. We once tested the worst case with four frequently occurring events (cycles:p,instructions:p,branches:p,mem-stores:p). The collisions rate is only 0.34%. The only way you can get a lot of collision is when you count the same thing multiple times. But it is not a useful configuration. For details about collisions, please refer to patch 4's description. changes since v1: - drop patch 'perf, core: Add all PMUs to pmu_idr' - add comments for case that multiple counters overflow simultaneously changes since v2: - rename perf_sched_cb_{enable,disable} to perf_sched_cb_user_{inc,dec} - use flag to indicate auto reload mechanism - move codes that setup PEBS sample data to separate function - output the PEBS records in batch - enable this for All (PEBS capable) hardware - more description for the multiplex changes since v3: - ignore conflicting PEBS record changes since v4: - Do more tests for collision and update comments Yan, Zheng (6): perf, x86: use the PEBS auto reload mechanism when possible perf, x86: introduce setup_pebs_sample_data() perf, x86: large PEBS interrupt threshold perf, x86: handle multiple records in PEBS buffer perf, x86: drain PEBS buffer during context switch perf, x86: enlarge PEBS buffer arch/x86/kernel/cpu/perf_event.c | 15 +- arch/x86/kernel/cpu/perf_event.h | 5 +- arch/x86/kernel/cpu/perf_event_intel.c | 11 +- arch/x86/kernel/cpu/perf_event_intel_ds.c | 283 ++++++++++++++++++++--------- arch/x86/kernel/cpu/perf_event_intel_lbr.c | 3 - 5 files changed, 224 insertions(+), 93 deletions(-) -- 1.8.3.2 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/