Trying again as the repost doesn't seem to show up on the list either. For this series:
Reviewed-and-tested-by: Bill Fischofer <bill.fischo...@linaro.org> On Tue, Nov 15, 2016 at 5:55 PM, Bill Fischofer <bill.fischo...@linaro.org> wrote: > Reposting this since it doesn't seem to have made it to the mailing list. > > For this series: > > Reviewed-and-tested-by: Bill Fischofer <bill.fischo...@linaro.org> > > On Tue, Nov 15, 2016 at 8:41 AM, Bill Fischofer <bill.fischo...@linaro.org > > wrote: > >> For this series: >> >> Reviewed-and-tested-by: Bill Fischofer <bill.fischo...@linaro.org> >> >> On Thu, Nov 10, 2016 at 5:07 AM, Petri Savolainen < >> petri.savolai...@nokia.com> wrote: >> >>> Pool performance is optimized by using a ring as the global buffer >>> storage. >>> IPC build is disabled, since it needs large modifications due to >>> dependency to >>> pool internals. Old pool implementation was based on locks and linked >>> list of >>> buffer headers. New implementation maintain a ring of buffer handles, >>> which >>> enable fast, burst based allocs and frees. Also ring scales better with >>> number >>> of cpus than a list (enq and deq operations update opposite ends of the >>> pool). >>> >>> L2fwd link rate (%), 2 x 40GE, 64 byte packets >>> >>> direct- parallel- atomic- >>> cpus orig direct diff orig parall diff orig atomic >>> diff >>> 1 7 % 8 % 1 % 6 % 6 % 2 % 5.4 % 5.6 % >>> 4 % >>> 2 14 % 15 % 7 % 9 % 9 % 5 % 8 % 9 % >>> 8 % >>> 4 28 % 30 % 6 % 13 % 14 % 13 % 12 % 15 % >>> 19 % >>> 6 42 % 44 % 6 % 16 % 19 % 19 % 8 % 20 % >>> 150 % >>> 8 46 % 59 % 28 % 19 % 23 % 26 % 18 % 24 % >>> 34 % >>> 10 55 % 57 % 3 % 20 % 27 % 37 % 8 % 28 % >>> 264 % >>> 12 56 % 56 % -1 % 22 % 31 % 43 % 7 % 32 % >>> 357 % >>> >>> Max packet rate of NICs are reached with 10-12 cpu on direct mode. >>> Otherwise, >>> all cases were improved. Especially, scheduler driven cases suffered on >>> bad >>> pool scalability. >>> >>> changed in v3: >>> * rebased >>> * ipc disabled with #ifdef >>> * added support for multi-segment packets >>> * API: added explicit limits for packet length in alloc calls >>> * Corrected validation test and example application bugs found during >>> segmentation implementation >>> >>> changed in v2: >>> * rebased to api-next branch >>> * added a comment that ring size must be larger than number of items in >>> it >>> * fixed clang build issue >>> * added parens in align macro >>> >>> v1 reviews: >>> Reviewed-by: Brian Brooks <brian.bro...@linaro.org> >>> >>> >>> >>> Petri Savolainen (19): >>> linux-gen: ipc: disable build of ipc pktio >>> linux-gen: pktio: do not free zero packets >>> linux-gen: ring: created common ring implementation >>> linux-gen: align: added round up power of two >>> linux-gen: pool: reimplement pool with ring >>> linux-gen: ring: added multi enq and deq >>> linux-gen: pool: use ring multi enq and deq operations >>> linux-gen: pool: optimize buffer alloc >>> linux-gen: pool: clean up pool inlines functions >>> linux-gen: pool: ptr instead of hdl in buffer_alloc_multi >>> test: validation: buf: test alignment >>> test: performance: crypto: use capability to select max packet >>> test: correctly initialize pool parameters >>> test: validation: packet: fix bugs in tailroom and concat tests >>> linux-gen: packet: added support for segmented packets >>> test: validation: packet: improved multi-segment alloc test >>> api: packet: added limits for packet len on alloc >>> linux-gen: packet: remove zero len support from alloc >>> linux-gen: packet: enable multi-segment packets >>> >>> example/generator/odp_generator.c | 2 +- >>> include/odp/api/spec/packet.h | 9 +- >>> include/odp/api/spec/pool.h | 6 + >>> platform/linux-generic/Makefile.am | 1 + >>> .../include/odp/api/plat/packet_types.h | 6 +- >>> .../include/odp/api/plat/pool_types.h | 6 - >>> .../linux-generic/include/odp_align_internal.h | 34 +- >>> .../linux-generic/include/odp_buffer_inlines.h | 167 +-- >>> .../linux-generic/include/odp_buffer_internal.h | 120 +- >>> .../include/odp_classification_datamodel.h | 2 +- >>> .../linux-generic/include/odp_config_internal.h | 55 +- >>> .../linux-generic/include/odp_packet_internal.h | 87 +- >>> platform/linux-generic/include/odp_pool_internal.h | 289 +--- >>> platform/linux-generic/include/odp_ring_internal.h | 176 +++ >>> .../linux-generic/include/odp_timer_internal.h | 4 - >>> platform/linux-generic/odp_buffer.c | 22 +- >>> platform/linux-generic/odp_classification.c | 25 +- >>> platform/linux-generic/odp_crypto.c | 12 +- >>> platform/linux-generic/odp_packet.c | 717 ++++++++-- >>> platform/linux-generic/odp_packet_io.c | 2 +- >>> platform/linux-generic/odp_pool.c | 1440 >>> ++++++++------------ >>> platform/linux-generic/odp_queue.c | 4 +- >>> platform/linux-generic/odp_schedule.c | 102 +- >>> platform/linux-generic/odp_schedule_ordered.c | 4 +- >>> platform/linux-generic/odp_timer.c | 3 +- >>> platform/linux-generic/pktio/dpdk.c | 10 +- >>> platform/linux-generic/pktio/ipc.c | 3 +- >>> platform/linux-generic/pktio/loop.c | 2 +- >>> platform/linux-generic/pktio/netmap.c | 14 +- >>> platform/linux-generic/pktio/socket.c | 17 +- >>> platform/linux-generic/pktio/socket_mmap.c | 10 +- >>> test/common_plat/performance/odp_crypto.c | 47 +- >>> test/common_plat/performance/odp_pktio_perf.c | 2 +- >>> test/common_plat/performance/odp_scheduling.c | 8 +- >>> test/common_plat/validation/api/buffer/buffer.c | 113 +- >>> test/common_plat/validation/api/crypto/crypto.c | 2 +- >>> test/common_plat/validation/api/packet/packet.c | 96 +- >>> test/common_plat/validation/api/pktio/pktio.c | 21 +- >>> 38 files changed, 1745 insertions(+), 1895 deletions(-) >>> create mode 100644 platform/linux-generic/include/odp_ring_internal.h >>> >>> -- >>> 2.8.1 >>> >>> >> >