From: David Laight <David.Laight@ACULAB.COM>
To: 'Stephen Rothwell' <sfr@canb.auug.org.au>,
Linus Torvalds <torvalds@linux-foundation.org>
Cc: Jiri Slaby <jirislaby@gmail.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Andrew Morton <akpm@linux-foundation.org>,
"Matthew Wilcox (Oracle)" <willy@infradead.org>,
Christoph Hellwig <hch@infradead.org>,
"Jason A. Donenfeld" <Jason@zx2c4.com>
Subject: RE: [PATCH next v4 0/5] minmax: Relax type checks in min() and max().
Date: Wed, 10 Jan 2024 09:03:30 +0000 [thread overview]
Message-ID: <ddd07dbe318d451db6897b277e37410f@AcuMS.aculab.com> (raw)
In-Reply-To: <20240110171739.2e2d9de0@canb.auug.org.au>
From: Stephen Rothwell
> Sent: 10 January 2024 06:18
>
> Hi Linus,
>
> On Mon, 8 Jan 2024 13:11:12 -0800 Linus Torvalds <torvalds@linux-foundationorg> wrote:
> >
> > Whee.
>
> Yeah.
>
> > On my machine, that patch makes an "allmodconfig" build go from
> >
> > 10:41 elapsed
> >
> > to
> >
> > 8:46 elapsed
> >
> > so that min/max type checking is almost 20% of the build time.
> >
> > Yeah, I think we need to get rid of it.
> >
> > Can somebody else confirm similar time differences? Or is it just me?
>
> I was hopeful, but:
>
> no patch:
>
> $ /usr/bin/time make ARCH=x86_64 CROSS_COMPILE=x86_64-linux-gnu- -j140 -O -s
> 102460.07user 3710.56system 13:29.05elapsed 13122%CPU (0avgtext+0avgdata 4023168maxresident)k
> 304inputs+7917056outputs (1998673major+120730959minor)pagefaults 0swaps
>
> with patch:
>
> $ /usr/bin/time make ARCH=x86_64 CROSS_COMPILE=x86_64-linux-gnu- -j140 -O -s
> 99775.75user 3684.45system 13:12.89elapsed 13048%CPU (0avgtext+0avgdata 2217536maxresident)k
> 64inputs+7890304outputs (2104371major+119837267minor)pagefaults 0swaps
That looks like 2500 in 100000 (user) or about 2.5%
I did some rebuilds just changing minmax.h and got just over 1%
for changing __types_ok() to be 1.
I did try a few other things, got some marginal improvements.
But I'm not trying to compile the code with 4 nested calls.
One of the things that does explode it somewhat is the
'return constant for constant' path needed to avoid VLA.
That generates two copies of the expansion.
A separate define for that would help a bit.
Doesn't matter much until you get nested min/max they will hurt.
The other slight annoyance is an extra __builtin_choose_expr()
needed for pointer types - because (void *)1 isn't constant.
min3() was mentioned, but that seems to be a nested expansion.
It would need to be more like clamp() to get any benefit.
(And maybe removing the const-for-const option.)
David
-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)
next prev parent reply other threads:[~2024-01-10 9:03 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-18 8:14 [PATCH next v4 0/5] minmax: Relax type checks in min() and max() David Laight
2023-09-18 8:16 ` [PATCH next v4 1/5] minmax: Add umin(a, b) and umax(a, b) David Laight
2024-01-12 12:49 ` Dan Carpenter
2024-01-12 13:40 ` David Laight
2024-01-12 14:03 ` Dan Carpenter
2024-01-12 14:26 ` David Laight
2024-01-18 10:30 ` Dan Carpenter
2023-09-18 8:17 ` [PATCH next v4 2/5] minmax: Allow min()/max()/clamp() if the arguments have the same signedness David Laight
2023-09-18 8:17 ` [PATCH next v4 3/5] minmax: Fix indentation of __cmp_once() and __clamp_once() David Laight
2023-09-18 8:18 ` [PATCH next v4 4/5] minmax: Allow comparisons of 'int' against 'unsigned char/short' David Laight
2023-09-18 8:19 ` [PATCH next v4 5/5] minmax: Relax check to allow comparison between unsigned arguments and signed constants David Laight
2023-09-27 17:30 ` [PATCH next v4 0/5] minmax: Relax type checks in min() and max() Andrew Morton
2023-09-28 8:10 ` David Laight
2024-01-08 11:46 ` Jiri Slaby
2024-01-08 13:34 ` David Laight
2024-01-08 18:19 ` Linus Torvalds
2024-01-08 20:04 ` Linus Torvalds
2024-01-08 21:11 ` Linus Torvalds
2024-01-09 0:39 ` [PATCH next v4 0/5] minmax: Relax type checks in min() and max().^[[C John Stoffel
2024-01-09 6:54 ` [PATCH next v4 0/5] minmax: Relax type checks in min() and max() Jiri Slaby
2024-01-10 6:17 ` Stephen Rothwell
2024-01-10 9:03 ` David Laight [this message]
2024-01-10 19:35 ` Linus Torvalds
2024-01-10 22:58 ` David Laight
2024-01-20 21:33 ` Linus Torvalds
2024-01-21 22:18 ` David Laight
2024-01-09 9:35 ` David Laight
2024-01-09 9:41 ` David Laight
2024-01-09 12:09 ` Kalle Valo
2024-01-19 7:14 ` Jiri Slaby
2024-01-19 8:23 ` Hans Verkuil
2024-01-19 9:14 ` David Laight
2024-01-12 9:13 ` Dan Carpenter
2024-01-12 12:16 ` David Laight
2024-01-12 12:40 ` Dan Carpenter
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=ddd07dbe318d451db6897b277e37410f@AcuMS.aculab.com \
--to=david.laight@aculab.com \
--cc=Jason@zx2c4.com \
--cc=akpm@linux-foundation.org \
--cc=andriy.shevchenko@linux.intel.com \
--cc=hch@infradead.org \
--cc=jirislaby@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=sfr@canb.auug.org.au \
--cc=torvalds@linux-foundation.org \
--cc=willy@infradead.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.