On 09/06/2018 02:23 AM, Vlad Buslov wrote:
> 
> On Thu 06 Sep 2018 at 08:39, Kirill Tkhai <ktk...@virtuozzo.com> wrote:
>> On 06.09.2018 11:30, Eric Dumazet wrote:
>>>
>>>
>>> On 09/06/2018 12:58 AM, Vlad Buslov wrote:
>>>
>>> ...
>>>
>>>> diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h
>>>> index 18e22a5a6550..239c73f29471 100644
>>>> --- a/include/net/sch_generic.h
>>>> +++ b/include/net/sch_generic.h
>>>> @@ -90,6 +90,7 @@ struct Qdisc {
>>>>    struct gnet_stats_queue __percpu *cpu_qstats;
>>>>    int                     padded;
>>>>    refcount_t              refcnt;
>>>> +  struct rcu_head         rcu;
>>>>  
>>>>    /*
>>>>     * For performance sake on SMP, we put highly modified fields at the end
>>>
>>> Probably better to move this at the end of struct Qdisc,
>>> not risking unexpected performance regressions in fast path.
>>
>> Do you mean regressions on UP? On SMP it looks like this field
>> fits in the unused gap created by:
>>
>>      struct sk_buff_head     gso_skb ____cacheline_aligned_in_smp;
>>
>> Kirill
> 
> Hi Eric, Kirill
> 
> I intentionally put rcu_head here in order for it not to be in same
> cache line with "highly modified fields" (according to comment).

My personal preference would have been to use the last cache line
for a new 'control path field', and leave holes in the first one
for future needs in fast path.

But this is a minor detail really, either choice is fine.

Reply via email to