From: Stephen Hemminger <stephen@networkplumber.org>
To: "Morten Brørup" <mb@smartsharesystems.com>
Cc: <olivier.matz@6wind.com>, <andrew.rybchenko@oktetlabs.ru>,
<dev@dpdk.org>
Subject: Re: [PATCH] mempool: split statistics from debug
Date: Sun, 30 Oct 2022 09:12:59 -0700 [thread overview]
Message-ID: <20221030091259.21b7148d@hermes.local> (raw)
In-Reply-To: <98CBD80474FA8B44BF855DF32C47DC35D87463@smartserver.smartshare.dk>
On Sun, 30 Oct 2022 15:04:18 +0100
Morten Brørup <mb@smartsharesystems.com> wrote:
> > From: Morten Brørup [mailto:mb@smartsharesystems.com]
> > Sent: Sunday, 30 October 2022 12.55
> >
> > Split statistics from debug, to make mempool statistics available
> > without
> > the performance cost of continuously validating the cookies in the
> > mempool
> > elements.
>
> mempool_perf_autotest shows that the rate_persec drops to a third (-66 %) when enabling full mempool debug - quite prohibitive!
>
> With this patch, the performance cost is much lower. I don't have detailed test results, but the initial tests without mempool cache show a performance drop of -11 %. Significant, but not prohibitive.
One trick to avoid conditional in fast path would be to add a dummy stats[] per core.
Another would be to move the fast path get/put stats into the mempool_cache.
The current model has stats[] per cpu always on another cache line.
diff --git a/lib/mempool/rte_mempool.h b/lib/mempool/rte_mempool.h
index 1f5707f46a21..87905b7286a6 100644
--- a/lib/mempool/rte_mempool.h
+++ b/lib/mempool/rte_mempool.h
@@ -236,8 +236,10 @@ struct rte_mempool {
struct rte_mempool_memhdr_list mem_list; /**< List of memory chunks */
#ifdef RTE_LIBRTE_MEMPOOL_DEBUG
- /** Per-lcore statistics. */
- struct rte_mempool_debug_stats stats[RTE_MAX_LCORE];
+ /** Per-lcore statistics.
+ * Allocate one additional per-cpu slot for non-DPDK threads
+ */
+ struct rte_mempool_debug_stats stats[RTE_MAX_LCORE + 1];
#endif
} __rte_cache_aligned;
@@ -302,10 +304,7 @@ struct rte_mempool {
*/
#ifdef RTE_LIBRTE_MEMPOOL_DEBUG
#define RTE_MEMPOOL_STAT_ADD(mp, name, n) do { \
- unsigned __lcore_id = rte_lcore_id(); \
- if (__lcore_id < RTE_MAX_LCORE) { \
- mp->stats[__lcore_id].name += n; \
- } \
+ (mp)->stats[rte_lcore_id()].name += n;
} while (0)
#else
#define RTE_MEMPOOL_STAT_ADD(mp, name, n) do {} while (0)
next prev parent reply other threads:[~2022-10-30 16:13 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-30 11:54 [PATCH] mempool: split statistics from debug Morten Brørup
2022-10-30 14:04 ` Morten Brørup
2022-10-30 16:12 ` Stephen Hemminger [this message]
2022-10-30 20:29 ` Morten Brørup
2022-10-31 11:26 ` [PATCH v2 1/3] " Morten Brørup
2022-10-31 11:26 ` [PATCH v2 2/3] mempool: include non-DPDK threads in statistics Morten Brørup
2022-11-02 7:52 ` Mattias Rönnblom
2022-11-02 9:09 ` Morten Brørup
2022-11-02 15:19 ` Stephen Hemminger
2022-11-02 15:37 ` Morten Brørup
2022-11-02 17:53 ` Mattias Rönnblom
2022-11-03 8:59 ` Morten Brørup
2022-11-04 8:58 ` Mattias Rönnblom
2022-11-04 10:01 ` Morten Brørup
2022-11-07 7:26 ` Mattias Rönnblom
2022-11-07 8:56 ` Morten Brørup
2022-10-31 11:26 ` [PATCH v2 3/3] mempool: use cache for frequently updated statistics Morten Brørup
2022-11-02 8:01 ` Mattias Rönnblom
2022-11-02 9:29 ` Morten Brørup
2022-11-02 17:55 ` Mattias Rönnblom
2022-11-04 11:17 ` [PATCH v3 1/3] mempool: split stats from debug Morten Brørup
2022-11-04 11:17 ` [PATCH v3 2/3] mempool: add stats for unregistered non-EAL threads Morten Brørup
2022-11-04 11:17 ` [PATCH v3 3/3] mempool: use cache for frequently updated stats Morten Brørup
2022-11-04 12:03 ` [PATCH v4 1/3] mempool: split stats from debug Morten Brørup
2022-11-04 12:03 ` [PATCH v4 2/3] mempool: add stats for unregistered non-EAL threads Morten Brørup
2022-11-06 11:34 ` Andrew Rybchenko
2022-11-04 12:03 ` [PATCH v4 3/3] mempool: use cache for frequently updated stats Morten Brørup
2022-11-06 11:40 ` Andrew Rybchenko
2022-11-06 11:50 ` Morten Brørup
2022-11-06 11:59 ` Andrew Rybchenko
2022-11-06 12:16 ` Morten Brørup
2022-11-07 7:30 ` Mattias Rönnblom
2022-11-08 9:20 ` Konstantin Ananyev
2022-11-08 11:21 ` Morten Brørup
2022-11-06 11:32 ` [PATCH v4 1/3] mempool: split stats from debug Andrew Rybchenko
2022-11-09 18:18 ` [PATCH v5 " Morten Brørup
2022-11-09 18:18 ` [PATCH v5 2/3] mempool: add stats for unregistered non-EAL threads Morten Brørup
2022-11-09 18:18 ` [PATCH v5 3/3] mempool: use cache for frequently updated stats Morten Brørup
2022-11-10 16:36 ` Thomas Monjalon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221030091259.21b7148d@hermes.local \
--to=stephen@networkplumber.org \
--cc=andrew.rybchenko@oktetlabs.ru \
--cc=dev@dpdk.org \
--cc=mb@smartsharesystems.com \
--cc=olivier.matz@6wind.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.