From: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
To: #@kernel.org, YUyICHTRdfL8Ul7X@kroah.com,
Linux Doc Mailing List <linux-doc@vger.kernel.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>,
linux-kernel@vger.kernel.org, Jonathan Corbet <corbet@lwn.net>
Subject: [PATCH 0/8] (REBASED) get_abi.pl undefined: improve precision and performance
Date: Thu, 23 Sep 2021 17:41:11 +0200 [thread overview]
Message-ID: <cover.1632411447.git.mchehab+huawei@kernel.org> (raw)
In-Reply-To: <YUyICHTRdfL8Ul7X@kroah.com>
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
next prev reply other threads:[~2021-09-23 15:45 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-23 13:29 [PATCH 00/13] get_abi.pl undefined: improve precision and performance Mauro Carvalho Chehab
2021-09-23 13:29 ` [PATCH 01/13] scripts: get_abi.pl: Better handle multiple What parameters Mauro Carvalho Chehab
2021-09-23 13:30 ` [PATCH 02/13] scripts: get_abi.pl: Check for missing symbols at the ABI specs Mauro Carvalho Chehab
2021-09-23 13:30 ` [PATCH 03/13] scripts: get_abi.pl: detect softlinks Mauro Carvalho Chehab
2021-09-23 13:30 ` [PATCH 04/13] scripts: get_abi.pl: add an option to filter undefined results Mauro Carvalho Chehab
2021-09-23 13:30 ` [PATCH 05/13] scripts: get_abi.pl: don't skip what that ends with wildcards Mauro Carvalho Chehab
2021-09-23 13:30 ` [PATCH 06/13] scripts: get_abi.pl: Ignore fs/cgroup sysfs nodes earlier Mauro Carvalho Chehab
2021-09-23 13:30 ` [PATCH 07/13] scripts: get_abi.pl: add a graph to speedup the undefined algorithm Mauro Carvalho Chehab
2021-09-23 13:30 ` [PATCH 08/13] scripts: get_abi.pl: improve debug logic Mauro Carvalho Chehab
2021-09-23 13:30 ` [PATCH 09/13] scripts: get_abi.pl: Better handle leaves with wildcards Mauro Carvalho Chehab
2021-09-23 13:30 ` [PATCH 10/13] scripts: get_abi.pl: ignore some sysfs nodes earlier Mauro Carvalho Chehab
2021-09-23 13:30 ` [PATCH 11/13] scripts: get_abi.pl: stop check loop earlier when regex is found Mauro Carvalho Chehab
2021-09-23 13:30 ` [PATCH 12/13] scripts: get_abi.pl: precompile what match regexes Mauro Carvalho Chehab
2021-09-23 13:30 ` [PATCH 13/13] scripts: get_abi.pl: ensure that "others" regex will be parsed Mauro Carvalho Chehab
2021-09-23 13:58 ` [PATCH 00/13] get_abi.pl undefined: improve precision and performance Greg Kroah-Hartman
2021-09-23 15:41 ` Mauro Carvalho Chehab [this message]
2021-09-23 15:41 ` [PATCH 1/8] scripts: get_abi.pl: Fix get_abi.pl search output Mauro Carvalho Chehab
2021-09-23 15:41 ` [PATCH 2/8] scripts: get_abi.pl: call get_leave() a little late Mauro Carvalho Chehab
2021-09-23 15:41 ` [PATCH 3/8] scripts: get_abi.pl: improve debug logic Mauro Carvalho Chehab
2021-09-23 15:41 ` [PATCH 4/8] scripts: get_abi.pl: Better handle leaves with wildcards Mauro Carvalho Chehab
2021-09-23 15:41 ` [PATCH 5/8] scripts: get_abi.pl: ignore some sysfs nodes earlier Mauro Carvalho Chehab
2021-09-23 15:41 ` [PATCH 6/8] scripts: get_abi.pl: stop check loop earlier when regex is found Mauro Carvalho Chehab
2021-09-23 15:41 ` [PATCH 7/8] scripts: get_abi.pl: precompile what match regexes Mauro Carvalho Chehab
2021-09-23 15:41 ` [PATCH 8/8] scripts: get_abi.pl: ensure that "others" regex will be parsed Mauro Carvalho Chehab
2021-09-23 17:13 ` [PATCH 0/8] (REBASED) get_abi.pl undefined: improve precision and performance Greg Kroah-Hartman
2021-09-27 8:55 ` Mauro Carvalho Chehab
2021-09-27 9:23 ` Greg Kroah-Hartman
2021-09-27 13:39 ` Mauro Carvalho Chehab
2021-09-27 15:48 ` Greg Kroah-Hartman
2021-09-28 10:03 ` Mauro Carvalho Chehab
2021-09-28 10:43 ` Greg Kroah-Hartman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1632411447.git.mchehab+huawei@kernel.org \
--to=mchehab+huawei@kernel.org \
--cc=#@kernel.org \
--cc=YUyICHTRdfL8Ul7X@kroah.com \
--cc=corbet@lwn.net \
--cc=gregkh@linuxfoundation.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.