Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp3751629ybi; Mon, 29 Jul 2019 11:58:50 -0700 (PDT) X-Google-Smtp-Source: APXvYqxv1hRzf3f71fxC0UxfWswzT6HxFNNU+Vvcj3YmJRmhMbH5EJT/DbrZiizL5qghXKd8GxIm X-Received: by 2002:a62:e403:: with SMTP id r3mr36455427pfh.37.1564426730356; Mon, 29 Jul 2019 11:58:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564426730; cv=none; d=google.com; s=arc-20160816; b=l3yWIv8yTC40cO35VqqTLwClfhOoCSUiTEGslPWIDh5hQcV8Zd1V+MC096g2sv1zOo TU9N0xxz8zpRk5bYh+v41T45byFrk/Gr/Lg6GrvYCrQm+Qr+e6h2M51TBHH5kOxM/G++ yZXI4wXZ7TH4DERioxWegiILybvmZNKw+1dpaMwKc+8VFMwYyfAqB8cz/vyD0acParjN 9mGpu2ulwk9q3pvN4qH29vQsiVtztCMuy7Xto3gWjBSAWPJpgpejbnrFsI8R4js3ccNI 7LLmR+Av7pS/hlN4s5p+s0wfhNtzZQ8XqoyNFvl5/0EEGmDxyfr7EEXbq854zDvHmA1G SrHw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=ZKDqUs0ayhzO8fC3NvwV+tCFuuA/FPgD3ePdCx1GJqM=; b=z1Brd/KQy1Ktf8x4U4meJDs/Kl5tNvRDd3nkXuWHqb07OAnu5emXocoKIMcPRvW0II rr1ucCp+am3xoprelgTycUcYJMjTOzLKruWZ5IlflO5JCOFhlUKXYQxIP4iVt9P7/bBN 5dfZSa1L7JtAMKnCo/xO8wdL29S2XC1JWTrPKRpuOqCzdxovcBLuXLZTNfFc4zr04trD AUZXbES/CWWlOhaQnlNQq8WnvPDREkWgaE0tpR+s2k0NLTYkEW8F8OBtKiZrLK7J2FFt 7IBltgTIjh8JVKN/TpufIumINzesFpT6UJWtPRsummSpT6Fxtto8SNn39TQXeQ3fRrZ3 zjFQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a186si26225172pge.365.2019.07.29.11.58.35; Mon, 29 Jul 2019 11:58:50 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728547AbfG2QTJ (ORCPT + 99 others); Mon, 29 Jul 2019 12:19:09 -0400 Received: from mail-wr1-f67.google.com ([209.85.221.67]:34821 "EHLO mail-wr1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727556AbfG2QTI (ORCPT ); Mon, 29 Jul 2019 12:19:08 -0400 Received: by mail-wr1-f67.google.com with SMTP id y4so62519379wrm.2 for ; Mon, 29 Jul 2019 09:19:07 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=ZKDqUs0ayhzO8fC3NvwV+tCFuuA/FPgD3ePdCx1GJqM=; b=dACTMKwu4Gi8WJrOhgrimRZYL7pmU8PA6awVob5n3pqIBq1Z/YiRFKiWNNZ1itIL0x zGbpStXd4hs9G+18BVjjmE+M2myVh1Wi62GdUz1yy4JkBVfGODa9V9OKxOYWsl6vT0i2 YY9Fil+Kpm9VNz27butJUmiJetKLlq723GZbmjvaNnsl+CWVeaUOcEmp7Ty89vzEy2ZR qChN41LH/IYK7k4DA0+JGdryglCP6MgtwAHHXFPu6AOYPfYzOuB8XlddyXPc/lPSuhgk J4RzrcP9vEMgEELWkqUxiIUbRtloAMtxIvD+K/O/EMolm8UNeE9VjBfGy4OKZPE05eT7 LI6w== X-Gm-Message-State: APjAAAV9975PpjGbf0Wkb4Uo2bcduFbCyan6/3m4VBhOGiBNWj8PuHV/ 9Mvi9vCasaYAhPS1t6egiFXtkAFnWZE= X-Received: by 2002:a5d:4b8b:: with SMTP id b11mr40501951wrt.294.1564417146999; Mon, 29 Jul 2019 09:19:06 -0700 (PDT) Received: from steredhat (host122-201-dynamic.13-79-r.retail.telecomitalia.it. [79.13.201.122]) by smtp.gmail.com with ESMTPSA id c11sm104255286wrq.45.2019.07.29.09.19.05 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 29 Jul 2019 09:19:06 -0700 (PDT) Date: Mon, 29 Jul 2019 18:19:03 +0200 From: Stefano Garzarella To: "Michael S. Tsirkin" Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Stefan Hajnoczi , "David S. Miller" , virtualization@lists.linux-foundation.org, Jason Wang , kvm@vger.kernel.org Subject: Re: [PATCH v4 1/5] vsock/virtio: limit the memory used per-socket Message-ID: <20190729161903.yhaj5rfcvleexkhc@steredhat> References: <20190717113030.163499-1-sgarzare@redhat.com> <20190717113030.163499-2-sgarzare@redhat.com> <20190729095956-mutt-send-email-mst@kernel.org> <20190729153656.zk4q4rob5oi6iq7l@steredhat> <20190729114302-mutt-send-email-mst@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190729114302-mutt-send-email-mst@kernel.org> User-Agent: NeoMutt/20180716 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Jul 29, 2019 at 11:49:02AM -0400, Michael S. Tsirkin wrote: > On Mon, Jul 29, 2019 at 05:36:56PM +0200, Stefano Garzarella wrote: > > On Mon, Jul 29, 2019 at 10:04:29AM -0400, Michael S. Tsirkin wrote: > > > On Wed, Jul 17, 2019 at 01:30:26PM +0200, Stefano Garzarella wrote: > > > > Since virtio-vsock was introduced, the buffers filled by the host > > > > and pushed to the guest using the vring, are directly queued in > > > > a per-socket list. These buffers are preallocated by the guest > > > > with a fixed size (4 KB). > > > > > > > > The maximum amount of memory used by each socket should be > > > > controlled by the credit mechanism. > > > > The default credit available per-socket is 256 KB, but if we use > > > > only 1 byte per packet, the guest can queue up to 262144 of 4 KB > > > > buffers, using up to 1 GB of memory per-socket. In addition, the > > > > guest will continue to fill the vring with new 4 KB free buffers > > > > to avoid starvation of other sockets. > > > > > > > > This patch mitigates this issue copying the payload of small > > > > packets (< 128 bytes) into the buffer of last packet queued, in > > > > order to avoid wasting memory. > > > > > > > > Reviewed-by: Stefan Hajnoczi > > > > Signed-off-by: Stefano Garzarella > > > > > > This is good enough for net-next, but for net I think we > > > should figure out how to address the issue completely. > > > Can we make the accounting precise? What happens to > > > performance if we do? > > > > > > > In order to do more precise accounting maybe we can use the buffer size, > > instead of payload size when we update the credit available. > > In this way, the credit available for each socket will reflect the memory > > actually used. > > > > I should check better, because I'm not sure what happen if the peer sees > > 1KB of space available, then it sends 1KB of payload (using a 4KB > > buffer). > > > > The other option is to copy each packet in a new buffer like I did in > > the v2 [2], but this forces us to make a copy for each packet that does > > not fill the entire buffer, perhaps too expensive. > > > > [2] https://patchwork.kernel.org/patch/10938741/ > > > > > > Thanks, > > Stefano > > Interesting. You are right, and at some level the protocol forces copies. > > We could try to detect that the actual memory is getting close to > admin limits and force copies on queued packets after the fact. > Is that practical? Yes, I think it is doable! We can decrease the credit available with the buffer size queued, and when the buffer size of packet to queue is bigger than the credit available, we can copy it. > > And yes we can extend the credit accounting to include buffer size. > That's a protocol change but maybe it makes sense. Since we send to the other peer the credit available, maybe this change can be backwards compatible (I'll check better this). Thanks, Stefano