Stefano Garzarella
2023-Mar-08 14:07 UTC
[PATCH] virtio: Reorder fields in 'struct virtqueue'
On Sat, Feb 18, 2023 at 09:10:31AM +0100, Christophe JAILLET wrote:>Group some variables based on their sizes to reduce hole and avoid padding. >On x86_64, this shrinks the size of 'struct virtqueue' >from 72 to 68 bytes. > >It saves a few bytes of memory. > >Signed-off-by: Christophe JAILLET <christophe.jaillet at wanadoo.fr> >---LGTM! Reviewed-by: Stefano Garzarella <sgarzare at redhat.com>>Using pahole > >Before: >=====>struct virtqueue { > struct list_head list; /* 0 16 */ > void (*callback)(struct virtqueue *); /* 16 8 */ > const char * name; /* 24 8 */ > struct virtio_device * vdev; /* 32 8 */ > unsigned int index; /* 40 4 */ > unsigned int num_free; /* 44 4 */ > unsigned int num_max; /* 48 4 */ > > /* XXX 4 bytes hole, try to pack */ > > void * priv; /* 56 8 */ > /* --- cacheline 1 boundary (64 bytes) --- */ > bool reset; /* 64 1 */ > > /* size: 72, cachelines: 2, members: 9 */ > /* sum members: 61, holes: 1, sum holes: 4 */ > /* padding: 7 */ > /* last cacheline: 8 bytes */ >}; > >After: >====>struct virtqueue { > struct list_head list; /* 0 16 */ > void (*callback)(struct virtqueue *); /* 16 8 */ > const char * name; /* 24 8 */ > struct virtio_device * vdev; /* 32 8 */ > unsigned int index; /* 40 4 */ > unsigned int num_free; /* 44 4 */ > unsigned int num_max; /* 48 4 */ > bool reset; /* 52 1 */ > > /* XXX 3 bytes hole, try to pack */ > > void * priv; /* 56 8 */ > > /* size: 64, cachelines: 1, members: 9 */ > /* sum members: 61, holes: 1, sum holes: 3 */ >}; >--- > include/linux/virtio.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > >diff --git a/include/linux/virtio.h b/include/linux/virtio.h >index 6ac2655500dc..9439ae898310 100644 >--- a/include/linux/virtio.h >+++ b/include/linux/virtio.h >@@ -35,8 +35,8 @@ struct virtqueue { > unsigned int index; > unsigned int num_free; > unsigned int num_max; >- void *priv; > bool reset; >+ void *priv; > }; > > int virtqueue_add_outbuf(struct virtqueue *vq, >-- >2.34.1 >