Received: by 2002:ac0:946b:0:0:0:0:0 with SMTP id j40csp2718720imj; Mon, 18 Feb 2019 10:52:23 -0800 (PST) X-Google-Smtp-Source: AHgI3IYUZ0IFU/d9TNS+iYrNP7b7kQ5fkfFDJoBNegumiLNUQqkfv3mV3UXOQK02UAsHbHWSUz75 X-Received: by 2002:a17:902:8b82:: with SMTP id ay2mr26454526plb.64.1550515943500; Mon, 18 Feb 2019 10:52:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550515943; cv=none; d=google.com; s=arc-20160816; b=OFrw4TJdeR8o5st5MUli5g5aAHkKT7gKevJNWNmiTzp+wCAHUpCDK+3BbZd0cGiI4T /Zo1OkRBD4NfLbhuzC5MCbd/kk6RhF3nOkK8WBD7lrXYi3/N9mQs04vYr3nIVyfX32hj 3f83SN2JByd7CdFvEZu/5Uz3AWUmUcMKqs93AhFg0xked1OUN3YthRA64ZNrbDDhCPQp JSiKYEULe5ouauhdnlowCf4z/7fRSbCrsaNlvCLkz5f1a+tHwin4ttQfqExnPri0jiSo Vxtt7u93vTSdawSvCGRzapsAyncuvgMrRSiAFdoLWfeVOaQk1qE2g5mvr3GAA/eBZKbG ejew== 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-transfer-encoding:content-disposition:mime-version :references:message-id:subject:cc:to:from:date; bh=ZBLP75mPAnic8DYjGI7knlnw73Ej8gDgUXGZpKGkrUw=; b=VWPiVA+3IloqLUZh38EnqFEiVgnryu4RIWhy0D3KUUiOlzIP3x6L2DQ4qM37RePzLS 06C7GASSoiGcyhnMEqAw2ytZkGu8XNPtSURIeBIvzfOJ1fMyZK6JISuziBBfSfRR//mt WW6U8Pujyrw+1dRrn28WA/iyrt5btzQvwQYIOk8IfdE/S+9i+QS1DYEo2IcFdLT7tUPm pnikUQ+C9mcBBiL4YgfekqAHFLrmhuD+eQ4lG47GxuCT6HQ1XPOy1cacgd5I4k65p8kR 7i4sGEDlgLE+Yq9qSEaQyobopvQBHpJeaEU0ELbl0G5YM09uohSaqzm+MzUuhkc7HVU5 72Xw== 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 p11si14135910plk.191.2019.02.18.10.52.07; Mon, 18 Feb 2019 10:52:23 -0800 (PST) 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 S2388327AbfBRQEU (ORCPT + 99 others); Mon, 18 Feb 2019 11:04:20 -0500 Received: from mx1.redhat.com ([209.132.183.28]:51946 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732251AbfBRQEU (ORCPT ); Mon, 18 Feb 2019 11:04:20 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 18709315FC5; Mon, 18 Feb 2019 16:04:19 +0000 (UTC) Received: from redhat.com (ovpn-125-191.rdu2.redhat.com [10.10.125.191]) by smtp.corp.redhat.com (Postfix) with ESMTPS id DBA20A68E5; Mon, 18 Feb 2019 16:04:16 +0000 (UTC) Date: Mon, 18 Feb 2019 11:04:13 -0500 From: Jerome Glisse To: Andrea Arcangeli Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Peter Xu , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Andrew Morton , Matthew Wilcox , Paolo Bonzini , Radim =?utf-8?B?S3LEjW3DocWZ?= , Michal Hocko , kvm@vger.kernel.org Subject: Re: [RFC PATCH 0/4] Restore change_pte optimization to its former glory Message-ID: <20190218160411.GA3142@redhat.com> References: <20190131183706.20980-1-jglisse@redhat.com> <20190201235738.GA12463@redhat.com> <20190211190931.GA3908@redhat.com> <20190211200200.GA30128@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20190211200200.GA30128@redhat.com> User-Agent: Mutt/1.10.1 (2018-07-13) X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Mon, 18 Feb 2019 16:04:19 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Feb 11, 2019 at 03:02:00PM -0500, Andrea Arcangeli wrote: > On Mon, Feb 11, 2019 at 02:09:31PM -0500, Jerome Glisse wrote: > > Yeah, between do you have any good workload for me to test this ? I > > was thinking of running few same VM and having KSM work on them. Is > > there some way to trigger KVM to fork ? As the other case is breaking > > COW after fork. > > KVM can fork on guest pci-hotplug events or network init to run host > scripts and re-init the signals before doing the exec, but it won't > move the needle because all guest memory registered in the MMU > notifier is set as MADV_DONTFORK... so fork() is a noop unless qemu is > also modified not to call MADV_DONTFORK. > > Calling if (!fork()) exit(0) from a timer at regular intervals during > qemu runtime after turning off MADV_DONTFORK in qemu would allow to > exercise fork against the KVM MMU Notifier methods. > > The optimized change_pte code in copy-on-write code is the same > post-fork or post-KSM merge and fork() itself doesn't use change_pte > while KSM does, so with regard to change_pte it should already provide > a good test coverage to test with only KSM without fork(). It'll cover > the read-write -> readonly transition with same PFN > (write_protect_page), the read-only to read-only changing PFN > (replace_page) as well as the readonly -> read-write transition > changing PFN (wp_page_copy) all three optimized with change_pte. Fork > would not leverage change_pte for the first two cases. So i run 2 exact same VMs side by side (copy of same COW image) and built the same kernel tree inside each (that is the only important workload that exist ;)) but the change_pte did not have any impact: before mean {real: 1358.250977, user: 16650.880859, sys: 839.199524, npages: 76855.390625} before stdev {real: 6.744010, user: 108.863762, sys: 6.840437, npages: 1868.071899} after mean {real: 1357.833740, user: 16685.849609, sys: 839.646973, npages: 76210.601562} after stdev {real: 5.124797, user: 78.469360, sys: 7.009164, npages: 2468.017578} without mean {real: 1358.501343, user: 16674.478516, sys: 837.791992, npages: 76225.203125} without stdev {real: 5.541104, user: 97.998367, sys: 6.715869, npages: 1682.392578} Above is time taken by make inside each VM for all yes config. npages is the number of page shared reported on the host at the end of the build. There is no change before and after the patchset to restore change pte. I tried removing the change_pte callback alltogether to see if that did have any effect (without above) and it did not have any effect either. Should we still restore change_pte() ? It does not hurt, but it does not seems to help in anyway. Maybe you have a better benchmark i could run ? Cheers, J?r?me