From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752635AbdHGIpE (ORCPT ); Mon, 7 Aug 2017 04:45:04 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39954 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752430AbdHGIpC (ORCPT ); Mon, 7 Aug 2017 04:45:02 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 9C8016E808 Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=david@redhat.com Subject: Re: [PATCH RESEND] mm: don't zero ballooned pages To: Wei Wang , linux-kernel@vger.kernel.org, linux-mm@kvack.org, virtualization@lists.linux-foundation.org, mhocko@kernel.org, mst@redhat.com, zhenwei.pi@youruncloud.com Cc: dave.hansen@intel.com, akpm@linux-foundation.org, mawilcox@microsoft.com, Andrea Arcangeli References: <1501761557-9758-1-git-send-email-wei.w.wang@intel.com> From: David Hildenbrand Organization: Red Hat GmbH Message-ID: <9ac31505-0996-2822-752e-8ec055373aa0@redhat.com> Date: Mon, 7 Aug 2017 10:44:50 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 MIME-Version: 1.0 In-Reply-To: <1501761557-9758-1-git-send-email-wei.w.wang@intel.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Mon, 07 Aug 2017 08:45:02 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 03.08.2017 13:59, Wei Wang wrote: > This patch is a revert of 'commit bb01b64cfab7 ("mm/balloon_compaction.c: > enqueue zero page to balloon device")' > > Ballooned pages will be marked as MADV_DONTNEED by the hypervisor and > shouldn't be given to the host ksmd to scan. Therefore, it is not > necessary to zero ballooned pages, which is very time consuming when > the page amount is large. The ongoing fast balloon tests show that the > time to balloon 7G pages is increased from ~491ms to 2.8 seconds with > __GFP_ZERO added. So, this patch removes the flag. > > Signed-off-by: Wei Wang > Cc: Michal Hocko > Cc: Michael S. Tsirkin > --- > mm/balloon_compaction.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/balloon_compaction.c b/mm/balloon_compaction.c > index 9075aa5..b06d9fe 100644 > --- a/mm/balloon_compaction.c > +++ b/mm/balloon_compaction.c > @@ -24,7 +24,7 @@ struct page *balloon_page_enqueue(struct balloon_dev_info *b_dev_info) > { > unsigned long flags; > struct page *page = alloc_page(balloon_mapping_gfp_mask() | > - __GFP_NOMEMALLOC | __GFP_NORETRY | __GFP_ZERO); > + __GFP_NOMEMALLOC | __GFP_NORETRY); > if (!page) > return NULL; > > Your assumption here is, that the hypervisor will always supply a zero page. Unfortunately, this assumption is wrong (and it stems from the lack of different page size support in virtio-balloon). Think about these examples: 1. Guest is backed by huge pages (hugetbfs). Ballooning kicks in. MADV_DONTNEED is simply ignored in the hypervisor (hugetlbfs requires fallocate punshhole). Also, trying to zap 4k on e.g. 1MB pages will simply be ignored. 2. Guest on PPC uses 4k pages. Hypervisor uses 64k pages. trying to MADV_DONTNEED 4K on 64k pages will simply be ignored. So unfortunately, zeroing the page is the right thing to do to cover all cases. -- Thanks, David