| From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
| From: Ram Muthiah <rammuthiah@google.com> |
| Date: Tue, 26 Jan 2021 20:27:32 -0800 |
| Subject: SUBMIT: ANDROID: Make vsock virtio packet buff size configurable |
| |
| When the android virtual device stays up for long periods of time, the |
| SLAB sustains everincreasing fragmentation. Contributing to this |
| fragmentation are the virtio packet buffer allocations which are a |
| drain on 64Kb compound pages. Eventually these can't be allocated due to |
| fragmentation. |
| |
| To enable successful allocations for this packet buffer, the packet |
| buffer's size needs to be reduced. |
| |
| To enable a reduction without impacting other partners, this var is |
| being exposed as a command line param. |
| |
| [CPNOTE: 06/07/21] Lee: Pinged the bug for status |
| [CPNOTE: 15/07/21] Lee: Ram suggests that this should go upstream |
| |
| Bug: 149494272 |
| Test: atest ManagedProfileLifecycleStressTest#testCreateStartDelete on |
| local cuttlefish device |
| Signed-off-by: Ram Muthiah <rammuthiah@google.com> |
| Change-Id: Ia4f9180025b64d61d9e2b882daa84460b8f08fd2 |
| --- |
| include/linux/virtio_vsock.h | 3 ++- |
| net/vmw_vsock/virtio_transport_common.c | 4 ++++ |
| 2 files changed, 6 insertions(+), 1 deletion(-) |
| |
| diff --git a/include/linux/virtio_vsock.h b/include/linux/virtio_vsock.h |
| --- a/include/linux/virtio_vsock.h |
| +++ b/include/linux/virtio_vsock.h |
| @@ -9,7 +9,8 @@ |
| |
| #define VIRTIO_VSOCK_DEFAULT_RX_BUF_SIZE (1024 * 4) |
| #define VIRTIO_VSOCK_MAX_BUF_SIZE 0xFFFFFFFFUL |
| -#define VIRTIO_VSOCK_MAX_PKT_BUF_SIZE (1024 * 64) |
| +#define VIRTIO_VSOCK_MAX_PKT_BUF_SIZE virtio_transport_max_vsock_pkt_buf_size |
| +extern uint virtio_transport_max_vsock_pkt_buf_size; |
| |
| enum { |
| VSOCK_VQ_RX = 0, /* for host to guest data */ |
| diff --git a/net/vmw_vsock/virtio_transport_common.c b/net/vmw_vsock/virtio_transport_common.c |
| --- a/net/vmw_vsock/virtio_transport_common.c |
| +++ b/net/vmw_vsock/virtio_transport_common.c |
| @@ -26,6 +26,10 @@ |
| /* Threshold for detecting small packets to copy */ |
| #define GOOD_COPY_LEN 128 |
| |
| +uint virtio_transport_max_vsock_pkt_buf_size = 64 * 1024; |
| +module_param(virtio_transport_max_vsock_pkt_buf_size, uint, 0444); |
| +EXPORT_SYMBOL_GPL(virtio_transport_max_vsock_pkt_buf_size); |
| + |
| static const struct virtio_transport * |
| virtio_transport_get_ops(struct vsock_sock *vsk) |
| { |