doc: add external memory feature
Document the addition of external memory support to DPDK. Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
This commit is contained in:
parent
c7f5dba7d4
commit
66498f0ffe
@ -213,6 +213,43 @@ Normally, these options do not need to be changed.
|
||||
can later be mapped into that preallocated VA space (if dynamic memory mode
|
||||
is enabled), and can optionally be mapped into it at startup.
|
||||
|
||||
Support for Externally Allocated Memory
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
It is possible to use externally allocated memory in DPDK, using a set of malloc
|
||||
heap API's. Support for externally allocated memory is implemented through
|
||||
overloading the socket ID - externally allocated heaps will have socket ID's
|
||||
that would be considered invalid under normal circumstances. Requesting an
|
||||
allocation to take place from a specified externally allocated memory is a
|
||||
matter of supplying the correct socket ID to DPDK allocator, either directly
|
||||
(e.g. through a call to ``rte_malloc``) or indirectly (through data
|
||||
structure-specific allocation API's such as ``rte_ring_create``).
|
||||
|
||||
Since there is no way DPDK can verify whether memory are is available or valid,
|
||||
this responsibility falls on the shoulders of the user. All multiprocess
|
||||
synchronization is also user's responsibility, as well as ensuring that all
|
||||
calls to add/attach/detach/remove memory are done in the correct order. It is
|
||||
not required to attach to a memory area in all processes - only attach to memory
|
||||
areas as needed.
|
||||
|
||||
The expected workflow is as follows:
|
||||
|
||||
* Get a pointer to memory area
|
||||
* Create a named heap
|
||||
* Add memory area(s) to the heap
|
||||
- If IOVA table is not specified, IOVA addresses will be assumed to be
|
||||
unavailable, and DMA mappings will not be performed
|
||||
- Other processes must attach to the memory area before they can use it
|
||||
* Get socket ID used for the heap
|
||||
* Use normal DPDK allocation procedures, using supplied socket ID
|
||||
* If memory area is no longer needed, it can be removed from the heap
|
||||
- Other processes must detach from this memory area before it can be removed
|
||||
* If heap is no longer needed, remove it
|
||||
- Socket ID will become invalid and will not be reused
|
||||
|
||||
For more information, please refer to ``rte_malloc`` API documentation,
|
||||
specifically the ``rte_malloc_heap_*`` family of function calls.
|
||||
|
||||
PCI Access
|
||||
~~~~~~~~~~
|
||||
|
||||
|
@ -54,6 +54,12 @@ New Features
|
||||
Also, make sure to start the actual text at the margin.
|
||||
=========================================================
|
||||
|
||||
* **Added support for using externally allocated memory in DPDK.**
|
||||
|
||||
DPDK has gained support for creating new ``rte_malloc`` heaps referencing
|
||||
memory that was created outside of DPDK's own page allocator, and using that
|
||||
memory natively with any other DPDK library or data structure.
|
||||
|
||||
* **Add support to offload more flow match and actions for CXGBE PMD**
|
||||
|
||||
Flow API support has been enhanced for CXGBE Poll Mode Driver to offload:
|
||||
|
Loading…
Reference in New Issue
Block a user