forked from Minki/linux
sched: place state, next_sched and gso_skb in same cacheline again
Earlier commits removed two members from struct Qdisc which places next_sched/gso_skb into a different cacheline than ->state. This restores the struct layout to what it was before the removal. Move the two members, then add an annotation so they all reside in the same cacheline. This adds a 16 byte hole after cpu_qstats. The hole could be closed but as it doesn't decrease total struct size just do it this way. Reported-by: Eric Dumazet <edumazet@google.com> Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a09ceb0e08
commit
c8945043cd
@ -71,11 +71,11 @@ struct Qdisc {
|
||||
struct gnet_stats_basic_cpu __percpu *cpu_bstats;
|
||||
struct gnet_stats_queue __percpu *cpu_qstats;
|
||||
|
||||
struct Qdisc *next_sched;
|
||||
struct sk_buff *gso_skb;
|
||||
/*
|
||||
* For performance sake on SMP, we put highly modified fields at the end
|
||||
*/
|
||||
struct Qdisc *next_sched ____cacheline_aligned_in_smp;
|
||||
struct sk_buff *gso_skb;
|
||||
unsigned long state;
|
||||
struct sk_buff_head q;
|
||||
struct gnet_stats_basic_packed bstats;
|
||||
|
Loading…
Reference in New Issue
Block a user