Hi

This might not be a good idea. With these modifications, the functions are not inlined any more (attribute inline), and not post-optimized either (-f lto)

As per ABI, most of the registers must be saved on the stack before invoking a function. This is not noticeable in isolated test/perf code where there is not much context to save and restore at each function call, but it destroys performance in real heavy application where it is expected, for performance reasons, that rte_memcpy is really an inlined leaf function and all code can be inlined and optimized at compile time.

The DPDK design logic has always been in the past to provide the most efficient implementation for a designated target platform. Else there would not be no advantage to provide rte_memcpy() over the standard generic memcpy() function.

Such type of code is slowly starting to creep into DPDK codebase. an other example is the support for dynamic callbacks in rte_eth_tx_burst().

If multi-platform MUST be supported at run time, the right trade-off would be to make-sure this type of code can be compiled out, e.g. add something like RTE_ENABLE_RUN_TIME_DISPATCH in the config file.

Regards,

Pierre


On 01/09/17 09:58, dev-requ...@dpdk.org wrote:
Send dev mailing list submissions to
        dev@dpdk.org

To subscribe or unsubscribe via the World Wide Web, visit
        http://dpdk.org/ml/listinfo/dev
or, via email, send a message with subject or body 'help' to
        dev-requ...@dpdk.org

You can reach the person managing the list at
        dev-ow...@dpdk.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of dev digest..."


Today's Topics:

    1. [PATCH v2 0/3] dynamic linking support (Xiaoyun Li)
    2. [PATCH v2 1/3] eal/x86: run-time dispatch over memcpy (Xiaoyun Li)


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

Message: 1
Date: Fri,  1 Sep 2017 16:56:59 +0800
From: Xiaoyun Li <xiaoyun...@intel.com>
To: bruce.richard...@intel.com
Cc: dev@dpdk.org, zhihong.w...@intel.com, qi.z.zh...@intel.com,
        wenzhuo...@intel.com, Xiaoyun Li <xiaoyun...@intel.com>
Subject: [dpdk-dev] [PATCH v2 0/3] dynamic linking support
Message-ID: <1504256222-32969-1-git-send-email-xiaoyun...@intel.com>

This patchset dynamically selects functions at run-time based on CPU flags
that current machine supports. This patchset modifies mempcy, memcpy perf
test and x86 EFD, using function pointers and bind them at constructor time.
Then in the cloud environment, users can compiler once for the minimum target
such as 'haswell'(not 'native') and run on different platforms (equal or above
haswell) and can get ISA optimization based on running CPU.

Xiaoyun Li (3):
   eal/x86: run-time dispatch over memcpy
   app/test: run-time dispatch over memcpy perf test
   efd: run-time dispatch over x86 EFD functions

  .../common/include/arch/x86/rte_memcpy.h           | 343 +++++++++++++--------
  lib/librte_efd/rte_efd_x86.h                       |  41 ++-
  mk/rte.cpuflags.mk                                 |  14 +
  test/test/test_memcpy_perf.c                       |  40 ++-
  4 files changed, 296 insertions(+), 142 deletions(-)


Reply via email to