DPDK patches and discussions
 help / color / mirror / Atom feed
From: David Marchand <david.marchand@redhat.com>
To: Paul Szczepanek <paul.szczepanek@arm.com>
Cc: dev@dpdk.org, mb@smartsharesystems.com,
	 Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>,
	 Kamalakshitha Aligeri <kamalakshitha.aligeri@arm.com>,
	Nathan Brown <nathan.brown@arm.com>,
	 Jack Bond-Preston <jack.bond-preston@foss.arm.com>,
	Thomas Monjalon <thomas@monjalon.net>
Subject: Re: [PATCH v14 3/6] ptr_compress: add pointer compression library
Date: Mon, 10 Jun 2024 17:18:56 +0200	[thread overview]
Message-ID: <CAJFAV8yQ9EdvZ4eFgpapzJ93Gnc67R58mGnseXcnLMSfq2qt5A@mail.gmail.com> (raw)
In-Reply-To: <20240607151000.98562-4-paul.szczepanek@arm.com>

Hello,

On Fri, Jun 7, 2024 at 5:10 PM Paul Szczepanek <paul.szczepanek@arm.com> wrote:
>
> Add a new utility header for compressing pointers. The provided
> functions can store pointers as 32-bit or 16-bit offsets.
>
> The compression takes advantage of the fact that pointers are
> usually located in a limited memory region (like a mempool).
> We can compress them by converting them to offsets from a base
> memory address. Offsets can be stored in fewer bytes (dictated
> by the memory region size and alignment of the pointer).
> For example: an 8 byte aligned pointer which is part of a 32GB
> memory pool can be stored in 4 bytes.
>
> Suggested-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
> Signed-off-by: Paul Szczepanek <paul.szczepanek@arm.com>
> Signed-off-by: Kamalakshitha Aligeri <kamalakshitha.aligeri@arm.com>
> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
> Reviewed-by: Nathan Brown <nathan.brown@arm.com>
> Reviewed-by: Jack Bond-Preston <jack.bond-preston@foss.arm.com>
> Acked-by: Morten Brørup <mb@smartsharesystems.com>
> ---
>  MAINTAINERS                            |   4 +
>  doc/api/doxy-api-index.md              |   1 +
>  doc/api/doxy-api.conf.in               |   1 +
>  doc/guides/rel_notes/release_24_07.rst |   5 +
>  lib/meson.build                        |   1 +
>  lib/ptr_compress/meson.build           |   4 +
>  lib/ptr_compress/rte_ptr_compress.h    | 324 +++++++++++++++++++++++++
>  7 files changed, 340 insertions(+)
>  create mode 100644 lib/ptr_compress/meson.build
>  create mode 100644 lib/ptr_compress/rte_ptr_compress.h
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index c9adff9846..27b2f03e6c 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -1694,6 +1694,10 @@ M: Chenbo Xia <chenbox@nvidia.com>
>  M: Gaetan Rivet <grive@u256.net>
>  F: lib/pci/
>
> +Pointer Compression
> +M: Paul Szczepanek <paul.szczepanek@arm.com>
> +F: lib/ptr_compress/
> +
>  Power management
>  M: Anatoly Burakov <anatoly.burakov@intel.com>
>  M: David Hunt <david.hunt@intel.com>
> diff --git a/doc/api/doxy-api-index.md b/doc/api/doxy-api-index.md
> index 8c1eb8fafa..f9283154f8 100644
> --- a/doc/api/doxy-api-index.md
> +++ b/doc/api/doxy-api-index.md
> @@ -222,6 +222,7 @@ The public API headers are grouped by topics:
>    [config file](@ref rte_cfgfile.h),
>    [key/value args](@ref rte_kvargs.h),
>    [argument parsing](@ref rte_argparse.h),
> +  [ptr_compress](@ref rte_ptr_compress.h),
>    [string](@ref rte_string_fns.h),
>    [thread](@ref rte_thread.h)
>
> diff --git a/doc/api/doxy-api.conf.in b/doc/api/doxy-api.conf.in
> index 27afec8b3b..a8823c046f 100644
> --- a/doc/api/doxy-api.conf.in
> +++ b/doc/api/doxy-api.conf.in
> @@ -71,6 +71,7 @@ INPUT                   = @TOPDIR@/doc/api/doxy-api-index.md \
>                            @TOPDIR@/lib/pipeline \
>                            @TOPDIR@/lib/port \
>                            @TOPDIR@/lib/power \
> +                          @TOPDIR@/lib/ptr_compress \
>                            @TOPDIR@/lib/rawdev \
>                            @TOPDIR@/lib/rcu \
>                            @TOPDIR@/lib/regexdev \
> diff --git a/doc/guides/rel_notes/release_24_07.rst b/doc/guides/rel_notes/release_24_07.rst
> index a69f24cf99..4711792e61 100644
> --- a/doc/guides/rel_notes/release_24_07.rst
> +++ b/doc/guides/rel_notes/release_24_07.rst
> @@ -55,6 +55,11 @@ New Features
>       Also, make sure to start the actual text at the margin.
>       =======================================================
>
> +* **Introduced pointer compression library.**
> +
> +  Library provides functions to compress and decompress arrays of pointers
> +  which can improve application performance under certain conditions.
> +  Performance test was added to help users evaluate performance on their setup.

