lkml.org 
[lkml]   [2003]   [Dec]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [Lse-tech] [RFC,PATCH] use rcu for fasync_lock
Manfred Spraul wrote:

> Hi,
>
> kill_fasync and fasync_helper were intended for mice and similar, rare
> users, thus it uses a simple rwlock for the locking. This is not true
> anymore: e.g. every pipe read and write operation calls kill_fasync,
> which must acquire the rwlock before handling the fasync list.
> What about switching to rcu? I did a reaim run on a 4-way pIII with
> STP, and it reduced the time within kill_fasync by 80%:
>
> diffprofile reaim_End_stock reaim_End_rcu 21166 1.2%
> default_idle
> 18882 0.9% total
> 290 12.8% page_address
> 269 23.5% group_send_sig_info
> 259 41.1% do_brk
> 244 6.3% current_kernel_time
> [ delta < 200: skipped]
> -205 -16.1% get_signal_to_deliver
> -240 -3.7% page_add_rmap
> -364 -4.7% __might_sleep
> -369 -8.4% page_remove_rmap
> -975 -81.2% kill_fasync
>
> What do you think? Patch against 2.6.0 is attached.
>
> --
> Manfred
>
>------------------------------------------------------------------------
>
>--- 2.6/fs/fcntl.c 2003-12-04 19:44:38.000000000 +0100
>+++ build-2.6/fs/fcntl.c 2003-12-20 10:56:23.344256035 +0100
>@@ -537,9 +537,19 @@
> return ret;
> }
>
>-static rwlock_t fasync_lock = RW_LOCK_UNLOCKED;
>+static spinlock_t fasync_lock = SPIN_LOCK_UNLOCKED;
> static kmem_cache_t *fasync_cache;
>
>+struct fasync_rcu_struct {
>+ struct fasync_struct data;
>+ struct rcu_head rcu;
>+};
>
>
Why do needless wrapping of existing structure? Just add and rcu element
to it!


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:59    [W:0.832 / U:0.012 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site