By reordering the data elements in dpif_upcall structure, pad bytes can be reduced and also a cache line.
Before: structure size:768, holes:1, sum padbytes:60, cachelines:12 After: structure size:656, holes:1, sum padbytes:4, cachelines:11 Signed-off-by: Bhanuprakash Bodireddy <bhanuprakash.bodire...@intel.com> Signed-off-by: Antonio Fischetti <antonio.fische...@intel.com> --- lib/dpif.h | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/dpif.h b/lib/dpif.h index a7c5097..4a4bb3d 100644 --- a/lib/dpif.h +++ b/lib/dpif.h @@ -779,17 +779,18 @@ const char *dpif_upcall_type_to_string(enum dpif_upcall_type); struct dpif_upcall { /* All types. */ enum dpif_upcall_type type; - struct dp_packet packet; /* Packet data. */ - struct nlattr *key; /* Flow key. */ - size_t key_len; /* Length of 'key' in bytes. */ - ovs_u128 ufid; /* Unique flow identifier for 'key'. */ - struct nlattr *mru; /* Maximum receive unit. */ - struct nlattr *cutlen; /* Number of bytes shrink from the end. */ /* DPIF_UC_ACTION only. */ - struct nlattr *userdata; /* Argument to OVS_ACTION_ATTR_USERSPACE. */ - struct nlattr *out_tun_key; /* Output tunnel key. */ struct nlattr *actions; /* Argument to OVS_ACTION_ATTR_USERSPACE. */ + struct nlattr *out_tun_key; /* Output tunnel key. */ + struct nlattr *userdata; /* Argument to OVS_ACTION_ATTR_USERSPACE. */ + + struct nlattr *cutlen; /* Number of bytes shrink from the end. */ + struct nlattr *mru; /* Maximum receive unit. */ + ovs_u128 ufid; /* Unique flow identifier for 'key'. */ + struct dp_packet packet; /* Packet data. */ + struct nlattr *key; /* Flow key. */ + size_t key_len; /* Length of 'key' in bytes. */ }; /* A callback to notify higher layer of dpif about to be purged, so that -- 2.4.11 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev