Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp10999190ybi; Thu, 25 Jul 2019 08:18:02 -0700 (PDT) X-Google-Smtp-Source: APXvYqwjmTmnQ84EKDAeluFRkFW4dkOWAJ0Qd7OWndfl+0IzFsJWFklXroBQrwUPcbtigOjY/1pZ X-Received: by 2002:a63:ff66:: with SMTP id s38mr87800149pgk.363.1564067882285; Thu, 25 Jul 2019 08:18:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564067882; cv=none; d=google.com; s=arc-20160816; b=gMdzQ7MovI4rDZmaz9ykMije9YO5riQ2zTudHzMriumU/RUwReRkqBbaAcx//+BZoa IC/w3w9U7kDsizmCcpC+ZiR02DsLNTvQXRE54qck8uNC+zwbzAiyDI9JPmecCbTASaua 974EVZM9692LIKovrp2Jnya5Fksb5MRHaF+uPP0e/5mLQ/4l3rlm41exAdlXeoyM1K21 HtoiWwg29te7YkzyjZSEN4Yx7M49ac9cb6B6dv0KTR0+7FvN2dxEdJRd2AFj5cN6m5mm rzUz396BP6DMv3PWg66nZ8PMR6yuVDa2LKAusTw4uzEGlnr5WueQtsS1IYvzF4aZfbBj Rc2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date; bh=ZdiHhR4VNqoS2oGhLtlrAzJdPT34WmJrjIOqzk+fdxs=; b=paT7ZeY1fhGuDmP2RM+5k2V/d5Z1SjDysqG8etkVk5/alu8vnnvz26nB/+kZXrI4du DpfXb15eEXHfV7gDUJCyHK1TZT2B37nyq4m+JBtuFd48Wa8qeNGLmWuBHEY3GHN1Ehef 7gPCxS0NWFszZsOC5/Yx7394kflwJ+ZUcUvItjlHtmbRr7niO2WPC9CYha7qleySBV4K g1s2vQhj/fpU7KxHCPdnqekLL/GJVhhjEjAcTy/6a/oD7mdQtBsBcaOyg7qGZTR3x2Wr ZKw3kToCdnuAF/Ij8PLHT6M4IJtTG/1MusarLf8HfSmTL21fXUi2v8PcoNAc5cwz3eww wBrw== 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 j17si11565790pgj.15.2019.07.25.08.17.47; Thu, 25 Jul 2019 08:18:02 -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 S2389129AbfGYPQQ (ORCPT + 99 others); Thu, 25 Jul 2019 11:16:16 -0400 Received: from mail-qt1-f194.google.com ([209.85.160.194]:34403 "EHLO mail-qt1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388549AbfGYPQQ (ORCPT ); Thu, 25 Jul 2019 11:16:16 -0400 Received: by mail-qt1-f194.google.com with SMTP id k10so49497868qtq.1 for ; Thu, 25 Jul 2019 08:16:15 -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; bh=ZdiHhR4VNqoS2oGhLtlrAzJdPT34WmJrjIOqzk+fdxs=; b=g5r/XPkTzsLX9wU1rRbU8X+XUFeKQW18Gv3C/x3wKfreqLkut2awwrdpfqN3UIgZi6 i8ZrHAkgPnp3jN031FVQvwqZRk+Lq0//Q/5jGiM93wukobDjvjtjH4D+mRZBhTbAfpGl +UyMRLTrkHd164nbAFMH7wTTLMDtVXY6HEFtOQ5FuBhM6w3svBCw3Z0myYRVgp3K+A3Y H32D3p59tAtdVy+q3Oa088YSR3oydCZvIGLO104TWEs7enJSssO1F1+2LlN+1gruR26X ziv1uLyUAofqX0zThaWHhLDnUfA22uSHxyqmep9zGZ0Jp/k68PWDw66MTYrz61QUvX04 UgwQ== X-Gm-Message-State: APjAAAV0SOuqPNdfMfRCNAUgMZPKI+e514xUy6OG4npyXnqOxCeO1BxM 9xZcSdGsTCq8VRs8USD5aaEaHA== X-Received: by 2002:a0c:96f3:: with SMTP id b48mr64327202qvd.80.1564067775207; Thu, 25 Jul 2019 08:16:15 -0700 (PDT) Received: from redhat.com (bzq-79-181-91-42.red.bezeqint.net. [79.181.91.42]) by smtp.gmail.com with ESMTPSA id f133sm24309846qke.62.2019.07.25.08.16.09 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Thu, 25 Jul 2019 08:16:14 -0700 (PDT) Date: Thu, 25 Jul 2019 11:16:06 -0400 From: "Michael S. Tsirkin" To: Alexander Duyck Cc: Nitesh Narayan Lal , Alexander Duyck , kvm@vger.kernel.org, david@redhat.com, dave.hansen@intel.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, akpm@linux-foundation.org, yang.zhang.wz@gmail.com, pagupta@redhat.com, riel@surriel.com, konrad.wilk@oracle.com, lcapitulino@redhat.com, wei.w.wang@intel.com, aarcange@redhat.com, pbonzini@redhat.com, dan.j.williams@intel.com Subject: Re: [PATCH v2 QEMU] virtio-balloon: Provide a interface for "bubble hinting" Message-ID: <20190725111303-mutt-send-email-mst@kernel.org> References: <20190724165158.6685.87228.stgit@localhost.localdomain> <20190724171050.7888.62199.stgit@localhost.localdomain> <20190724173403-mutt-send-email-mst@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jul 25, 2019 at 08:05:30AM -0700, Alexander Duyck wrote: > On Thu, 2019-07-25 at 07:35 -0400, Nitesh Narayan Lal wrote: > > On 7/24/19 6:03 PM, Alexander Duyck wrote: > > > On Wed, 2019-07-24 at 17:38 -0400, Michael S. Tsirkin wrote: > > > > On Wed, Jul 24, 2019 at 10:12:10AM -0700, Alexander Duyck wrote: > > > > > From: Alexander Duyck > > > > > > > > > > Add support for what I am referring to as "bubble hinting". Basically the > > > > > idea is to function very similar to how the balloon works in that we > > > > > basically end up madvising the page as not being used. However we don't > > > > > really need to bother with any deflate type logic since the page will be > > > > > faulted back into the guest when it is read or written to. > > > > > > > > > > This is meant to be a simplification of the existing balloon interface > > > > > to use for providing hints to what memory needs to be freed. I am assuming > > > > > this is safe to do as the deflate logic does not actually appear to do very > > > > > much other than tracking what subpages have been released and which ones > > > > > haven't. > > > > > > > > > > Signed-off-by: Alexander Duyck > > > > BTW I wonder about migration here. When we migrate we lose all hints > > > > right? Well destination could be smarter, detect that page is full of > > > > 0s and just map a zero page. Then we don't need a hint as such - but I > > > > don't think it's done like that ATM. > > > I was wondering about that a bit myself. If you migrate with a balloon > > > active what currently happens with the pages in the balloon? Do you > > > actually migrate them, or do you ignore them and just assume a zero page? > > > I'm just reusing the ram_block_discard_range logic that was being used for > > > the balloon inflation so I would assume the behavior would be the same. > > I agree, however, I think it is worth investigating to see if enabling hinting > > adds some sort of overhead specifically in this kind of scenarios. What do you > > think? > > I suspect that the hinting/reporting would probably improve migration > times based on the fact that from the sound of things it would just be > migrated as a zero page. > > I don't have a good setup for testing migration though and I am not that > familiar with trying to do a live migration. That is one of the reasons > why I didn't want to stray too far from the existing balloon code as that > has already been tested with migration so I would assume as long as I am > doing almost the exact same thing to hint the pages away it should behave > exactly the same. > > > > > I also wonder about interaction with deflate. ATM deflate will add > > > > pages to the free list, then balloon will come right back and report > > > > them as free. > > > I don't know how likely it is that somebody who is getting the free page > > > reporting is likely to want to also use the balloon to take up memory. > > I think it is possible. There are two possibilities: > > 1. User has a workload running, which is allocating and freeing the pages and at > > the same time, user deflates. > > If these new pages get used by this workload, we don't have to worry as you are > > already handling that by not hinting the free pages immediately. > > 2. Guest is idle and the user adds up some memory, for this situation what you > > have explained below does seems reasonable. > > Us hinting on pages that are freed up via deflate wouldn't be too big of a > deal. I would think that is something we could look at addressing as more > of a follow-on if we ever needed to since it would just add more > complexity. > > Really what I would like to see is the balloon itself get updated first to > perhaps work with variable sized pages first so that we could then have > pages come directly out of the balloon and go back into the freelist as > hinted, or visa-versa where hinted pages could be pulled directly into the > balloon without needing to notify the host. Right, I agree. At this point the main thing I worry about is that the interfaces only support one reporter, since a page flag is used. So if we ever rewrite existing hinting to use the new mm infrastructure then we can't e.g. enable both types of hinting. FWIW Nitesh's RFC does not have this limitation. I intend to think about this over the weekend. -- MST