http://bugs.dpdk.org/show_bug.cgi?id=1906

            Bug ID: 1906
           Summary: Use DPDK memory for lcore variables
           Product: wishes
           Version: unspecified
          Hardware: All
                OS: All
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: any
          Assignee: [email protected]
          Reporter: [email protected]
  Target Milestone: ---
             Group: wishes-managers

Goal: Use DPDK memory for lcore variables

Benefits:
1. lcore variables are stored in hugepages, with fewer TLB misses
2. lcore variables could be shared with secondary process

Means:
Compared to (RTE_CACHE_GUARD'ed) arrays indexed by lcore id, the main benefit
of lcore variables is that the variables can share the same CPU cache line,
which improves CPU cache efficiency.
The effect of cache line sharing depends on the size of the variable.
Multiple small variables can share the same CPU cache line.
Variables spanning multiple CPU cache lines have a smaller degree of overlap
within CPU cache lines.

Memory for lcore variables is allocated in chunks of RTE_MAX_LCORE_VAR *
RTE_MAX_LCORE bytes, where RTE_MAX_LCORE_VAR is the max size of an lcore
variable.

The default RTE_MAX_LCORE_VAR is 128 KB.
If using mlockall() to pin RAM to the DPDK application, the benefits of using
the standard heap with normal 4 KB pages for lcore variables - not using more
RAM than actually used by lcore variables (regardless of the size of the memory
chunks allocated for lcore variables) - disappears.

Since lcore variables' benefit of CPU cache line sharing decreases when the
lcore variables are large, it would be reasonable to reduce the max size of
lcore variables (RTE_MAX_LCORE_VAR) significantly, and recommend using other
methods for storing large per-lcore variables.

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to