Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp695826pxb; Thu, 23 Sep 2021 08:48:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwAVcEl82+H30FoZrOelDqM3LJIuKZZ8Zwm/AjvoEcF/p2K3ymatQE3xtTDVB5ipX27RMXf X-Received: by 2002:a5d:8242:: with SMTP id n2mr1279102ioo.170.1632412120887; Thu, 23 Sep 2021 08:48:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1632412120; cv=none; d=google.com; s=arc-20160816; b=IlZ797mCawsLZKJTxE9pPuDTyHBh8Xe1EDCylgypKvUS8FGR2q0vhQCiX/08XktLmQ V2lyz08uQy4V20Cg5mn0o9gS3obqFfyZEzXmVoOH7VcdY7Z4ZPtI7QrzcHa99wVye788 Npdp18DzPztu35ldoiPEFTpgzItOio85dYkd8jLT9ZvTDoafc41qS0SRrYTrfAhcgODp qS9VaTc74XPWnbyPSgOwJ9n/ZUeabhekixdZBeDfYsjQbPoW1PcHoJK+ch8Fz5AURX41 fPaXpawxU1YpS/VWopws2d+wa9gO6EkEaF6ENdKHrM/3T+qu1dSoPDPt1m7a4SsMGvtK pMSQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Al1v7iWRGP/vGsy5FprrlGp+PvdrNiIs/+exxd2F8dw=; b=W1xu/pN/zDZbs2/lscqRez4g6yqcnyt71fIbxCWnyYQ926QO6wSOl0eO6rWrDOfn3X e96yDpD4VhVOvig9X3+OHtfureZkryBjy2F+ppdHVt50GkT3mBYmIYgqHlUVqYhZshW6 rq0gVbyITNWoac30FDHmgxeVU3jyEKUwKXJli5G2Od33pbON4ykw+hS8AEwZQR99uTzV vdP5tL6Xa/rvfWYoRzxoR6nJFrBAaqNCUnu7ZcZEjFCzPVaXdwXLh63jmFq8gIuZxD7F s3tAWpDD6WxRjH9j9Odp7hUc6R910Cjlt+85q37HwQz9gizwSMYUuQzOGhLNk8lqgGNo l+qw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="B5Bjmp/3"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k3si6445599ilu.165.2021.09.23.08.48.27; Thu, 23 Sep 2021 08:48:40 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="B5Bjmp/3"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242094AbhIWPnS (ORCPT + 99 others); Thu, 23 Sep 2021 11:43:18 -0400 Received: from mail.kernel.org ([198.145.29.99]:38190 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241995AbhIWPnD (ORCPT ); Thu, 23 Sep 2021 11:43:03 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 1E92961029; Thu, 23 Sep 2021 15:41:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1632411692; bh=NyG6vfojY+44meObcI6XOgQLJOli3jGUvl+tK4Z6BMo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=B5Bjmp/3pzHwvMHK7fmsUd03ZPHIkciQ7h0H2p4eqsY58D82PJ49l+tlUw6/BDOyz vRd4S896aTGHI2JuIzY59aN9jqoK1E+PtDo9X67agsWPDSV0xxCU2z8GwTnS3zHLOK S4sRpaqfvQqYFmBfkf8Gq5l5Uyz1lzWDHCbEI19KeepCO47ckVWhvGFjWqIEeQ0AGl kDJzV4atoO0tWFn1PW0Mo8/b8R8IXCMPNqQgMeglGQyhTNigpxWw29l20qYlcLOD0Q yfBAJgDcJ3FGLm4NOLGMkh6GF1TM3DH5P9QNCKKN1K1ke/o6jGTsgvwoekqf3QsLeW wFVO81N3vx0fA== Received: by mail.kernel.org with local (Exim 4.94.2) (envelope-from ) id 1mTQqo-000p65-1p; Thu, 23 Sep 2021 17:41:30 +0200 From: Mauro Carvalho Chehab To: #@kernel.org, YUyICHTRdfL8Ul7X@kroah.com, Linux Doc Mailing List , Greg Kroah-Hartman Cc: Mauro Carvalho Chehab , linux-kernel@vger.kernel.org, Jonathan Corbet Subject: [PATCH 0/8] (REBASED) get_abi.pl undefined: improve precision and performance Date: Thu, 23 Sep 2021 17:41:11 +0200 Message-Id: X-Mailer: git-send-email 2.31.1 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: Mauro Carvalho Chehab Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Greg, As requested, this is exactly the same changes, rebased on the top of driver-core/driver-core-next. - It follows a series of improvements for get_abi.pl. it is on the top of driver-core/driver-core-next. With such changes, on my development tree, the script is taking 6 seconds to run on my desktop: $ !1076 $ time ./scripts/get_abi.pl undefined |sort >undefined_after && cat undefined_after| perl -ne 'print "$1\n" if (m#.*/(\S+) not found#)'|sort|uniq -c|sort -nr >undefined_symbols; wc -l undefined_after undefined_symbols real 0m6,292s user 0m5,640s sys 0m0,634s 6838 undefined_after 808 undefined_symbols 7646 total And 7 seconds on a Dell Precision 5820: $ time ./scripts/get_abi.pl undefined |sort >undefined && cat undefined| perl -ne 'print "$1\n" if (m#.*/(\S+) not found#)'|sort|uniq -c|sort -nr >undefined_symbols; wc -l undefined; wc -l undefined_symbols real 0m7.162s user 0m5.836s sys 0m1.329s 6548 undefined 772 undefined_symbols Both tests were done against this tree (based on today's linux-next): $ https://git.kernel.org/pub/scm/linux/kernel/git/mchehab/devel.git/log/?h=get_abi_undefined-latest It should be noticed that, as my tree has several ABI fixes, the time to run the script is likely less than if you run on your tree, as there will be less symbols to be reported, and the algorithm is optimized to reduce the number of regexes when a symbol is found. Besides optimizing and improving the seek logic, this series also change the debug logic. It how receives a bitmap, where "8" means to print the regexes that will be used by "undefined" command: $ time ./scripts/get_abi.pl undefined --debug 8 >foo real 0m17,189s user 0m13,940s sys 0m2,404s $wc -l foo 18421939 foo $ cat foo ... /sys/kernel/kexec_crash_loaded =~ /^(?^:^/sys/.*/iio\:device.*/in_voltage.*_scale_available$)$/ /sys/kernel/kexec_crash_loaded =~ /^(?^:^/sys/.*/iio\:device.*/out_voltage.*_scale_available$)$/ /sys/kernel/kexec_crash_loaded =~ /^(?^:^/sys/.*/iio\:device.*/out_altvoltage.*_scale_available$)$/ /sys/kernel/kexec_crash_loaded =~ /^(?^:^/sys/.*/iio\:device.*/in_pressure.*_scale_available$)$/ ... On other words, on my desktop, the /sys match is performing >18M regular expression searches, which takes 6,2 seconds (or 17,2 seconds, if debug is enabled and sent to an area on my nvme storage). Regards, Mauro Mauro Carvalho Chehab (8): scripts: get_abi.pl: Fix get_abi.pl search output scripts: get_abi.pl: call get_leave() a little late scripts: get_abi.pl: improve debug logic scripts: get_abi.pl: Better handle leaves with wildcards scripts: get_abi.pl: ignore some sysfs nodes earlier scripts: get_abi.pl: stop check loop earlier when regex is found scripts: get_abi.pl: precompile what match regexes scripts: get_abi.pl: ensure that "others" regex will be parsed scripts/get_abi.pl | 109 +++++++++++++++++++++++++++++++-------------- 1 file changed, 76 insertions(+), 33 deletions(-) -- 2.31.1