[dpdk-dev,3/3] vhost: arrange virtio_net fields for better cache sharing
Commit Message
the ifname[] field takes so much space, that it seperate some frequently
used fields into different caches, say, features and broadcast_rarp.
This patch move all those fields that will be accessed frequently in Rx/Tx
together (before the ifname[] field) to let them share one cache line.
Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
---
lib/librte_vhost/vhost-net.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
Comments
On 5/3/2016 8:42 AM, Yuanhan Liu wrote:
> the ifname[] field takes so much space, that it seperate some frequently
> used fields into different caches, say, features and broadcast_rarp.
>
> This patch move all those fields that will be accessed frequently in Rx/Tx
> together (before the ifname[] field) to let them share one cache line.
>
> Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
Acked-by: Huawei Xie <huawei.xie@intel.com>
@@ -123,16 +123,16 @@ struct virtio_net {
int vid;
uint32_t flags;
uint16_t vhost_hlen;
+ /* to tell if we need broadcast rarp packet */
+ rte_atomic16_t broadcast_rarp;
+ uint32_t virt_qp_nb;
+ struct vhost_virtqueue *virtqueue[VHOST_MAX_QUEUE_PAIRS * 2];
#define IF_NAME_SZ (PATH_MAX > IFNAMSIZ ? PATH_MAX : IFNAMSIZ)
char ifname[IF_NAME_SZ];
- uint32_t virt_qp_nb;
uint64_t log_size;
uint64_t log_base;
struct ether_addr mac;
- /* to tell if we need broadcast rarp packet */
- rte_atomic16_t broadcast_rarp;
- struct vhost_virtqueue *virtqueue[VHOST_MAX_QUEUE_PAIRS * 2];
} __rte_cache_aligned;
/**