mbuf: fix performance with 128-byte cache line
authorJerin Jacob <jerin.jacob@caviumnetworks.com>
Fri, 29 Jan 2016 07:45:53 +0000 (13:15 +0530)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Thu, 11 Feb 2016 11:45:35 +0000 (12:45 +0100)
No need to split mbuf structure to two cache lines for 128-byte cache
line size targets as it can fit on a single 128-byte cache line.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
app/test/test_mbuf.c
lib/librte_eal/linuxapp/eal/include/exec-env/rte_kni_common.h
lib/librte_mbuf/rte_mbuf.h

index cfa12e3..98ff93a 100644 (file)
@@ -930,7 +930,7 @@ test_failing_mbuf_sanity_check(void)
 static int
 test_mbuf(void)
 {
-       RTE_BUILD_BUG_ON(sizeof(struct rte_mbuf) != RTE_CACHE_LINE_SIZE * 2);
+       RTE_BUILD_BUG_ON(sizeof(struct rte_mbuf) != RTE_CACHE_LINE_MIN_SIZE * 2);
 
        /* create pktmbuf pool if it does not exist */
        if (pktmbuf_pool == NULL) {
index 815abd6..7e5e598 100644 (file)
@@ -68,6 +68,8 @@
  */
 #define RTE_KNI_NAMESIZE 32
 
+#define RTE_CACHE_LINE_MIN_SIZE 64
+
 /*
  * Request id.
  */
@@ -118,7 +120,7 @@ struct rte_kni_mbuf {
        uint16_t data_len;      /**< Amount of data in segment buffer. */
 
        /* fields on second cache line */
-       char pad3[8] __attribute__((__aligned__(RTE_CACHE_LINE_SIZE)));
+       char pad3[8] __attribute__((__aligned__(RTE_CACHE_LINE_MIN_SIZE)));
        void *pool;
        void *next;
 };
index f234ac9..c973e9b 100644 (file)
@@ -814,7 +814,7 @@ struct rte_mbuf {
        uint16_t vlan_tci_outer;  /**< Outer VLAN Tag Control Identifier (CPU order) */
 
        /* second cache line - fields only used in slow path or on TX */
-       MARKER cacheline1 __rte_cache_aligned;
+       MARKER cacheline1 __rte_cache_min_aligned;
 
        union {
                void *userdata;   /**< Can be used for external metadata */