Rust for Linux List
 help / color / mirror / Atom feed
From: Yury Norov <ynorov@nvidia.com>
To: Gary Guo <gary@garyguo.net>
Cc: "Eliot Courtney" <ecourtney@nvidia.com>,
	"Greg KH" <gregkh@linuxfoundation.org>,
	"Burak Emir" <bqe@google.com>,
	"John Hubbard" <jhubbard@nvidia.com>,
	"Alice Ryhl" <aliceryhl@google.com>,
	"Liam R . Howlett" <liam@infradead.org>,
	"Andrew Ballance" <andrewjballance@gmail.com>,
	"Matthew Wilcox" <willy@infradead.org>,
	"Alexandre Courbot" <acourbot@nvidia.com>,
	"Alistair Popple" <apopple@nvidia.com>,
	"Andreas Hindborg" <a.hindborg@kernel.org>,
	"Benno Lossin" <lossin@kernel.org>,
	"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
	"Boqun Feng" <boqun@kernel.org>,
	"Daniel Almeida" <daniel.almeida@collabora.com>,
	"Danilo Krummrich" <dakr@kernel.org>,
	"David Airlie" <airlied@gmail.com>,
	"Miguel Ojeda" <ojeda@kernel.org>,
	"Onur Özkan" <work@onurozkan.dev>,
	"Simona Vetter" <simona@ffwll.ch>,
	"Tamir Duberstein" <tamird@kernel.org>,
	"Timur Tabi" <ttabi@nvidia.com>,
	"Trevor Gross" <tmgross@umich.edu>,
	"Yury Norov" <yury.norov@gmail.com>, "Zhi Wang" <zhiw@nvidia.com>,
	maple-tree@lists.infradead.org, linux-kernel@vger.kernel.org,
	nova-gpu@lists.linux.dev, dri-devel@lists.freedesktop.org,
	rust-for-linux@vger.kernel.org
Subject: Re: [PATCH v2] lib: test bitmap vs IDA vs Maple Tree performance for region allocations
Date: Wed, 15 Jul 2026 11:54:23 -0400	[thread overview]
Message-ID: <aletL7odX7uIDPxD@yury> (raw)
In-Reply-To: <alcT3HupA6TogWSa@yury>

On Wed, Jul 15, 2026 at 01:00:12AM -0400, Yury Norov wrote:
> On Sat, Jul 11, 2026 at 02:51:28PM +0100, Gary Guo wrote:
> 
> ...
> 
> > > +static unsigned long __init benchmark_bitmap(unsigned long capacity)
> > > +{
> > > +	unsigned long count, index;
> > > +	ktime_t alloc_time, free_time;
> > > +	size_t memory;
> > > +
> > > +	bitmap_zero(alloc_bitmap, MAP_SIZE);
> > > +	alloc_time = ktime_get();
> > 
> > To eliminate possible effects of optimization messing up benchmark, please add a
> > barrier() after start timing and a barrier() before end timing. Probably you'd
> > want one between each loop iteration too.
> 
> It was never a problem in find_bit_benchmark test, but OK.

So, I ran some experiments: 5 times with barriers, and 5 times without,
and repeated it for reverse order of capacities. 

The results are:

Experiment               1,000,000             100,000
Bitmap allocate    −0.28% (p=.631)    −5.63% (p=.0039)
Bitmap release     +0.89% (p=.247)     −1.30% (p=.089)
IDA    allocate    −0.03% (p=.971)    −19.98% (p=.035)
IDA    release     −0.27% (p=.315)     +1.38% (p=.165)
Maple  allocate    +0.09% (p=.579)     −1.06% (p=.529)
Maple  release     −0.54% (p=.315)     +0.03% (p=.971)
                            10,000              1,000
Bitmap allocate    +5.19% (p=.853)    −3.17% (p=.739)
Bitmap release     −2.16% (p=.853)    −0.45% (p=.912)
IDA    allocate    −3.42% (p=.247)    −6.80% (p=.190)
IDA    release     −1.21% (p=.315)    −5.39% (p=.063)
Maple  allocate    −1.81% (p=.529)    −0.32% (p=.529)
Maple  release     +1.39% (p=.739)    +0.11% (p=.631)

The barriers were only present in allocation loops, so release
measurements serve as a negative control. Most effects are small
and statistically insignificant.

Two allocation comparisons have unadjusted p < .05, but both show
barriers making execution faster. Across all 24 comparisons, neither
survives Holm/Bonferroni correction; the smallest adjusted p-value
is approximately .093.

Codegeneration-wise, both objects have:

 - Identical text size: 2,413 bytes.
 - Identical instruction count.
 - No additional loads, spills, or fences.

The barriers only changed scheduling of a few independent instructions:

 - Bitmap: loop-counter increment moved across __bitmap_set().
 - IDA: counter increment and ID accumulation swapped.
 - Maple Tree: region_indexes[] store moved relative to the
   loop-bound comparison.

There is no code-generation change capable to produce visible performance
impact.

With all that, I'll drop the barriers. Instead, I've added the
WARN_ON(!xxx_empty()) after the release completion for the data
structures: to ensure the release is not optimized, and to
additionally enforce integrity. 

Thanks,
Yury

  reply	other threads:[~2026-07-15 15:54 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-11  6:36 [PATCH v2] lib: test bitmap vs IDA vs Maple Tree performance for region allocations Yury Norov
2026-07-11  8:27 ` Onur Özkan
2026-07-15  1:49   ` Yury Norov
2026-07-11 13:51 ` Gary Guo
2026-07-15  5:00   ` Yury Norov
2026-07-15 15:54     ` Yury Norov [this message]
2026-07-15 21:41 ` Pedro Falcato

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=aletL7odX7uIDPxD@yury \
    --to=ynorov@nvidia.com \
    --cc=a.hindborg@kernel.org \
    --cc=acourbot@nvidia.com \
    --cc=airlied@gmail.com \
    --cc=aliceryhl@google.com \
    --cc=andrewjballance@gmail.com \
    --cc=apopple@nvidia.com \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun@kernel.org \
    --cc=bqe@google.com \
    --cc=dakr@kernel.org \
    --cc=daniel.almeida@collabora.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=ecourtney@nvidia.com \
    --cc=gary@garyguo.net \
    --cc=gregkh@linuxfoundation.org \
    --cc=jhubbard@nvidia.com \
    --cc=liam@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lossin@kernel.org \
    --cc=maple-tree@lists.infradead.org \
    --cc=nova-gpu@lists.linux.dev \
    --cc=ojeda@kernel.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=simona@ffwll.ch \
    --cc=tamird@kernel.org \
    --cc=tmgross@umich.edu \
    --cc=ttabi@nvidia.com \
    --cc=willy@infradead.org \
    --cc=work@onurozkan.dev \
    --cc=yury.norov@gmail.com \
    --cc=zhiw@nvidia.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox