All of lore.kernel.org
 help / color / mirror / Atom feed
* btree vs. linear seach in device mapper
       [not found]   ` <Pine.LNX.4.64.1304040916470.17024@file.rdu.redhat.com>
@ 2013-04-04 14:27     ` Mikulas Patocka
  2013-04-04 14:43       ` Joe Thornber
  0 siblings, 1 reply; 4+ messages in thread
From: Mikulas Patocka @ 2013-04-04 14:27 UTC (permalink / raw)
  To: Alasdair G Kergon; +Cc: dm-devel



On Thu, 4 Apr 2013, Mikulas Patocka wrote:

> There are no scalability problems regarding performance - device mapper 
> uses btree to search the target table, so the number of target don't 
> affect performance.
> 
> device mapper uses vmalloc to alloc all targets linearly, so it is limited 
> by avaiable vmalloc space. It is not a problem on x86-64, but it is 
> limited on x86 - vmalloc space can be as low as 128k (one target structure 
> has 64 bytes for 32-bit architectures and 96 bytes for 64-bit 
> architectures).

BTW. when I see that btree code in dm-table.c, I ask - why doesn't it use 
binary search?

We only append targets at the end when constructing the device, we never 
insert or remove them, so we don't need a tree. For these operations 
binary search would be as good as btree and it is simpler.

Mikulas

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: btree vs. linear seach in device mapper
  2013-04-04 14:27     ` btree vs. linear seach in device mapper Mikulas Patocka
@ 2013-04-04 14:43       ` Joe Thornber
  2013-04-04 23:03         ` Mikulas Patocka
  0 siblings, 1 reply; 4+ messages in thread
From: Joe Thornber @ 2013-04-04 14:43 UTC (permalink / raw)
  To: device-mapper development; +Cc: Alasdair G Kergon

On Thu, Apr 04, 2013 at 10:27:02AM -0400, Mikulas Patocka wrote:
> BTW. when I see that btree code in dm-table.c, I ask - why doesn't it use 
> binary search?
> 
> We only append targets at the end when constructing the device, we never 
> insert or remove them, so we don't need a tree. For these operations 
> binary search would be as good as btree and it is simpler.

I originally expected dm tables to have many, many more entries than
they do these days (I remember benchmarking it with 1 million
entries).  I used a btree to try and be nicer to the cpu cache; the
idea being that each btree node could fit into a cache line.  Plain
binary search would have caused many more cache faults.

Given how dm is used these days I wouldn't mind a switch to a binary
search.

- Joe

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: btree vs. linear seach in device mapper
  2013-04-04 14:43       ` Joe Thornber
@ 2013-04-04 23:03         ` Mikulas Patocka
  2013-04-08  9:56           ` Joe Thornber
  0 siblings, 1 reply; 4+ messages in thread
From: Mikulas Patocka @ 2013-04-04 23:03 UTC (permalink / raw)
  To: device-mapper development; +Cc: Alasdair G Kergon



On Thu, 4 Apr 2013, Joe Thornber wrote:

> On Thu, Apr 04, 2013 at 10:27:02AM -0400, Mikulas Patocka wrote:
> > BTW. when I see that btree code in dm-table.c, I ask - why doesn't it use 
> > binary search?
> > 
> > We only append targets at the end when constructing the device, we never 
> > insert or remove them, so we don't need a tree. For these operations 
> > binary search would be as good as btree and it is simpler.
> 
> I originally expected dm tables to have many, many more entries than
> they do these days (I remember benchmarking it with 1 million
> entries).  I used a btree to try and be nicer to the cpu cache; the
> idea being that each btree node could fit into a cache line.  Plain
> binary search would have caused many more cache faults.
> 
> Given how dm is used these days I wouldn't mind a switch to a binary
> search.
> 
> - Joe

I see.

If the btree helps to save a few cachelines and doesn't hurt, we can leave 
it there. If it ever causes some code maintainability difficulties, we can 
switch to a binary search...

Mikulas

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: btree vs. linear seach in device mapper
  2013-04-04 23:03         ` Mikulas Patocka
@ 2013-04-08  9:56           ` Joe Thornber
  0 siblings, 0 replies; 4+ messages in thread
From: Joe Thornber @ 2013-04-08  9:56 UTC (permalink / raw)
  To: device-mapper development; +Cc: Alasdair G Kergon

On Thu, Apr 04, 2013 at 07:03:45PM -0400, Mikulas Patocka wrote:
> 
> 
> On Thu, 4 Apr 2013, Joe Thornber wrote:
> 
> > On Thu, Apr 04, 2013 at 10:27:02AM -0400, Mikulas Patocka wrote:
> > > BTW. when I see that btree code in dm-table.c, I ask - why doesn't it use 
> > > binary search?
> > > 
> > > We only append targets at the end when constructing the device, we never 
> > > insert or remove them, so we don't need a tree. For these operations 
> > > binary search would be as good as btree and it is simpler.
> > 
> > I originally expected dm tables to have many, many more entries than
> > they do these days (I remember benchmarking it with 1 million
> > entries).  I used a btree to try and be nicer to the cpu cache; the
> > idea being that each btree node could fit into a cache line.  Plain
> > binary search would have caused many more cache faults.
> > 
> > Given how dm is used these days I wouldn't mind a switch to a binary
> > search.
> > 
> > - Joe
> 
> I see.
> 
> If the btree helps to save a few cachelines and doesn't hurt, we can leave 
> it there. If it ever causes some code maintainability difficulties, we can 
> switch to a binary search...

Agreed, it's been there for 10 years without issue.  There are better
things to spend your time on.

- Joe

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-04-08  9:56 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <515599DE.3050104@redhat.com>
     [not found] ` <20130404085848.GC24402@stefanha-thinkpad.redhat.com>
     [not found]   ` <Pine.LNX.4.64.1304040916470.17024@file.rdu.redhat.com>
2013-04-04 14:27     ` btree vs. linear seach in device mapper Mikulas Patocka
2013-04-04 14:43       ` Joe Thornber
2013-04-04 23:03         ` Mikulas Patocka
2013-04-08  9:56           ` Joe Thornber

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.