xfrm_policy_afinfo is read mosly data structure.
Write on xfrm_policy_afinfo is done only at the
time of configuration.
So rwlocks can be safely replaced with RCU.
RCUs usage optimizes the performance.
Signed-off-by: Priyanka Jain <redacted>
---
For IPSEC fwd test
-On p4080ds (8-core, SMP system)
Around 110% throughput increase in case of PREEMPT_RT enabled
Around 5-6% throughput increase in case of PREEMPT_RT disabled
-On p2020 (2-core, SMP system)
Around 4-5% throughput increase in case of PREEMPT_RT disabled
net/xfrm/xfrm_policy.c | 37 +++++++++++++++++++++----------------
1 files changed, 21 insertions(+), 16 deletions(-)
xfrm_policy_afinfo is read mosly data structure.
Write on xfrm_policy_afinfo is done only at the
time of configuration.
So rwlocks can be safely replaced with RCU.
RCUs usage optimizes the performance.
Signed-off-by: Priyanka Jain <redacted>
This patch doesn't apply to the net-next tree, please respin.
Also:
-----Original Message-----
From: David Miller [mailto:davem@davemloft.net]
Sent: Wednesday, August 08, 2012 4:52 AM
To: Jain Priyanka-B32167
Cc: netdev@vger.kernel.org
Subject: Re: [PATCH][XFRM] Replace rwlock on xfrm_policy_afinfo with rcu
From: Priyanka Jain <redacted>
Date: Tue, 7 Aug 2012 10:51:44 +0530
xfrm_policy_afinfo is read mosly data structure.
Write on xfrm_policy_afinfo is done only at the time of configuration.
So rwlocks can be safely replaced with RCU.
RCUs usage optimizes the performance.
Signed-off-by: Priyanka Jain <redacted>
This patch doesn't apply to the net-next tree, please respin.
[Priyanka]: I will send v2 after re-spinning against git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git.
Also:
Indent that NULL argument properly, it must line up with the first column after the openning '(' on the previous line.
[Priyanka]: NULL has been pushed to next line to confirm to 80 characters per line rule. If I indent NULL to previous line, it will break 80 characters per line rule.
Please let me know your final say on this. I will make changes accordingly if required.
Thanks
Priyanka
-----Original Message-----
From: David Miller [mailto:davem@davemloft.net]
Sent: Wednesday, August 08, 2012 4:52 AM
To: Jain Priyanka-B32167
Cc: netdev@vger.kernel.org
Subject: Re: [PATCH][XFRM] Replace rwlock on xfrm_policy_afinfo with rcu
From: Priyanka Jain <redacted>
Date: Tue, 7 Aug 2012 10:51:44 +0530
quoted
xfrm_policy_afinfo is read mosly data structure.
Write on xfrm_policy_afinfo is done only at the time of configuration.
So rwlocks can be safely replaced with RCU.
RCUs usage optimizes the performance.
Signed-off-by: Priyanka Jain <redacted>
This patch doesn't apply to the net-next tree, please respin.
[Priyanka]: I will send v2 after re-spinning against git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git.
Also:
Indent that NULL argument properly, it must line up with the first column after the openning '(' on the previous line.
[Priyanka]: NULL has been pushed to next line to confirm to 80 characters per line rule. If I indent NULL to previous line, it will break 80 characters per line rule.
Please let me know your final say on this. I will make changes accordingly if required.
What in the world are you talking about?
The openning parenthesis of the rcu_assign_pointer() statement is not anywhere
close to the 80th column.
You're doing this:
x(A,
B);
and I want you to do this:
x(A,
B);
-----Original Message-----
From: David Miller [mailto:davem@davemloft.net]
Sent: Wednesday, August 08, 2012 11:26 AM
To: Jain Priyanka-B32167
Cc: netdev@vger.kernel.org
Subject: Re: [PATCH][XFRM] Replace rwlock on xfrm_policy_afinfo with rcu
From: Jain Priyanka-B32167 <redacted>
Date: Wed, 8 Aug 2012 04:53:42 +0000
-----Original Message-----
From: David Miller [mailto:davem@davemloft.net]
Sent: Wednesday, August 08, 2012 4:52 AM
To: Jain Priyanka-B32167
Cc: netdev@vger.kernel.org
Subject: Re: [PATCH][XFRM] Replace rwlock on xfrm_policy_afinfo with
rcu
From: Priyanka Jain <redacted>
Date: Tue, 7 Aug 2012 10:51:44 +0530
quoted
xfrm_policy_afinfo is read mosly data structure.
Write on xfrm_policy_afinfo is done only at the time of configuration.
So rwlocks can be safely replaced with RCU.
RCUs usage optimizes the performance.
Signed-off-by: Priyanka Jain <redacted>
This patch doesn't apply to the net-next tree, please respin.
[Priyanka]: I will send v2 after re-spinning against git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git.
Also:
Indent that NULL argument properly, it must line up with the first column after the openning '(' on the previous line.
[Priyanka]: NULL has been pushed to next line to confirm to 80 characters per line rule. If I indent NULL to previous line, it will break 80 characters per line rule.
Please let me know your final say on this. I will make changes accordingly if required.
What in the world are you talking about?
The openning parenthesis of the rcu_assign_pointer() statement is not anywhere close to the 80th column.
You're doing this:
x(A,
B);
and I want you to do this:
x(A,
B);
[Priyanka] Got it. Thanks. Will correct this.
From: Eric Dumazet <hidden> Date: 2012-08-08 06:25:51
On Tue, 2012-08-07 at 10:51 +0530, Priyanka Jain wrote:
xfrm_policy_afinfo is read mosly data structure.
Write on xfrm_policy_afinfo is done only at the
time of configuration.
So rwlocks can be safely replaced with RCU.
RCUs usage optimizes the performance.
quoted hunk
static struct xfrm_policy_afinfo *xfrm_policy_get_afinfo(unsigned short family)
This makes no sense to me : We cant safely return afinfo here.
Note the current code is buggy as well, this is worrying.
As soon as we exit from xfrm_policy_get_afinfo(), pointer might be
invalid.
Really, RCU conversion should be the right moment to spot those bugs and
first fix them (for stable trees)
First, sorry to jump in.
On 2012年08月08日 14:25, Eric Dumazet wrote:
On Tue, 2012-08-07 at 10:51 +0530, Priyanka Jain wrote:
quoted
xfrm_policy_afinfo is read mosly data structure.
Write on xfrm_policy_afinfo is done only at the
time of configuration.
So rwlocks can be safely replaced with RCU.
RCUs usage optimizes the performance.
quoted
static struct xfrm_policy_afinfo *xfrm_policy_get_afinfo(unsigned short family)
@@ -2530,16 +2535,16 @@ static struct xfrm_policy_afinfo *xfrm_policy_get_afinfo(unsigned short family) struct xfrm_policy_afinfo *afinfo; if (unlikely(family>= NPROTO)) return NULL;- read_lock(&xfrm_policy_afinfo_lock);- afinfo = xfrm_policy_afinfo[family];+ rcu_read_lock();+ afinfo = rcu_dereference(xfrm_policy_afinfo[family]); if (unlikely(!afinfo))- read_unlock(&xfrm_policy_afinfo_lock);+ rcu_read_unlock();
This makes no sense to me : We cant safely return afinfo here.
Note the current code is buggy as well, this is worrying.
As soon as we exit from xfrm_policy_get_afinfo(), pointer might be
invalid.
Yes, it might be invalid, but all the callers have checked the return
value, thus use it in a sane way.
So I don't follow "Note the current code is buggy as well".
Am I missing something here?
Really, RCU conversion should be the right moment to spot those bugs and
first fix them (for stable trees)
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Hello Eric Dumazet,
Like Fan Du, even I could not see the bug in the current code. Can you please elaborate.
Thanks
Priyanka
-----Original Message-----
From: Fan Du [mailto:fan.du@windriver.com]
Sent: Wednesday, August 08, 2012 12:14 PM
To: Eric Dumazet
Cc: Jain Priyanka-B32167; netdev@vger.kernel.org
Subject: Re: [PATCH][XFRM] Replace rwlock on xfrm_policy_afinfo with rcu
First, sorry to jump in.
On 2012年08月08日 14:25, Eric Dumazet wrote:
On Tue, 2012-08-07 at 10:51 +0530, Priyanka Jain wrote:
quoted
xfrm_policy_afinfo is read mosly data structure.
Write on xfrm_policy_afinfo is done only at the time of
configuration.
So rwlocks can be safely replaced with RCU.
RCUs usage optimizes the performance.
This makes no sense to me : We cant safely return afinfo here.
Note the current code is buggy as well, this is worrying.
As soon as we exit from xfrm_policy_get_afinfo(), pointer might be
invalid.
Yes, it might be invalid, but all the callers have checked the return value, thus use it in a sane way.
So I don't follow "Note the current code is buggy as well".
Am I missing something here?
Really, RCU conversion should be the right moment to spot those bugs
and first fix them (for stable trees)
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org More majordomo info
at http://vger.kernel.org/majordomo-info.html
From: Eric Dumazet <hidden> Date: 2012-08-10 06:26:38
On Fri, 2012-08-10 at 04:28 +0000, Jain Priyanka-B32167 wrote:
Hello Eric Dumazet,
Like Fan Du, even I could not see the bug in the current code. Can you please elaborate
Yes, it might be invalid, but all the callers have checked the return value, thus use it in a sane way.
So I don't follow "Note the current code is buggy as well".
Am I missing something here?
Hmm, I misread the code, sorry for the false alarm.