This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


[Xen-devel] RE: Update radix-tree.[ch] from upstream Linux to gain RCU a

To: Keir Fraser <keir.xen@xxxxxxxxx>
Subject: [Xen-devel] RE: Update radix-tree.[ch] from upstream Linux to gain RCU awareness.
From: Dan Magenheimer <dan.magenheimer@xxxxxxxxxx>
Date: Wed, 11 May 2011 13:38:56 -0700 (PDT)
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx, Jan Beulich <JBeulich@xxxxxxxxxx>
Delivery-date: Wed, 11 May 2011 13:39:49 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <E1QK0HT-0006Nb-FM@xxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <E1QK0HT-0006Nb-FM@xxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
> From: Xen patchbot-unstable [mailto:patchbot@xxxxxxx]
> Sent: Tuesday, May 10, 2011 9:40 PM
> To: xen-changelog@xxxxxxxxxxxxxxxxxxx
> Subject: [Xen-changelog] [xen-unstable] Update radix-tree.[ch] from
> upstream Linux to gain RCU awareness.
> # HG changeset patch
> # User Keir Fraser <keir@xxxxxxx>
> # Date 1304929523 -3600
> # Node ID 44bfebf40b2bb7f219333ef5bf97eb7493592cdc
> # Parent  4b0692880dfa557d4e1537c7a58c412c1286a416
> Update radix-tree.[ch] from upstream Linux to gain RCU awareness.
> We still leave behind features we don't need such as tagged nodes.
> Other changes:
>  - Allow callers to define their own node alloc routines.
>  - Only allocate per-node rcu_head when using the default RCU-safe
>    alloc routines.
>  - Keep our own radix_tree_destroy().
> In future it may also be worth getting rid of the complex and
> pointless special-casing of radix-tree height==0, in which a single
> data item can be stored directly in radix_tree_root. It introduces a
> whole lot of special cases and complicates RCU handling. If we get rid
> of it we can reclaim the 'indirect pointer' tag in bit 0 of every slot
> entry.
> Signed-off-by: Keir Fraser <keir@xxxxxxx>

Thanks for handling this.  A couple thoughts worth noting:

I'm not sure the height=0 special-casing is pointless.  IIRC, a
radix-tree node contains 64 pointers (512 bytes).  When trees containing
a single item are common, 512 bytes may be a relatively large overhead
For tmem, each tree contains pages from a file, many files on
many filesystems are less than one-page, and, when compressed that
one page may be represented by far less than 4096 bytes, so avoiding
the overhead is a big win.

While I like your improvements avoiding the extra args passed on each
insert/delete, I'm not sure for tmem the tradeoff is a good one.
A basic assumption of tmem is that memory is constrained and
CPU cycles are abundant.  While we've all been trained to avoid
passing parameters when possible to reduce CPU overhead,
the world is changing.  If radix-tree.c is used in Xen in the future
for non-tmem high-frequency inserts/deletes, your CPU optimization
is probably best, but for tmem I think it's a net loss as now
each radix tree (and there may be thousands or millions in a
large tmem-enabled Xen system) "wastes" 24 bytes.


Xen-devel mailing list

<Prev in Thread] Current Thread [Next in Thread>