Please, double empty line before a new section in the release notes.


>
>  Removed Items
>  -------------
> diff --git a/lib/meson.build b/lib/meson.build
> index 7c90602bf5..63becee142 100644
> --- a/lib/meson.build
> +++ b/lib/meson.build
> @@ -14,6 +14,7 @@ libraries = [
>          'argparse',
>          'telemetry', # basic info querying
>          'eal', # everything depends on eal
> +        'ptr_compress',
>          'ring',
>          'rcu', # rcu depends on ring
>          'mempool',
> diff --git a/lib/ptr_compress/meson.build b/lib/ptr_compress/meson.build
> new file mode 100644
> index 0000000000..e92706a45f
> --- /dev/null
> +++ b/lib/ptr_compress/meson.build
> @@ -0,0 +1,4 @@
> +# SPDX-License-Identifier: BSD-3-Clause
> +# Copyright(c) 2024 Arm Limited
> +
> +headers = files('rte_ptr_compress.h')
> diff --git a/lib/ptr_compress/rte_ptr_compress.h b/lib/ptr_compress/rte_ptr_compress.h
> new file mode 100644
> index 0000000000..bf9cfb0661
> --- /dev/null
> +++ b/lib/ptr_compress/rte_ptr_compress.h
> @@ -0,0 +1,324 @@
> +/* SPDX-License-Identifier: BSD-3-Clause
> + * Copyright(c) 2024 Arm Limited
> + */
> +
> +#ifndef RTE_PTR_COMPRESS_H
> +#define RTE_PTR_COMPRESS_H
> +
> +/**
> + * @file
> + * Pointer compression and decompression functions.
> + *
> + * When passing arrays full of pointers between threads, memory containing
> + * the pointers is copied multiple times which is especially costly between
> + * cores. These functions allow us to compress the pointers.
> + *
> + * Compression takes advantage of the fact that pointers are usually located in
> + * a limited memory region. We compress them by converting them to offsets from
> + * a base memory address. Offsets can be stored in fewer bytes.
> + *
> + * The compression functions come in two varieties: 32-bit and 16-bit.
> + *
> + * To determine how many bits are needed to compress the pointer calculate

Please add a ,
... to compress the pointer,  calculate ...

> + * the biggest offset possible (highest value pointer - base pointer)
> + * and shift the value right according to alignment (shift by exponent of the
> + * power of 2 of alignment: aligned by 4 - shift by 2, aligned by 8 - shift by
> + * 3, etc.). The resulting value must fit in either 32 or 16 bits.
> + *
> + * For usage example and further explanation please see "Pointer Compression" in
> + * doc/guides/prog_guide/ptr_compress_lib.rst

I don't like refering to a path in the sources: the rendered doc won't
link to the actual documentation page, and this path may get incorrect
in the future if for some reason the doc is renamed or moved.
The simpler is to state "please see this library documentation
programming guide".


> + */
> +
> +#include <stdint.h>
> +#include <inttypes.h>
> +
> +#include <rte_branch_prediction.h>
> +#include <rte_common.h>
> +#include <rte_debug.h>
> +#include <rte_vect.h>
> +#include <rte_mempool.h>

It is unneeded.
Please, don't create a dependency to the mempool library.


> +#include <rte_bitops.h>
> +
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> +
> +/**
> + * Calculate how many bits are required to store a value within a given range.
> + * This is to help decide which pointer compression functions can be used to
> + * store pointers contained within a memory range.
> + *
> + * @param range
> + *   The size of the range the value belongs to.

In my mind, a range takes the form of a set of two symbols.

Here, iiuc, what is needed/requested as an input is the number of
entries of a (contiguous) space.
So the naming is at least strange.

> + * @return
> + *   Number of bits required to store a value.
> + **/
> +#define RTE_PTR_COMPRESS_BITS_REQUIRED_TO_STORE_VALUE_IN_RANGE(range) \
> +       (((uint64_t)range) < 2 ? 1 : \
> +               (sizeof(uint64_t) * CHAR_BIT - rte_clz64((uint64_t)range - 1)))

But now, I don't see why we need to expose this macro (and its sister
RTE_PTR_COMPRESS_BIT_SHIFT_FROM_ALIGNMENT) at all.
Can you clarify the usecase?


