From nobody Wed Jul 1 01:54:19 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 53024C433F5 for ; Tue, 4 Jan 2022 18:21:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236225AbiADSVB (ORCPT ); Tue, 4 Jan 2022 13:21:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52076 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236218AbiADSVA (ORCPT ); Tue, 4 Jan 2022 13:21:00 -0500 Received: from mail-pf1-x42c.google.com (mail-pf1-x42c.google.com [IPv6:2607:f8b0:4864:20::42c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D69E8C061761 for ; Tue, 4 Jan 2022 10:20:59 -0800 (PST) Received: by mail-pf1-x42c.google.com with SMTP id 205so32959109pfu.0 for ; Tue, 04 Jan 2022 10:20:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/OgD+1kWhVDFGsOMLPv8+TTwuz9ad9aYKJ0zjiXSkOw=; b=c1UJvf+1WNbPluWHI7jTeUsM9FNF2WuV8o1AU8v51YBuqXZaZHh6mktbGTpyHIBLG2 Ju3R5gX5TqUbtZ0WjZLBpY2Nhb46wkT2Om377m17/Aooy9CWJfBgR9zhgVlMEuhqVZJo fvTPFoClTnVYpYXfQnvCO1+MNpHPlaTW09FTJ6Hgua34S6sqacUjYi/NAKWO3keerjWO eDsWIiO7VfMnMQ6QsljwQTMGYMMK1Drs1oMJPKrCyVWpoPsZEOgd6cWzNCu6FAk/MWO2 OEhfGmamZ45nsQrTULyYIuJtlItkJVKbeiNbinr4b5cwQoaRcbnaBJd9a2bqPK/2Ko/t VryQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=/OgD+1kWhVDFGsOMLPv8+TTwuz9ad9aYKJ0zjiXSkOw=; b=PcaI2XuMH4/GgAhJNtIi0NTRii7vOm2k5NAzCsEKott66T6xlkZpeG4m+sKk/C0m1c /sPcx/Yht7smOzQunKqRUBE3fOF5p+cqE0oYZUtTiFBF7/ETWyqLV8yWfcFpxD7qbei2 U4ZHUtJaVbGmtq4na7lIganju5hELNH/wMry+qfboLqmIAr7CYgJnFkeBD1Sizg5aD/c nIxf25mSMHcUYnaULrJeFreu2y1Bowc46MXacL+emJ077Bvrg8cApctMTMjJzkk5yVDf Sa8ZYd6ofp5h7DaHvpheGYv+9/iibidhUKwQtHDHKhD9SV3f0wtjkC0cytFy4iV+ehP4 yQZA== X-Gm-Message-State: AOAM530kfdUF8V+3QYBnZaoMh5Pjt8NqaS5CbAwHmzUxMJEcuKKBxHbQ OaWnHDb+UZPy4ffL3UVxlGE= X-Google-Smtp-Source: ABdhPJz0bOUlSC1tglohlS2ZiCy+5vfa51TXk1QhKtfVGC2wFKwAJvYGbgMZK/JpSfwB80uy1SR0DQ== X-Received: by 2002:aa7:9298:0:b0:4ba:7d3a:1742 with SMTP id j24-20020aa79298000000b004ba7d3a1742mr51519275pfa.62.1641320459321; Tue, 04 Jan 2022 10:20:59 -0800 (PST) Received: from balhae.hsd1.ca.comcast.net ([2601:647:4800:c6f0:4abf:2548:40ff:6d1]) by smtp.gmail.com with ESMTPSA id g10sm10097684pfo.103.2022.01.04.10.20.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Jan 2022 10:20:58 -0800 (PST) Sender: Namhyung Kim From: Namhyung Kim To: Arnaldo Carvalho de Melo , Jiri Olsa Cc: Ingo Molnar , Peter Zijlstra , LKML , Andi Kleen , Ian Rogers Subject: [PATCH 1/6] perf lock: Convert lockhash_table to use hlist Date: Tue, 4 Jan 2022 10:20:49 -0800 Message-Id: <20220104182054.25009-2-namhyung@kernel.org> X-Mailer: git-send-email 2.34.1.448.ga2b2bfdf31-goog In-Reply-To: <20220104182054.25009-1-namhyung@kernel.org> References: <20220104182054.25009-1-namhyung@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The hlist_head has a single entry so we can save some memory. Signed-off-by: Namhyung Kim Acked-by: Jiri Olsa --- tools/perf/builtin-lock.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c index d70131b7b1b1..43139166f02e 100644 --- a/tools/perf/builtin-lock.c +++ b/tools/perf/builtin-lock.c @@ -38,13 +38,13 @@ static struct perf_session *session; #define LOCKHASH_BITS 12 #define LOCKHASH_SIZE (1UL << LOCKHASH_BITS) =20 -static struct list_head lockhash_table[LOCKHASH_SIZE]; +static struct hlist_head lockhash_table[LOCKHASH_SIZE]; =20 #define __lockhashfn(key) hash_long((unsigned long)key, LOCKHASH_BITS) #define lockhashentry(key) (lockhash_table + __lockhashfn((key))) =20 struct lock_stat { - struct list_head hash_entry; + struct hlist_node hash_entry; struct rb_node rb; /* used for sorting */ =20 /* @@ -317,10 +317,10 @@ static struct lock_stat *pop_from_result(void) =20 static struct lock_stat *lock_stat_findnew(void *addr, const char *name) { - struct list_head *entry =3D lockhashentry(addr); + struct hlist_head *entry =3D lockhashentry(addr); struct lock_stat *ret, *new; =20 - list_for_each_entry(ret, entry, hash_entry) { + hlist_for_each_entry(ret, entry, hash_entry) { if (ret->addr =3D=3D addr) return ret; } @@ -339,7 +339,7 @@ static struct lock_stat *lock_stat_findnew(void *addr, = const char *name) strcpy(new->name, name); new->wait_time_min =3D ULLONG_MAX; =20 - list_add(&new->hash_entry, entry); + hlist_add_head(&new->hash_entry, entry); return new; =20 alloc_failed: @@ -781,7 +781,7 @@ static void dump_map(void) =20 pr_info("Address of instance: name of class\n"); for (i =3D 0; i < LOCKHASH_SIZE; i++) { - list_for_each_entry(st, &lockhash_table[i], hash_entry) { + hlist_for_each_entry(st, &lockhash_table[i], hash_entry) { pr_info(" %p: %s\n", st->addr, st->name); } } @@ -838,7 +838,7 @@ static void sort_result(void) struct lock_stat *st; =20 for (i =3D 0; i < LOCKHASH_SIZE; i++) { - list_for_each_entry(st, &lockhash_table[i], hash_entry) { + hlist_for_each_entry(st, &lockhash_table[i], hash_entry) { insert_to_result(st, compare); } } @@ -990,7 +990,7 @@ int cmd_lock(int argc, const char **argv) int rc =3D 0; =20 for (i =3D 0; i < LOCKHASH_SIZE; i++) - INIT_LIST_HEAD(lockhash_table + i); + INIT_HLIST_HEAD(lockhash_table + i); =20 argc =3D parse_options_subcommand(argc, argv, lock_options, lock_subcomma= nds, lock_usage, PARSE_OPT_STOP_AT_NON_OPTION); --=20 2.34.1.448.ga2b2bfdf31-goog From nobody Wed Jul 1 01:54:19 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 59246C433F5 for ; Tue, 4 Jan 2022 18:21:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236256AbiADSVH (ORCPT ); Tue, 4 Jan 2022 13:21:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52078 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236226AbiADSVB (ORCPT ); Tue, 4 Jan 2022 13:21:01 -0500 Received: from mail-pg1-x52b.google.com (mail-pg1-x52b.google.com [IPv6:2607:f8b0:4864:20::52b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3CF59C061761 for ; Tue, 4 Jan 2022 10:21:01 -0800 (PST) Received: by mail-pg1-x52b.google.com with SMTP id x194so10201668pgx.4 for ; Tue, 04 Jan 2022 10:21:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=VYq5HaT8fh+HA5zuj+et2czeHhoMoR0tY8OEaaIg5MI=; b=F8wUQUCjJemjck11oIO14hEdefVCIdTZ2lXCjc1Qvha/r4mFP/DP8O+9G3zro09DLv M0/Qx0/iLj2m5P8J8uzwbGT7U5v2ukgJJyWyAC+pFReRfl0smE4RRkpQQc6PMCa8FKOD g6OHlWZqZbCb9PCL5fFU+mnyXO8x3GuzC8/Omy0MJKExwBkheAhbZKJG6WGiquDNzQfE ZqnrSOIkMOwxsy1Ix2Nv+SdWEFgEopoR2ovawIf/snTF3wZ1kP3L478+BuTfBfiJFl65 ms3Y3Xhp8adsH4AYpkVEiwTpY5frydWPP7ZS5GLztllbmp9JPPUoHq/gI4kVfMzg+SIx cwFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=VYq5HaT8fh+HA5zuj+et2czeHhoMoR0tY8OEaaIg5MI=; b=oG+XnAh6ok5xJLAZJzIWui+dQJztHs0tsW0/Aux3J5jQP/4xhr4MNiewHbmvoYvpIP iP0uOu60FeQFS6BXtD663oCm7BmhFQOOFz5j7q/35nA0i8w7O8a0PnB7fblezr+70X14 417KgPZdFAYq+bvT+A2z6GLrYjHZriyo8O9+ZdOuBSnqSRLBVqt+boht3iYm29MeIwAR Ev8cTtMEFSFSXBiIDtr7u5kHrI3T26Y6az0f1SrPZsYrg1ZQpwT5b01EMD6BOVnet6Dg 3Ww5zWNxcjzxypkbuKN8Sn183HH/HTsTXnUGGYvpykosppsuZZsABfhkTWA7fy5b26DI gzog== X-Gm-Message-State: AOAM533Yqoy5MMb6B5yAaVkB+miBGlDsKkT+rVw5l+nfXCXJlZC/0pgI AvlYwfU0AMnO78WqyUvpjaA= X-Google-Smtp-Source: ABdhPJz+vw6o44p1+lP4OPQhSszRz3b4lElAvTGnwnlHjUUWZInpW+xTt6N+2rbcH2bvhEiRi2iUyg== X-Received: by 2002:a05:6a00:1386:b0:4ba:b454:70bc with SMTP id t6-20020a056a00138600b004bab45470bcmr51639379pfg.19.1641320460625; Tue, 04 Jan 2022 10:21:00 -0800 (PST) Received: from balhae.hsd1.ca.comcast.net ([2601:647:4800:c6f0:4abf:2548:40ff:6d1]) by smtp.gmail.com with ESMTPSA id g10sm10097684pfo.103.2022.01.04.10.20.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Jan 2022 10:21:00 -0800 (PST) Sender: Namhyung Kim From: Namhyung Kim To: Arnaldo Carvalho de Melo , Jiri Olsa Cc: Ingo Molnar , Peter Zijlstra , LKML , Andi Kleen , Ian Rogers Subject: [PATCH 2/6] perf lock: Change type of lock_stat->addr to u64 Date: Tue, 4 Jan 2022 10:20:50 -0800 Message-Id: <20220104182054.25009-3-namhyung@kernel.org> X-Mailer: git-send-email 2.34.1.448.ga2b2bfdf31-goog In-Reply-To: <20220104182054.25009-1-namhyung@kernel.org> References: <20220104182054.25009-1-namhyung@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" As evsel__intval() returns u64, we can just use it as is. Signed-off-by: Namhyung Kim Acked-by: Jiri Olsa --- tools/perf/builtin-lock.c | 35 +++++++++-------------------------- 1 file changed, 9 insertions(+), 26 deletions(-) diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c index 43139166f02e..c4b5c3d71ae3 100644 --- a/tools/perf/builtin-lock.c +++ b/tools/perf/builtin-lock.c @@ -47,12 +47,7 @@ struct lock_stat { struct hlist_node hash_entry; struct rb_node rb; /* used for sorting */ =20 - /* - * FIXME: evsel__intval() returns u64, - * so address of lockdep_map should be treated as 64bit. - * Is there more better solution? - */ - void *addr; /* address of lockdep_map, used as ID */ + u64 addr; /* address of lockdep_map, used as ID */ char *name; /* for strcpy(), we cannot use const */ =20 unsigned int nr_acquire; @@ -106,7 +101,7 @@ struct lock_seq_stat { struct list_head list; int state; u64 prev_event_time; - void *addr; + u64 addr; =20 int read_count; }; @@ -315,7 +310,7 @@ static struct lock_stat *pop_from_result(void) return container_of(node, struct lock_stat, rb); } =20 -static struct lock_stat *lock_stat_findnew(void *addr, const char *name) +static struct lock_stat *lock_stat_findnew(u64 addr, const char *name) { struct hlist_head *entry =3D lockhashentry(addr); struct lock_stat *ret, *new; @@ -361,7 +356,7 @@ struct trace_lock_handler { struct perf_sample *sample); }; =20 -static struct lock_seq_stat *get_seq(struct thread_stat *ts, void *addr) +static struct lock_seq_stat *get_seq(struct thread_stat *ts, u64 addr) { struct lock_seq_stat *seq; =20 @@ -400,16 +395,13 @@ enum acquire_flags { static int report_lock_acquire_event(struct evsel *evsel, struct perf_sample *sample) { - void *addr; struct lock_stat *ls; struct thread_stat *ts; struct lock_seq_stat *seq; const char *name =3D evsel__strval(evsel, sample, "name"); - u64 tmp =3D evsel__intval(evsel, sample, "lockdep_addr"); + u64 addr =3D evsel__intval(evsel, sample, "lockdep_addr"); int flag =3D evsel__intval(evsel, sample, "flags"); =20 - memcpy(&addr, &tmp, sizeof(void *)); - ls =3D lock_stat_findnew(addr, name); if (!ls) return -ENOMEM; @@ -472,15 +464,12 @@ static int report_lock_acquire_event(struct evsel *ev= sel, static int report_lock_acquired_event(struct evsel *evsel, struct perf_sample *sample) { - void *addr; struct lock_stat *ls; struct thread_stat *ts; struct lock_seq_stat *seq; u64 contended_term; const char *name =3D evsel__strval(evsel, sample, "name"); - u64 tmp =3D evsel__intval(evsel, sample, "lockdep_addr"); - - memcpy(&addr, &tmp, sizeof(void *)); + u64 addr =3D evsel__intval(evsel, sample, "lockdep_addr"); =20 ls =3D lock_stat_findnew(addr, name); if (!ls) @@ -535,14 +524,11 @@ static int report_lock_acquired_event(struct evsel *e= vsel, static int report_lock_contended_event(struct evsel *evsel, struct perf_sample *sample) { - void *addr; struct lock_stat *ls; struct thread_stat *ts; struct lock_seq_stat *seq; const char *name =3D evsel__strval(evsel, sample, "name"); - u64 tmp =3D evsel__intval(evsel, sample, "lockdep_addr"); - - memcpy(&addr, &tmp, sizeof(void *)); + u64 addr =3D evsel__intval(evsel, sample, "lockdep_addr"); =20 ls =3D lock_stat_findnew(addr, name); if (!ls) @@ -590,14 +576,11 @@ static int report_lock_contended_event(struct evsel *= evsel, static int report_lock_release_event(struct evsel *evsel, struct perf_sample *sample) { - void *addr; struct lock_stat *ls; struct thread_stat *ts; struct lock_seq_stat *seq; const char *name =3D evsel__strval(evsel, sample, "name"); - u64 tmp =3D evsel__intval(evsel, sample, "lockdep_addr"); - - memcpy(&addr, &tmp, sizeof(void *)); + u64 addr =3D evsel__intval(evsel, sample, "lockdep_addr"); =20 ls =3D lock_stat_findnew(addr, name); if (!ls) @@ -782,7 +765,7 @@ static void dump_map(void) pr_info("Address of instance: name of class\n"); for (i =3D 0; i < LOCKHASH_SIZE; i++) { hlist_for_each_entry(st, &lockhash_table[i], hash_entry) { - pr_info(" %p: %s\n", st->addr, st->name); + pr_info(" %#llx: %s\n", (unsigned long long)st->addr, st->name); } } } --=20 2.34.1.448.ga2b2bfdf31-goog From nobody Wed Jul 1 01:54:19 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9B600C433EF for ; Tue, 4 Jan 2022 18:21:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236267AbiADSVJ (ORCPT ); Tue, 4 Jan 2022 13:21:09 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52088 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236228AbiADSVC (ORCPT ); Tue, 4 Jan 2022 13:21:02 -0500 Received: from mail-pj1-x102e.google.com (mail-pj1-x102e.google.com [IPv6:2607:f8b0:4864:20::102e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5479EC061761 for ; Tue, 4 Jan 2022 10:21:02 -0800 (PST) Received: by mail-pj1-x102e.google.com with SMTP id c9-20020a17090a1d0900b001b2b54bd6c5so364718pjd.1 for ; Tue, 04 Jan 2022 10:21:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=du0kP2g3DV9DZIF37rK7vx3EiH2Uy3OksrZnmSe6Oic=; b=n7dpMBqwTJTQUOKOwmCU3Iaa2isYr0Wt1s9EYydlLX5jTv4QxviavvZTobGHYYb3eg pqvHtf+78h4KG6Yp0KIs2XOMzHC8gZEdJztPK54F/IbwCkYtFcPKwxXlraMQv4uOA7d4 XYN0lng2Vd54tF3oX7i3iiZJYz3OiTApb5s4tMWLyzuxUqez/X7TZfPG428AvU4f4VzS 19/Kl68djCtX+LDqSGEgfrRijH1HZEbkCO6Gcrbn1TqH37IiFWALkuW5ac8Es0gKAKth vGGX5vP7yvfg30f+O95hhPpFNiyXxWt3LyM8y9qSKBEavmnqMciZ2FzIhcdEbpPPOLBQ AtpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=du0kP2g3DV9DZIF37rK7vx3EiH2Uy3OksrZnmSe6Oic=; b=hVIM08j5CsILh1VxGVAnZHhRuF21Yfte4es1nitQVivW+En6UGKPRFEXLLmWzWYa6E vsXgocMvbc2ihHt/Y8vbUQYY4gDfnmx3mQS0BKkIYf5Dkk5zTb5hsiZoJA3qqFy5FPeo zjxtNPmJ2u0rIsr1HnnViUzIdSu21i3Y/mblOE99bOz5sk44/YfMcZvKos82NyFgc9MU EzUZomhiVv7++vvixMUwaEVMfrmcDQnTNYQaDkbyQR8UZxHkikRxHgNKkKll9lsV2tgK lJDm/8RCuG0Xd53+ywQHCJ9BNT0UuWQex7FMWHSGIJvTEEb5HQT7Lw3Y3tKS6wyKhkVY CLug== X-Gm-Message-State: AOAM531q9cP3eIs+GfLQEKCUw0vikqIJIRNy5p9mNJn5NIwdwIapnphB KXnQelMqpY5gEzwqaX55Dog= X-Google-Smtp-Source: ABdhPJyZQ4elidmmgIRebnwH7IlofeqFCS34KUOnP+Puk+4rlWjpJ3EM0pWKCCrBdZh9/Ge36jayDg== X-Received: by 2002:a17:902:9a8b:b0:149:be04:40ab with SMTP id w11-20020a1709029a8b00b00149be0440abmr9261236plp.159.1641320461895; Tue, 04 Jan 2022 10:21:01 -0800 (PST) Received: from balhae.hsd1.ca.comcast.net ([2601:647:4800:c6f0:4abf:2548:40ff:6d1]) by smtp.gmail.com with ESMTPSA id g10sm10097684pfo.103.2022.01.04.10.21.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Jan 2022 10:21:01 -0800 (PST) Sender: Namhyung Kim From: Namhyung Kim To: Arnaldo Carvalho de Melo , Jiri Olsa Cc: Ingo Molnar , Peter Zijlstra , LKML , Andi Kleen , Ian Rogers Subject: [PATCH 3/6] perf lock: Sort map info based on class name Date: Tue, 4 Jan 2022 10:20:51 -0800 Message-Id: <20220104182054.25009-4-namhyung@kernel.org> X-Mailer: git-send-email 2.34.1.448.ga2b2bfdf31-goog In-Reply-To: <20220104182054.25009-1-namhyung@kernel.org> References: <20220104182054.25009-1-namhyung@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Instead of the random order, sort it by lock class name. Before: # perf lock info -m Address of instance: name of class 0xffffa0d940ac5310: &dentry->d_lockref.lock 0xffffa0c20b0e1cb0: &dentry->d_lockref.lock 0xffffa0d8e051cc48: &base->lock 0xffffa0d94f992110: &anon_vma->rwsem 0xffffa0d947a4f278: (null) 0xffffa0c208f6e108: &map->lock 0xffffa0c213ad32c8: &cfs_rq->removed.lock 0xffffa0c20d695888: &parent->list_lock 0xffffa0c278775278: (null) 0xffffa0c212ad4690: &dentry->d_lockref.lock After: # perf lock info -m Address of instance: name of class 0xffffa0c20d538800: &(&sig->stats_lock)->lock 0xffffa0c216d4ec40: &(&sig->stats_lock)->lock 0xffffa1fe4cb04610: &(__futex_data.queues)[i].lock 0xffffa1fe4cb07750: &(__futex_data.queues)[i].lock 0xffffa1fe4cb07b50: &(__futex_data.queues)[i].lock 0xffffa1fe4cb0b850: &(__futex_data.queues)[i].lock 0xffffa1fe4cb0bcd0: &(__futex_data.queues)[i].lock 0xffffa1fe4cb0e5d0: &(__futex_data.queues)[i].lock 0xffffa1fe4cb11ad0: &(__futex_data.queues)[i].lock Signed-off-by: Namhyung Kim Acked-by: Jiri Olsa --- tools/perf/builtin-lock.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c index c4b5c3d71ae3..8078f7ca826d 100644 --- a/tools/perf/builtin-lock.c +++ b/tools/perf/builtin-lock.c @@ -757,6 +757,21 @@ static void dump_threads(void) } } =20 +static int compare_maps(struct lock_stat *a, struct lock_stat *b) +{ + int ret; + + if (a->name && b->name) + ret =3D strcmp(a->name, b->name); + else + ret =3D !!a->name - !!b->name; + + if (!ret) + return a->addr < b->addr; + else + return ret < 0; +} + static void dump_map(void) { unsigned int i; @@ -765,9 +780,12 @@ static void dump_map(void) pr_info("Address of instance: name of class\n"); for (i =3D 0; i < LOCKHASH_SIZE; i++) { hlist_for_each_entry(st, &lockhash_table[i], hash_entry) { - pr_info(" %#llx: %s\n", (unsigned long long)st->addr, st->name); + insert_to_result(st, compare_maps); } } + + while ((st =3D pop_from_result())) + pr_info(" %#llx: %s\n", (unsigned long long)st->addr, st->name); } =20 static int dump_info(void) --=20 2.34.1.448.ga2b2bfdf31-goog From nobody Wed Jul 1 01:54:19 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1358FC433FE for ; Tue, 4 Jan 2022 18:21:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234629AbiADSVM (ORCPT ); Tue, 4 Jan 2022 13:21:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52094 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236234AbiADSVD (ORCPT ); Tue, 4 Jan 2022 13:21:03 -0500 Received: from mail-pl1-x635.google.com (mail-pl1-x635.google.com [IPv6:2607:f8b0:4864:20::635]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A945CC061785 for ; Tue, 4 Jan 2022 10:21:03 -0800 (PST) Received: by mail-pl1-x635.google.com with SMTP id l16so15549430plg.10 for ; Tue, 04 Jan 2022 10:21:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=pKbtzICId2uICwEkwx+p0HAn0GNZyEflyRo/XXiWqDw=; b=B5NqPBN5UjblOonRZlos8ugVoqidC5gz6h4urMR4FwO7XUVSsKLK51vS3MZOq2AJpO jf4F1unQIOs7ATHXvVcwnKkk3ElzeoWf9NzzyroNgD2xq50xMbQLkCcevPVOuk6xDz29 2GwkmqgYs+/Ug4nxfISJCw7h6QW2qIapC0YKjtYG7u12fJt4sYLhgjI3cn9jYs4rVc8J 5idxy8EwnsAsduLn3CTcv/NQUBOuX+AnIeTwaBroPFTHtPGkRlcFYYDir8A1AcE+6Km5 1VGSNFqN0ZlqE92xD1mVZg8kbvXgXNTaI3+S6ooavVhIkwEZW4tMHF6xCILmMVy31CHC PBCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=pKbtzICId2uICwEkwx+p0HAn0GNZyEflyRo/XXiWqDw=; b=KOScDWo5RKN8qlUtrvfZo9ANBp+pHje+9QkfT/Q6L1+bXCGqxDMcxTsA8e9e6dE4kw CE1q+jEKMOSvcdxm0RuD7v949Vy3o/agYTeYPxl6bNRUHw1my4LEOXqdA8MM/dblndoN KMqYYmXKS9lzylzd8H0VTrBmEtBQG43Ik2oRKvSPvYjh3rNwHD0V+ti2Kre/6tMopP8B mZVMjGYOTdYOQTO05asS+HkX8l7YmZAwuss9Dpym1wkffu7BpbHd6tt7elNSbhHBZ327 HctGgFu1WVDDVNw6ASj822+bQwMwmKB47lKjws7x5MXuWCvZRjK42I66FfhB859ZBwVl mVcg== X-Gm-Message-State: AOAM530hE6MFDn0UJVOh8R7QNyQBcQdlOEs9EAn7OQEWhRvmOCUHWG/t 6E9hqfTa1CP3/DagJtrME1o= X-Google-Smtp-Source: ABdhPJwCLbkUfjhM80kDo1vAuUE7cYhJPvX3NElsvA6/jA/dQPfFZ2+HW5io9nlLLim62Dq2YT00Zw== X-Received: by 2002:a17:90b:164f:: with SMTP id il15mr30453776pjb.155.1641320463221; Tue, 04 Jan 2022 10:21:03 -0800 (PST) Received: from balhae.hsd1.ca.comcast.net ([2601:647:4800:c6f0:4abf:2548:40ff:6d1]) by smtp.gmail.com with ESMTPSA id g10sm10097684pfo.103.2022.01.04.10.21.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Jan 2022 10:21:02 -0800 (PST) Sender: Namhyung Kim From: Namhyung Kim To: Arnaldo Carvalho de Melo , Jiri Olsa Cc: Ingo Molnar , Peter Zijlstra , LKML , Andi Kleen , Ian Rogers Subject: [PATCH 4/6] perf lock: Fix lock name length check for printing Date: Tue, 4 Jan 2022 10:20:52 -0800 Message-Id: <20220104182054.25009-5-namhyung@kernel.org> X-Mailer: git-send-email 2.34.1.448.ga2b2bfdf31-goog In-Reply-To: <20220104182054.25009-1-namhyung@kernel.org> References: <20220104182054.25009-1-namhyung@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" It has 20 character spaces for name so lock names shorter than 20 should be printed without ellipsis. Before: # perf lock report Name acquired contended avg wait (ns) total wait (ns) = max wait (ns) min wait (ns) rcu_read_lock 251225 0 0 0 = 0 0 &(ei->i_block_re... 8731 0 0 0 = 0 0 &sb->s_type->i_l... 8731 0 0 0 = 0 0 hrtimer_bases.lo... 5261 0 0 0 = 0 0 hrtimer_bases.lo... 2626 0 0 0 = 0 0 hrtimer_bases.lo... 1953 0 0 0 = 0 0 hrtimer_bases.lo... 1382 0 0 0 = 0 0 cpu_hotplug_lock... 1350 0 0 0 = 0 0 After: # perf lock report Name acquired contended avg wait (ns) total wait (ns) = max wait (ns) min wait (ns) rcu_read_lock 251225 0 0 0 = 0 0 &(ei->i_block_re... 8731 0 0 0 = 0 0 &sb->s_type->i_l... 8731 0 0 0 = 0 0 hrtimer_bases.lock 5261 0 0 0 = 0 0 hrtimer_bases.lock 2626 0 0 0 = 0 0 hrtimer_bases.lock 1953 0 0 0 = 0 0 hrtimer_bases.lock 1382 0 0 0 = 0 0 cpu_hotplug_lock 1350 0 0 0 = 0 0 Signed-off-by: Namhyung Kim Acked-by: Jiri Olsa --- tools/perf/builtin-lock.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c index 8078f7ca826d..f6adf3cdd1e2 100644 --- a/tools/perf/builtin-lock.c +++ b/tools/perf/builtin-lock.c @@ -710,7 +710,7 @@ static void print_result(void) } bzero(cut_name, 20); =20 - if (strlen(st->name) < 16) { + if (strlen(st->name) < 20) { /* output raw name */ pr_info("%20s ", st->name); } else { --=20 2.34.1.448.ga2b2bfdf31-goog From nobody Wed Jul 1 01:54:19 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CE261C433F5 for ; Tue, 4 Jan 2022 18:21:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236232AbiADSVP (ORCPT ); Tue, 4 Jan 2022 13:21:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52104 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236245AbiADSVF (ORCPT ); Tue, 4 Jan 2022 13:21:05 -0500 Received: from mail-pg1-x52f.google.com (mail-pg1-x52f.google.com [IPv6:2607:f8b0:4864:20::52f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0E259C06179B for ; Tue, 4 Jan 2022 10:21:05 -0800 (PST) Received: by mail-pg1-x52f.google.com with SMTP id y9so4900774pgr.11 for ; Tue, 04 Jan 2022 10:21:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=MH2/l/XaIDENocS0eiJpofOumdFMx8cfyENMyQr+bzw=; b=blZxsP+Z5s4y1NYHc2CCHBNyXLHlMkz3gd+KptbZn3+oy0SJ/Qmk7uxPCjmEA9FVLW GFXBEB7V5XqPUWjTKZEoNW2aczbMcaomUN2qSTfUfv2yLdD1LPH/TSYelwfFcB+f3kPZ gXAEPtUJWuRBzSjDcCJCP0Mq52wb/opb6ooR5gpgKICZWrQpA/CMS3P1Q0Qxw+7sFtjm aXPMqpmDl8jU4DIMDiL2R2Kg0NRMYVbz7nwEqs05mXfua0K6AZt34Ww2tlziZq8DYvq/ aqwuyBKnKegwDUOD0t0jUCkX1OoM9CLsw7mx2UTs690as8WvcQKtRSoQaOKlpeFsdndO oYVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=MH2/l/XaIDENocS0eiJpofOumdFMx8cfyENMyQr+bzw=; b=H47Hjw8m7r5pJPfh7UPruk/PweR5EUBfXSEvv2A85OKr4TS/AREvRkXdv/Fhj/TzPp Yd4rwMuGQi32gUVPIJ5GKlI51ppG5UtxQ/TvUBswy8yuXXnUe5Go62WRwqG/CS9dkH89 vc+bJRklLoRd6paYmg1ZOTEDelsGXIz31/rwkNQL+nKn+/KCs+xvpR0qBMtW3D7yre7N DR3HFuZzTj2uOwxUzV8fiT0QIxWUm1wXPLJWi1bDBttsmt6boWV7dXJb17tM3Hem6sGQ qhfeF+Nmv7xwpH+nGqXOrLn+vMlw8xjjbRK09CkgHa79gKFeITBbSgO49YasugnecirT gP2w== X-Gm-Message-State: AOAM530eJz9IyL36ZgNWaFUoeabMLQ2A498FnqPGmvWX0P9KitYQyc6Y 9yn94PUZC1nKtRV6PIdWdoE= X-Google-Smtp-Source: ABdhPJye4BBRfYBsKA8bgowl/YjW9rPtL5TpLcl3mmyVBxf1nxhraXx2ksNL1ofyukDBq9PV2DpJHg== X-Received: by 2002:a63:7983:: with SMTP id u125mr36769622pgc.569.1641320464518; Tue, 04 Jan 2022 10:21:04 -0800 (PST) Received: from balhae.hsd1.ca.comcast.net ([2601:647:4800:c6f0:4abf:2548:40ff:6d1]) by smtp.gmail.com with ESMTPSA id g10sm10097684pfo.103.2022.01.04.10.21.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Jan 2022 10:21:04 -0800 (PST) Sender: Namhyung Kim From: Namhyung Kim To: Arnaldo Carvalho de Melo , Jiri Olsa Cc: Ingo Molnar , Peter Zijlstra , LKML , Andi Kleen , Ian Rogers Subject: [PATCH 5/6] perf lock: Add -c/--combine-locks option Date: Tue, 4 Jan 2022 10:20:53 -0800 Message-Id: <20220104182054.25009-6-namhyung@kernel.org> X-Mailer: git-send-email 2.34.1.448.ga2b2bfdf31-goog In-Reply-To: <20220104182054.25009-1-namhyung@kernel.org> References: <20220104182054.25009-1-namhyung@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The -c or --combine-locks option is to merge lock instances in the same class into a single entry. It compares the name of the locks and marks duplicated entries using lock_stat->combined. # perf lock report Name acquired contended avg wait (ns) total wait (ns) = max wait (ns) min wait (ns) rcu_read_lock 251225 0 0 0 = 0 0 &(ei->i_block_re... 8731 0 0 0 = 0 0 &sb->s_type->i_l... 8731 0 0 0 = 0 0 hrtimer_bases.lock 5261 0 0 0 = 0 0 hrtimer_bases.lock 2626 0 0 0 = 0 0 hrtimer_bases.lock 1953 0 0 0 = 0 0 hrtimer_bases.lock 1382 0 0 0 = 0 0 cpu_hotplug_lock 1350 0 0 0 = 0 0 hrtimer_bases.lock 1273 0 0 0 = 0 0 hrtimer_bases.lock 1269 0 0 0 = 0 0 # perf lock report -c Name acquired contended avg wait (ns) total wait (ns) = max wait (ns) min wait (ns) rcu_read_lock 251225 0 0 0 = 0 0 hrtimer_bases.lock 39450 0 0 0 = 0 0 &sb->s_type->i_l... 10301 1 662 662 = 662 662 ptlock_ptr(page) 10173 2 701 1402 = 760 642 &(ei->i_block_re... 8732 0 0 0 = 0 0 &xa->xa_lock 8088 0 0 0 = 0 0 &base->lock 6705 0 0 0 = 0 0 &p->pi_lock 5549 0 0 0 = 0 0 &dentry->d_lockr... 5010 4 1274 5097 = 1844 789 &ep->lock 3958 0 0 0 = 0 0 Signed-off-by: Namhyung Kim Acked-by: Jiri Olsa --- tools/perf/Documentation/perf-lock.txt | 4 ++ tools/perf/builtin-lock.c | 68 ++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) diff --git a/tools/perf/Documentation/perf-lock.txt b/tools/perf/Documentat= ion/perf-lock.txt index 1b4d452923d7..f5eb95788969 100644 --- a/tools/perf/Documentation/perf-lock.txt +++ b/tools/perf/Documentation/perf-lock.txt @@ -54,6 +54,10 @@ REPORT OPTIONS Sorting key. Possible values: acquired (default), contended, avg_wait, wait_total, wait_max, wait_min. =20 +-c:: +--combine-locks:: + Merge lock instances in the same class (based on name). + INFO OPTIONS ------------ =20 diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c index f6adf3cdd1e2..bbfeba79426a 100644 --- a/tools/perf/builtin-lock.c +++ b/tools/perf/builtin-lock.c @@ -65,6 +65,7 @@ struct lock_stat { u64 wait_time_max; =20 int discard; /* flag of blacklist */ + int combined; }; =20 /* @@ -115,6 +116,8 @@ struct thread_stat { =20 static struct rb_root thread_stats; =20 +static bool combine_locks; + static struct thread_stat *thread_stat_find(u32 tid) { struct rb_node *node; @@ -241,6 +244,7 @@ static const char *sort_key =3D "acquired"; =20 static int (*compare)(struct lock_stat *, struct lock_stat *); =20 +static struct rb_root sorted; /* place to store intermediate data */ static struct rb_root result; /* place to store sorted data */ =20 #define DEF_KEY_LOCK(name, fn_suffix) \ @@ -274,6 +278,49 @@ static int select_key(void) return -1; } =20 +static void combine_lock_stats(struct lock_stat *st) +{ + struct rb_node **rb =3D &sorted.rb_node; + struct rb_node *parent =3D NULL; + struct lock_stat *p; + int ret; + + while (*rb) { + p =3D container_of(*rb, struct lock_stat, rb); + parent =3D *rb; + + if (st->name && p->name) + ret =3D strcmp(st->name, p->name); + else + ret =3D !!st->name - !!p->name; + + if (ret =3D=3D 0) { + p->nr_acquired +=3D st->nr_acquired; + p->nr_contended +=3D st->nr_contended; + p->wait_time_total +=3D st->wait_time_total; + + if (p->nr_contended) + p->avg_wait_time =3D p->wait_time_total / p->nr_contended; + + if (p->wait_time_min > st->wait_time_min) + p->wait_time_min =3D st->wait_time_min; + if (p->wait_time_max < st->wait_time_max) + p->wait_time_max =3D st->wait_time_max; + + st->combined =3D 1; + return; + } + + if (ret < 0) + rb =3D &(*rb)->rb_left; + else + rb =3D &(*rb)->rb_right; + } + + rb_link_node(&st->rb, parent, rb); + rb_insert_color(&st->rb, &sorted); +} + static void insert_to_result(struct lock_stat *st, int (*bigger)(struct lock_stat *, struct lock_stat *)) { @@ -281,6 +328,9 @@ static void insert_to_result(struct lock_stat *st, struct rb_node *parent =3D NULL; struct lock_stat *p; =20 + if (combine_locks && st->combined) + return; + while (*rb) { p =3D container_of(*rb, struct lock_stat, rb); parent =3D *rb; @@ -833,6 +883,21 @@ static int process_sample_event(struct perf_tool *tool= __maybe_unused, return err; } =20 +static void combine_result(void) +{ + unsigned int i; + struct lock_stat *st; + + if (!combine_locks) + return; + + for (i =3D 0; i < LOCKHASH_SIZE; i++) { + hlist_for_each_entry(st, &lockhash_table[i], hash_entry) { + combine_lock_stats(st); + } + } +} + static void sort_result(void) { unsigned int i; @@ -896,6 +961,7 @@ static int __cmd_report(bool display_info) if (display_info) /* used for info subcommand */ err =3D dump_info(); else { + combine_result(); sort_result(); print_result(); } @@ -970,6 +1036,8 @@ int cmd_lock(int argc, const char **argv) OPT_STRING('k', "key", &sort_key, "acquired", "key for sorting (acquired / contended / avg_wait / wait_total / wai= t_max / wait_min)"), /* TODO: type */ + OPT_BOOLEAN('c', "combine-locks", &combine_locks, + "combine locks in the same class"), OPT_PARENT(lock_options) }; =20 --=20 2.34.1.448.ga2b2bfdf31-goog From nobody Wed Jul 1 01:54:19 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C9D22C433F5 for ; Tue, 4 Jan 2022 18:21:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236316AbiADSVT (ORCPT ); Tue, 4 Jan 2022 13:21:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52136 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236229AbiADSVK (ORCPT ); Tue, 4 Jan 2022 13:21:10 -0500 Received: from mail-pg1-x533.google.com (mail-pg1-x533.google.com [IPv6:2607:f8b0:4864:20::533]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8F3D9C061761 for ; Tue, 4 Jan 2022 10:21:06 -0800 (PST) Received: by mail-pg1-x533.google.com with SMTP id f8so23346519pgf.8 for ; Tue, 04 Jan 2022 10:21:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=fz20zPwtW6K20yLuSaMR18ADC6qHoTxZWwTE71o/muY=; b=gR2nlKtw6PBb01OYu4n4BLKq1JnlWZAmM4nMtGujhZJkkcHp9P27SluPRbGa5BrAGo daBou9AfWQEyt7zmLl/K2dTQuaUrydmvyUocVVl0jzIsYjokFC8Tnvu2lafx8uixatX3 wGzu/sIaCGexWhyUfPzhFFaLROGOoRAGqUR1f5cLIcD95ktnisKYvX5menA9R2yDa0yP Ypf9p3qwZu0qZfzY0hA9QmHHupww7DFVNxfsKtP48w9LGEYK/CgLxV5TlsxNV7K5kNgw O86YwJk58fL4XVPOu6PO3Rp4p7DBodZKipMpPQFRQM0tJp1n/JnDKDlq9CJx3H2IZVE8 KQQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=fz20zPwtW6K20yLuSaMR18ADC6qHoTxZWwTE71o/muY=; b=Q+bOr91Dly1Fl5Zi7REqHc0FWhTm6kTlYizxVQAeJBROHxN+yIA/ZvbbN8dw496+bS nfYsHj/KTXzyPX5MyhdBtA+x6eQS+1Nrp3WKF+CcbPOa0kk5HNitsNkLYO2+sOhjar+n yWJM894EuOxMeX+Nosn17grPCfojh2nCL9PAjL+ChXMmP2PxDJSa5D2WSAUH+7IUMgJ1 CJx5CKSzIXtimx4+HGOY/tugLEDC3Wj/RZNpYEHfjdDWl2VnMJeH3rMI+t9pzvQr7Aqm od0urixvjv98OH8cEVe6yEu4wCRqvqqYnksFt85jD9K0Hqxb+kUlwIzzQgPwYvoacmKO u+jQ== X-Gm-Message-State: AOAM530cfn9L5ywM4BLqk087z3H350yHM9vnFXocATxxrBt/B80ryrNJ fs9gsYmgusZOvpXwzCsczYs= X-Google-Smtp-Source: ABdhPJxlQ9nxNr+pbbCeCulywVIT1xgNeYBYDXmydEBnMKYIbV27eY5bON8dX/TWFkk/h6OGg2scjw== X-Received: by 2002:a63:ad48:: with SMTP id y8mr15868741pgo.495.1641320466051; Tue, 04 Jan 2022 10:21:06 -0800 (PST) Received: from balhae.hsd1.ca.comcast.net ([2601:647:4800:c6f0:4abf:2548:40ff:6d1]) by smtp.gmail.com with ESMTPSA id g10sm10097684pfo.103.2022.01.04.10.21.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Jan 2022 10:21:05 -0800 (PST) Sender: Namhyung Kim From: Namhyung Kim To: Arnaldo Carvalho de Melo , Jiri Olsa Cc: Ingo Molnar , Peter Zijlstra , LKML , Andi Kleen , Ian Rogers Subject: [PATCH 6/6] perf lock: Carefully combine lock stats for discarded entries Date: Tue, 4 Jan 2022 10:20:54 -0800 Message-Id: <20220104182054.25009-7-namhyung@kernel.org> X-Mailer: git-send-email 2.34.1.448.ga2b2bfdf31-goog In-Reply-To: <20220104182054.25009-1-namhyung@kernel.org> References: <20220104182054.25009-1-namhyung@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Stats from discarded entries should be omitted. But a lock class may have both good and bad entries. If the first entry was bad, we can zero-fill the stats and only add good stats if any. The entry can remove the discard state if it finds a good entry later. Signed-off-by: Namhyung Kim Acked-by: Jiri Olsa --- tools/perf/builtin-lock.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c index bbfeba79426a..57b9ebd7118a 100644 --- a/tools/perf/builtin-lock.c +++ b/tools/perf/builtin-lock.c @@ -295,6 +295,9 @@ static void combine_lock_stats(struct lock_stat *st) ret =3D !!st->name - !!p->name; =20 if (ret =3D=3D 0) { + if (st->discard) + goto out; + p->nr_acquired +=3D st->nr_acquired; p->nr_contended +=3D st->nr_contended; p->wait_time_total +=3D st->wait_time_total; @@ -307,6 +310,10 @@ static void combine_lock_stats(struct lock_stat *st) if (p->wait_time_max < st->wait_time_max) p->wait_time_max =3D st->wait_time_max; =20 + /* now it got a new !discard record */ + p->discard =3D 0; + +out: st->combined =3D 1; return; } @@ -319,6 +326,15 @@ static void combine_lock_stats(struct lock_stat *st) =20 rb_link_node(&st->rb, parent, rb); rb_insert_color(&st->rb, &sorted); + + if (st->discard) { + st->nr_acquired =3D 0; + st->nr_contended =3D 0; + st->wait_time_total =3D 0; + st->avg_wait_time =3D 0; + st->wait_time_min =3D ULLONG_MAX; + st->wait_time_max =3D 0; + } } =20 static void insert_to_result(struct lock_stat *st, --=20 2.34.1.448.ga2b2bfdf31-goog