From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) by dpdk.org (Postfix) with ESMTP id DD81E98 for ; Tue, 24 Jul 2018 18:09:19 +0200 (CEST) Received: by mail-wr1-f54.google.com with SMTP id q10-v6so4703262wrd.4 for ; Tue, 24 Jul 2018 09:09:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=pQpIW9syCMveUXrJtRi++3qSHfuJGsiME8tLucsOpcQ=; b=VB2LEr1+gvCU2LNizGyd7w5CnwPfw0dckT8SGCiBX72S2rlCGupEmF9UtZRr6WWfkQ hDuy7LW9BmMEJt9QRBP4FfVothUY/5nJw9AXL6LvkiX1eyl8hG3N9XGxjWKxotoX8t2C GymHHBIWxDFWsEm+Fq82mBHSmb9bEervh8kqalfxc/SjnZIeJnT5X0sAuTBCeMabq3dS q8JxB7OprOQyEC/WCyTwX239kfRVOM8q3zmV0IlUPuxEGe/A2kFTmOOdwdmS0x/GboHg vKJ2H1+QqkshZ19JWOmQA+uHJyo6BD8LtzFzqeQ86aD2m7md/4hWaOpk/+gKl7BqcV+m Z69w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=pQpIW9syCMveUXrJtRi++3qSHfuJGsiME8tLucsOpcQ=; b=Drk1Rr5mfhiFXYA2nWIAc7MIx4m8aD7wVsyQADGbRKngsxSvzb3FnNS61/rtSi6Rlp yz3HuFWJSI1f1zuRif9Lmxc69e4pdE67V+uYXyvcXXkmXj3TNFNpcsHX6vjD8KqeSIkX zXQ6rtPBLSjo2ag/03aG+gKUKm5yd6w564gG3MlakeeyTNdNZgLJdTz64ZwRwSZVqTu+ ZpBZr4QkBbJHZeG/dh2AnjlBwBiUuvuL/WXU89TwZkq+T+4x6+PklwmO2uoAs486jkaA kTkw9B3Teafhf8/Q3I3LdGrtMtj3n8dZg+a7o4xQa6g0c3/8rCCyvHkP7tV1zYEbljtX 7SCg== X-Gm-Message-State: AOUpUlH7xWwnSgHx6DRyDcMpuwRKtlSPsJtq60MEYEFMsYrVInxZ+9DC HI40Qs74yOs8B58MpcgFvTOYzMGTfmU= X-Google-Smtp-Source: AAOMgpczg/tj2olCeNbSv9HtZ/hFy1WddYhYWs+pWzmhCqrTN5DebdAJmfrfKSnqZOIaKC+SXjqNJw== X-Received: by 2002:adf:9d1c:: with SMTP id k28-v6mr12634640wre.29.1532448559659; Tue, 24 Jul 2018 09:09:19 -0700 (PDT) Received: from localhost ([2a00:23c5:be94:4600:7b12:f8a0:fd52:f87d]) by smtp.gmail.com with ESMTPSA id e12-v6sm7357158wru.89.2018.07.24.09.09.18 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 24 Jul 2018 09:09:18 -0700 (PDT) From: luca.boccassi@gmail.com To: Yipeng Wang Cc: Pablo de Lara , dpdk stable Date: Tue, 24 Jul 2018 17:07:49 +0100 Message-Id: <20180724160752.20287-31-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180724160752.20287-1-luca.boccassi@gmail.com> References: <20180724160752.20287-1-luca.boccassi@gmail.com> Subject: [dpdk-stable] patch 'hash: fix key slot size accuracy' has been queued to LTS release 16.11.8 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Jul 2018 16:09:20 -0000 Hi, FYI, your patch has been queued to LTS release 16.11.8 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 07/26/18. So please shout if anyone has objections. Thanks. Luca Boccassi --- >>From 00431fffc36d49bc8f209751d90127f40611a647 Mon Sep 17 00:00:00 2001 From: Yipeng Wang Date: Tue, 10 Jul 2018 09:59:56 -0700 Subject: [PATCH] hash: fix key slot size accuracy [ upstream commit 575a48c961f47f1078bd1ceacf8484fb1038f7f8 ] This commit calculates the needed key slot size more accurately. The previous local cache fix requires the free slot ring to be larger than actually needed. The calculation of the value is inaccurate. Fixes: 5915699153d7 ("hash: fix scaling by reducing contention") Signed-off-by: Yipeng Wang Acked-by: Pablo de Lara --- lib/librte_hash/rte_cuckoo_hash.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/lib/librte_hash/rte_cuckoo_hash.c b/lib/librte_hash/rte_cuckoo_hash.c index bfc6f9773..049ff9884 100644 --- a/lib/librte_hash/rte_cuckoo_hash.c +++ b/lib/librte_hash/rte_cuckoo_hash.c @@ -155,13 +155,13 @@ rte_hash_create(const struct rte_hash_parameters *params) * except for the first cache */ num_key_slots = params->entries + (RTE_MAX_LCORE - 1) * - LCORE_CACHE_SIZE + 1; + (LCORE_CACHE_SIZE - 1) + 1; else num_key_slots = params->entries + 1; snprintf(ring_name, sizeof(ring_name), "HT_%s", params->name); /* Create ring (Dummy slot index is not enqueued) */ - r = rte_ring_create(ring_name, rte_align32pow2(num_key_slots - 1), + r = rte_ring_create(ring_name, rte_align32pow2(num_key_slots), params->socket_id, 0); if (r == NULL) { RTE_LOG(ERR, HASH, "memory allocation failed\n"); @@ -313,7 +313,7 @@ rte_hash_create(const struct rte_hash_parameters *params) h->add_key = ADD_KEY_SINGLEWRITER; /* Populate free slots ring. Entry zero is reserved for key misses. */ - for (i = 1; i < params->entries + 1; i++) + for (i = 1; i < num_key_slots; i++) rte_ring_sp_enqueue(r, (void *)((uintptr_t) i)); te->data = (void *) h; @@ -395,7 +395,7 @@ void rte_hash_reset(struct rte_hash *h) { void *ptr; - unsigned i; + uint32_t tot_ring_cnt, i; if (h == NULL) return; @@ -408,7 +408,13 @@ rte_hash_reset(struct rte_hash *h) rte_pause(); /* Repopulate the free slots ring. Entry zero is reserved for key misses */ - for (i = 1; i < h->entries + 1; i++) + if (h->hw_trans_mem_support) + tot_ring_cnt = h->entries + (RTE_MAX_LCORE - 1) * + (LCORE_CACHE_SIZE - 1); + else + tot_ring_cnt = h->entries; + + for (i = 1; i < tot_ring_cnt + 1; i++) rte_ring_sp_enqueue(h->free_slots, (void *)((uintptr_t) i)); if (h->hw_trans_mem_support) { -- 2.18.0