> +
> +/**
> + * Calculate how many bits in the address can be dropped without losing any
> + * information thanks to the alignment of the address.
> + *
> + * @param alignment
> + *   Memory alignment.
> + * @return
> + *   Size of shift allowed without dropping any information from the pointer.
> + **/
> +#define RTE_PTR_COMPRESS_BIT_SHIFT_FROM_ALIGNMENT(alignment) \
> +       ((alignment) == 0 ? 0 : rte_ctz64((uint64_t)alignment))
> +
> +/**
> + * Determine if rte_ptr_compress_16_shift can be used to compress pointers
> + * that contain addresses of memory objects whose memory is aligned by
> + * a given amount and contained in a given memory range.
> + *
> + * @param mem_range
> + *   The size of the memory region that contains the objects pointed to.

Again, can you rephrase and not use the term "range"?
Expected input here is a number of pointers / elements in a space.


> + * @param obj_alignment
> + *   The alignment of objects pointed to.
> + * @return
> + *   1 if function can be used, 0 otherwise.
> + **/
> +#define RTE_PTR_COMPRESS_CAN_COMPRESS_16_SHIFT(mem_range, obj_alignment) \
> +       ((RTE_PTR_COMPRESS_BITS_REQUIRED_TO_STORE_VALUE_IN_RANGE(mem_range) - \
> +       RTE_PTR_COMPRESS_BIT_SHIFT_FROM_ALIGNMENT(obj_alignment)) <= 16 ? 1 : 0)
> +
> +/**
> + * Determine if rte_ptr_compress_32_shift can be used to compress pointers
> + * that contain addresses of memory objects whose memory is aligned by
> + * a given amount and contained in a given memory range.
> + *
> + * @param mem_range
> + *   The size of the memory region that contains the objects pointed to.
> + * @param obj_alignment
> + *   The alignment of objects pointed to.
> + * @return
> + *   1 if function can be used, 0 otherwise.
> + **/
> +#define RTE_PTR_COMPRESS_CAN_COMPRESS_32_SHIFT(mem_range, obj_alignment) \
> +       ((RTE_PTR_COMPRESS_BITS_REQUIRED_TO_STORE_VALUE_IN_RANGE(mem_range) - \
> +       RTE_PTR_COMPRESS_BIT_SHIFT_FROM_ALIGNMENT(obj_alignment)) <= 32 ? 1 : 0)

