lkml.org 
[lkml]   [2019]   [Feb]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 18/34] rhashtable: reorganize struct rhashtable layout
    Date
    4.4-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Eric Dumazet <edumazet@google.com>

    commit e5d672a0780d9e7118caad4c171ec88b8299398d upstream.

    While under frags DDOS I noticed unfortunate false sharing between
    @nelems and @params.automatic_shrinking

    Move @nelems at the end of struct rhashtable so that first cache line
    is shared between all cpus, because almost never dirtied.

    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    include/linux/rhashtable.h | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    --- a/include/linux/rhashtable.h
    +++ b/include/linux/rhashtable.h
    @@ -133,23 +133,23 @@ struct rhashtable_params {
    /**
    * struct rhashtable - Hash table handle
    * @tbl: Bucket table
    - * @nelems: Number of elements in table
    * @key_len: Key length for hashfn
    * @elasticity: Maximum chain length before rehash
    * @p: Configuration parameters
    * @run_work: Deferred worker to expand/shrink asynchronously
    * @mutex: Mutex to protect current/future table swapping
    * @lock: Spin lock to protect walker list
    + * @nelems: Number of elements in table
    */
    struct rhashtable {
    struct bucket_table __rcu *tbl;
    - atomic_t nelems;
    unsigned int key_len;
    unsigned int elasticity;
    struct rhashtable_params p;
    struct work_struct run_work;
    struct mutex mutex;
    spinlock_t lock;
    + atomic_t nelems;
    };

    /**

    \
     
     \ /
      Last update: 2019-02-07 12:43    [W:2.049 / U:0.164 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site