Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753172AbdLEWk7 (ORCPT ); Tue, 5 Dec 2017 17:40:59 -0500 Received: from mga14.intel.com ([192.55.52.115]:31183 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753030AbdLEWkF (ORCPT ); Tue, 5 Dec 2017 17:40:05 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,365,1508828400"; d="scan'208";a="1252269879" From: kan.liang@intel.com To: acme@kernel.org, peterz@infradead.org, mingo@redhat.com, linux-kernel@vger.kernel.org Cc: jolsa@kernel.org, wangnan0@huawei.com, namhyung@kernel.org, ak@linux.intel.com, Kan Liang Subject: [PATCH 5/5] perf top: check the latency of perf_top__mmap_read Date: Tue, 5 Dec 2017 14:39:15 -0800 Message-Id: <1512513555-118798-6-git-send-email-kan.liang@intel.com> X-Mailer: git-send-email 2.5.5 In-Reply-To: <1512513555-118798-1-git-send-email-kan.liang@intel.com> References: <1512513555-118798-1-git-send-email-kan.liang@intel.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1290 Lines: 40 From: Kan Liang The latency of perf_top__mmap_read should be lower than refresh time. If not, give some hints to reduce the latency. Signed-off-by: Kan Liang --- tools/perf/builtin-top.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c index 721d786..f36936c 100644 --- a/tools/perf/builtin-top.c +++ b/tools/perf/builtin-top.c @@ -872,13 +872,23 @@ static void perf_top__mmap_read_idx(struct perf_top *top, int idx) static void perf_top__mmap_read(struct perf_top *top) { + unsigned long long start, end; int i; + start = rdclock(); perf_evlist__toggle_bkw_mmap(top->evlist, BKW_MMAP_DATA_PENDING); for (i = 0; i < top->evlist->nr_mmaps; i++) perf_top__mmap_read_idx(top, i); perf_evlist__toggle_bkw_mmap(top->evlist, BKW_MMAP_EMPTY); perf_evlist__toggle_bkw_mmap(top->evlist, BKW_MMAP_RUNNING); + end = rdclock(); + + if ((end - start) > (unsigned long long)top->delay_secs * NSEC_PER_SEC) + ui__warning("Too slow to read ring buffer.\n" + "Please try increasing the period (-c) or\n" + "decreasing the freq (-F) or\n" + "limiting the number of CPUs (-C)\n"); + } static int perf_top__start_counters(struct perf_top *top) -- 2.5.5