RTE_PTR_COMPRESS_CAN_COMPRESS_16_SHIFT and
RTE_PTR_COMPRESS_CAN_COMPRESS_32_SHIFT do the same job.
The only thing that differs is the size of the compressed space, so
maybe this size could be passed as an input.

No strong opinion though.


> +
> +/**
> + * Compress pointers into 32-bit offsets from base pointer.
> + *
> + * @note It is programmer's responsibility to ensure the resulting offsets fit
> + * into 32 bits. Alignment of the structures pointed to by the pointers allows
> + * us to drop bits from the offsets. This is controlled by the bit_shift
> + * parameter. This means that if structures are aligned by 8 bytes they must be
> + * within 32GB of the base pointer. If there is no such alignment guarantee they
> + * must be within 4GB.
> + *
> + * @param ptr_base
> + *   A pointer used to calculate offsets of pointers in src_table.
> + * @param src_table
> + *   A pointer to an array of pointers.
> + * @param dest_table
> + *   A pointer to an array of compressed pointers returned by this function.
> + * @param n
> + *   The number of objects to compress, must be strictly positive.
> + * @param bit_shift
> + *   Byte alignment of memory pointed to by the pointers allows for
> + *   bits to be dropped from the offset and hence widen the memory region that
> + *   can be covered. This controls how many bits are right shifted.
> + **/
> +static __rte_always_inline void
> +rte_ptr_compress_32_shift(void *ptr_base, void * const *src_table,
> +               uint32_t *dest_table, size_t n, uint8_t bit_shift)
> +{
> +       size_t i = 0;
> +#if defined RTE_HAS_SVE_ACLE && !defined RTE_ARCH_ARMv8_AARCH32

Note: DPDK usually split per architecture implementation in separate
header files, but I guess this is okay in the current form with #ifdef
for now..

[snip]


-- 
David Marchand


  reply	other threads:[~2024-06-10 15:19 UTC|newest]

Thread overview: 141+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-27 15:08 [RFC 0/2] add pointer compression API Paul Szczepanek
2023-09-27 15:08 ` [RFC 1/2] eal: add pointer compression functions Paul Szczepanek
2023-10-09 15:54   ` Thomas Monjalon
2023-10-11 13:36     ` Honnappa Nagarahalli
2023-10-11 16:43       ` Paul Szczepanek
2023-10-11 12:43   ` [RFC v2 0/2] add pointer compression API Paul Szczepanek
2023-10-11 12:43     ` [RFC v2 1/2] eal: add pointer compression functions Paul Szczepanek
2023-10-11 12:43     ` [RFC v2 2/2] test: add pointer compress tests to ring perf test Paul Szczepanek
2023-10-31 18:10   ` [PATCH v3 0/3] add pointer compression API Paul Szczepanek
2023-10-31 18:10     ` [PATCH v3 1/3] eal: add pointer compression functions Paul Szczepanek
2023-10-31 18:10     ` [PATCH v3 2/3] test: add pointer compress tests to ring perf test Paul Szczepanek
2023-10-31 18:10     ` [PATCH v3 3/3] docs: add pointer compression to the EAL guide Paul Szczepanek
2023-11-01  7:42     ` [PATCH v3 0/3] add pointer compression API Morten Brørup
2023-11-01 12:52       ` Paul Szczepanek
2023-11-01 12:46   ` [PATCH v4 0/4] " Paul Szczepanek
2023-11-01 12:46     ` [PATCH v4 1/4] eal: add pointer compression functions Paul Szczepanek
2023-11-01 12:46     ` [PATCH v4 2/4] test: add pointer compress tests to ring perf test Paul Szczepanek
2023-11-01 12:46     ` [PATCH v4 3/4] docs: add pointer compression to the EAL guide Paul Szczepanek
2023-11-01 12:46     ` [PATCH v4 4/4] test: add unit test for ptr compression Paul Szczepanek
2023-11-01 18:12   ` [PATCH v5 0/4] add pointer compression API Paul Szczepanek
2023-11-01 18:12     ` [PATCH v5 1/4] eal: add pointer compression functions Paul Szczepanek
2024-02-11 15:32       ` Konstantin Ananyev
2023-11-01 18:12     ` [PATCH v5 2/4] test: add pointer compress tests to ring perf test Paul Szczepanek
2023-11-01 18:13     ` [PATCH v5 3/4] docs: add pointer compression to the EAL guide Paul Szczepanek
2023-11-01 18:13     ` [PATCH v5 4/4] test: add unit test for ptr compression Paul Szczepanek
2024-02-22  8:15     ` [PATCH v5 0/4] add pointer compression API Paul Szczepanek
2024-02-22 16:16       ` Konstantin Ananyev
2024-03-01 11:16         ` Morten Brørup
2024-03-01 16:12           ` Patrick Robb
2024-03-01 19:57           ` Honnappa Nagarahalli
2024-03-02 10:33             ` Morten Brørup
2024-03-06 22:31               ` Paul Szczepanek
2024-03-07  2:13                 ` Honnappa Nagarahalli
2024-03-04 14:44             ` Konstantin Ananyev
2024-05-15 17:00               ` Paul Szczepanek
2024-05-15 22:34                 ` Morten Brørup
2024-05-16  8:25                   ` Paul Szczepanek
2024-05-16  8:40                   ` Konstantin Ananyev
2024-05-24  8:33                     ` Paul Szczepanek
2024-05-24  9:09                       ` Konstantin Ananyev
2024-05-28 19:29                         ` Paul Szczepanek
2024-05-29 10:28                           ` Paul Szczepanek
2024-06-06 13:33                           ` Konstantin Ananyev
2024-02-29 16:03   ` [PATCH v6 " Paul Szczepanek
2024-02-29 16:03     ` [PATCH v6 1/4] eal: add pointer compression functions Paul Szczepanek
2024-02-29 16:03     ` [PATCH v6 2/4] test: add pointer compress tests to ring perf test Paul Szczepanek
2024-02-29 16:03     ` [PATCH v6 3/4] docs: add pointer compression to the EAL guide Paul Szczepanek
2024-02-29 16:03     ` [PATCH v6 4/4] test: add unit test for ptr compression Paul Szczepanek
2024-03-01 10:21   ` [PATCH v7 0/4] add pointer compression API Paul Szczepanek
2024-03-01 10:21     ` [PATCH v7 1/4] eal: add pointer compression functions Paul Szczepanek
2024-03-07 11:22       ` David Marchand
2024-03-01 10:21     ` [PATCH v7 2/4] test: add pointer compress tests to ring perf test Paul Szczepanek
2024-03-07 11:27       ` David Marchand
2024-03-01 10:21     ` [PATCH v7 3/4] docs: add pointer compression to the EAL guide Paul Szczepanek
2024-03-01 10:21     ` [PATCH v7 4/4] test: add unit test for ptr compression Paul Szczepanek
2024-03-07 11:30       ` David Marchand
2024-03-07 20:39   ` [PATCH v7 0/4] add pointer compression API Paul Szczepanek
2024-03-07 20:39     ` [PATCH v8 1/4] ptr_compress: add pointer compression library Paul Szczepanek
2024-03-07 20:39     ` [PATCH v8 2/4] test: add pointer compress tests to ring perf test Paul Szczepanek
2024-03-07 20:39     ` [PATCH v8 3/4] docs: add pointer compression guide Paul Szczepanek
2024-03-07 20:39     ` [PATCH v8 4/4] test: add unit test for ptr compression Paul Szczepanek
2024-03-08  8:27     ` [PATCH v7 0/4] add pointer compression API David Marchand
2024-03-10 19:34       ` Honnappa Nagarahalli
2024-03-11  7:44         ` David Marchand
2024-03-11 14:47   ` [PATCH v9 0/5] " Paul Szczepanek
2024-03-11 14:47     ` [PATCH v9 1/5] lib: allow libraries with no sources Paul Szczepanek
2024-03-11 15:23       ` Bruce Richardson
2024-03-15  8:33         ` Paul Szczepanek
2024-03-11 14:47     ` [PATCH v9 2/5] ptr_compress: add pointer compression library Paul Szczepanek
2024-03-11 14:47     ` [PATCH v9 3/5] test: add pointer compress tests to ring perf test Paul Szczepanek
2024-03-11 14:47     ` [PATCH v9 4/5] docs: add pointer compression guide Paul Szczepanek
2024-03-11 14:47     ` [PATCH v9 5/5] test: add unit test for ptr compression Paul Szczepanek
2024-03-11 20:31   ` [PATCH v10 0/5] add pointer compression API Paul Szczepanek
2024-03-11 20:31     ` [PATCH v10 1/5] lib: allow libraries with no sources Paul Szczepanek
2024-03-15  9:14       ` Bruce Richardson
2024-03-11 20:31     ` [PATCH v10 2/5] ptr_compress: add pointer compression library Paul Szczepanek
2024-03-11 20:31     ` [PATCH v10 3/5] test: add pointer compress tests to ring perf test Paul Szczepanek
2024-03-11 20:31     ` [PATCH v10 4/5] docs: add pointer compression guide Paul Szczepanek
2024-03-11 20:31     ` [PATCH v10 5/5] test: add unit test for ptr compression Paul Szczepanek
2024-05-24  8:36   ` [PATCH v11 0/6] add pointer compression API Paul Szczepanek
2024-05-24  8:36     ` [PATCH v11 1/6] lib: allow libraries with no sources Paul Szczepanek
2024-05-24  8:36     ` [PATCH v11 2/6] mempool: add functions to get extra mempool info Paul Szczepanek
2024-05-24 12:20       ` Morten Brørup
2024-05-28 19:33         ` Paul Szczepanek
2024-05-24  8:36     ` [PATCH v11 3/6] ptr_compress: add pointer compression library Paul Szczepanek
2024-05-24 12:50       ` Morten Brørup
2024-06-06 13:22       ` Konstantin Ananyev
2024-05-24  8:36     ` [PATCH v11 4/6] test: add pointer compress tests to ring perf test Paul Szczepanek
2024-05-24  8:36     ` [PATCH v11 5/6] docs: add pointer compression guide Paul Szczepanek
2024-05-24  8:36     ` [PATCH v11 6/6] test: add unit test for ptr compression Paul Szczepanek
2024-05-29 10:22   ` [PATCH v12 0/6] add pointer compression API Paul Szczepanek
2024-05-29 10:22     ` [PATCH v12 1/6] lib: allow libraries with no sources Paul Szczepanek
2024-05-29 10:22     ` [PATCH v12 2/6] mempool: add functions to get extra mempool info Paul Szczepanek
2024-05-29 11:47       ` Morten Brørup
2024-05-29 13:56       ` Morten Brørup
2024-05-29 16:18         ` Paul Szczepanek
2024-05-30  0:56           ` Du, Frank
2024-05-29 10:22     ` [PATCH v12 3/6] ptr_compress: add pointer compression library Paul Szczepanek
2024-05-29 11:52       ` Morten Brørup
2024-05-29 10:22     ` [PATCH v12 4/6] test: add pointer compress tests to ring perf test Paul Szczepanek
2024-05-29 10:22     ` [PATCH v12 5/6] docs: add pointer compression guide Paul Szczepanek
2024-05-29 10:22     ` [PATCH v12 6/6] test: add unit test for ptr compression Paul Szczepanek
2024-05-30  9:40   ` [PATCH v13 0/6] add pointer compression API Paul Szczepanek
2024-05-30  9:40     ` [PATCH v13 1/6] lib: allow libraries with no sources Paul Szczepanek
2024-05-30  9:40     ` [PATCH v13 2/6] mempool: add functions to get extra mempool info Paul Szczepanek
2024-05-31  9:32       ` Morten Brørup
2024-06-06 12:28       ` Konstantin Ananyev
2024-06-07 15:12         ` Paul Szczepanek
2024-05-30  9:40     ` [PATCH v13 3/6] ptr_compress: add pointer compression library Paul Szczepanek
2024-05-30  9:40     ` [PATCH v13 4/6] test: add pointer compress tests to ring perf test Paul Szczepanek
2024-05-30  9:40     ` [PATCH v13 5/6] docs: add pointer compression guide Paul Szczepanek
2024-05-30  9:40     ` [PATCH v13 6/6] test: add unit test for ptr compression Paul Szczepanek
2024-06-04  9:06       ` Paul Szczepanek
2024-06-04  9:07       ` Paul Szczepanek
2024-05-30 13:35     ` [PATCH v13 0/6] add pointer compression API Paul Szczepanek
2024-06-04  9:04     ` Paul Szczepanek
2023-09-27 15:08 ` [RFC 2/2] test: add pointer compress tests to ring perf test Paul Szczepanek
2023-10-09 15:48   ` Thomas Monjalon
2024-06-07 15:09 ` [PATCH v14 0/6] add pointer compression API Paul Szczepanek
2024-06-07 15:09   ` [PATCH v14 1/6] lib: allow libraries with no sources Paul Szczepanek
2024-06-07 15:09   ` [PATCH v14 2/6] mempool: add functions to get extra mempool info Paul Szczepanek
2024-06-10 14:24     ` Konstantin Ananyev
2024-06-11 13:06       ` Paul Szczepanek
2024-06-07 15:09   ` [PATCH v14 3/6] ptr_compress: add pointer compression library Paul Szczepanek
2024-06-10 15:18     ` David Marchand [this message]
2024-06-10 15:37       ` Morten Brørup
2024-06-11 13:16       ` Paul Szczepanek
2024-06-07 15:09   ` [PATCH v14 4/6] test: add pointer compress tests to ring perf test Paul Szczepanek
2024-06-07 15:09   ` [PATCH v14 5/6] docs: add pointer compression guide Paul Szczepanek
2024-06-07 15:10   ` [PATCH v14 6/6] test: add unit test for ptr compression Paul Szczepanek
2024-06-11 12:59 ` [PATCH v15 0/6] add pointer compression API Paul Szczepanek
2024-06-11 12:59   ` [PATCH v15 1/6] lib: allow libraries with no sources Paul Szczepanek
2024-06-11 12:59   ` [PATCH v15 2/6] mempool: add functions to get extra mempool info Paul Szczepanek
2024-06-11 12:59   ` [PATCH v15 3/6] ptr_compress: add pointer compression library Paul Szczepanek
2024-06-11 12:59   ` [PATCH v15 4/6] test: add pointer compress tests to ring perf test Paul Szczepanek
2024-06-11 12:59   ` [PATCH v15 5/6] docs: add pointer compression guide Paul Szczepanek
2024-06-11 12:59   ` [PATCH v15 6/6] test: add unit test for ptr compression Paul Szczepanek
2024-06-14 10:28   ` [PATCH v15 0/6] add pointer compression API David Marchand
2024-06-17 10:02     ` David Marchand
2024-06-17 13:46       ` Paul Szczepanek
2024-06-17 13:57         ` David Marchand

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=CAJFAV8yQ9EdvZ4eFgpapzJ93Gnc67R58mGnseXcnLMSfq2qt5A@mail.gmail.com \
    --to=david.marchand@redhat.com \
    --cc=dev@dpdk.org \
    --cc=honnappa.nagarahalli@arm.com \
    --cc=jack.bond-preston@foss.arm.com \
    --cc=kamalakshitha.aligeri@arm.com \
    --cc=mb@smartsharesystems.com \
    --cc=nathan.brown@arm.com \
    --cc=paul.szczepanek@arm.com \
    --cc=thomas@monjalon.net \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).