Received: by 2002:a05:6a10:7420:0:0:0:0 with SMTP id hk32csp3612943pxb; Mon, 21 Feb 2022 01:49:56 -0800 (PST) X-Google-Smtp-Source: ABdhPJx59wH2ZcHyRQCg2fr1J/vsclPKpcdomE8UpYPChi5YrsA8owdetTnDfKoZUjo+p3i/bPRD X-Received: by 2002:a17:90a:b398:b0:1bc:3ab0:cea7 with SMTP id e24-20020a17090ab39800b001bc3ab0cea7mr2885125pjr.222.1645436996191; Mon, 21 Feb 2022 01:49:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645436996; cv=none; d=google.com; s=arc-20160816; b=OvNEz+daKN6jvUo3c3wFwl0/qhTMNf2QkvZRV6efUWtQyAS3uE9b/S0ukU7eGL3up8 8bdfxmJy5R4uN+RxDoqiQToSf36hlldMHxvBkqluUBYDfk7/8IUTY501acmEk6diqw6X di/EWQXluaaApOFMpNFXD2Z16P6DXals8DO57GQdJxwTj53vXbUtnSyCMabvg1vNVNfQ rVmFekcqdF+WX5s0vXU2D8mx1j6AyPKCuu2XGNIUYF1oXKiEsUAs19wtDL7dIZaiON75 ZEhTvWxLOd2m1SSP6HIbMtVSMk8C0IvNAii4FxWDX9985I0nyxhxQiWomGeHknEjizYJ yYOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=P0GLFAJB/RbBFYYzURLMC8ec6mLjaAEaMMpWxGb2afY=; b=J7f7twcYKvSeylhqVPAqyM7KjMGQ34iR5s1I4rWmBKigpSk2iA5K/YdxXgQMzY5M7j FTsX2RUbeHMO7eog0yTpSThslO9jqzPVtLx0QF99wvRhAyPzCVCBbGBzf0xW7muq+32x bhBbahXjuq5Irbsj8ShcrKSc8oT1XwQflIE8rbZTXAUXztnHj0m8HkosHm17R1E5FhRm 4X1KE3BllzeTbW7kJVM35OMIWFbEkVhMmZT0P56tHfVcvfCbxEitqj8On+gTTJvUbNTG NJuW0CE3EyWv+Uxk7/WncvLm01ViEEdrmIyp8DFY/P1RFK35ebzh8ocec8FESssJ+QpA BO4g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=n6K9MnjO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w6si1225560plp.441.2022.02.21.01.49.41; Mon, 21 Feb 2022 01:49:56 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=n6K9MnjO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344682AbiBUIqK (ORCPT + 99 others); Mon, 21 Feb 2022 03:46:10 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:34840 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239931AbiBUIqJ (ORCPT ); Mon, 21 Feb 2022 03:46:09 -0500 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 05FE912AE7 for ; Mon, 21 Feb 2022 00:45:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1645433147; x=1676969147; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=aUPPKJKvps20pXQ4YiHKYSlelDOwazqzJWIlPGrUw0o=; b=n6K9MnjOrAtk1biR+jP8IJY3PxNAKxfB9Ax5B0NJdtxbX/D18l/Ytuyi J44QGglehRQ6W4YcSpAJhQzYbMZdvL3vYj7Wl1umpA8BFjSzBFJ7r1YG4 IQGdc1Zs3rTFV6d0UQskuvsytaWIqMu/elt1/0nuzMLlvVhL+84gQAygT 414JYg4PqNiEt7edK3G/XUdOsxoysC1Z6Mnapr1ewGturzUSzLr74CgkL oE+NAw7P+uWRfnDUOT8MqRSoGsJ/hG33xg7eRmjuvf4XRvrvDsMC5/XrZ xCumvdYC9E3jFXRZ8Ycg2NbnJZC3X4Rrste8lN8O2kA1q1t7T6soh0le2 Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10264"; a="249045765" X-IronPort-AV: E=Sophos;i="5.88,385,1635231600"; d="scan'208";a="249045765" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Feb 2022 00:45:46 -0800 X-IronPort-AV: E=Sophos;i="5.88,385,1635231600"; d="scan'208";a="531774833" Received: from yhuang6-desk2.sh.intel.com ([10.239.13.11]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Feb 2022 00:45:42 -0800 From: Huang Ying To: Peter Zijlstra , Mel Gorman , Andrew Morton Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Feng Tang , Huang Ying , Michal Hocko , Rik van Riel , Dave Hansen , Yang Shi , Zi Yan , Wei Xu , Oscar Salvador , Shakeel Butt , Johannes Weiner Subject: [PATCH -V13 0/3] NUMA balancing: optimize memory placement for memory tiering system Date: Mon, 21 Feb 2022 16:45:26 +0800 Message-Id: <20220221084529.1052339-1-ying.huang@intel.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The changes since the last post are as follows, - Fix nr_succeeded type in migrate_misplaced_page per Oscar's comments. - Make NUMA_BALANCING_MEMORY_TIERING works independent of demotion knob per Johannes' comments. -- With the advent of various new memory types, some machines will have multiple types of memory, e.g. DRAM and PMEM (persistent memory). The memory subsystem of these machines can be called memory tiering system, because the performance of the different types of memory are different. After commit c221c0b0308f ("device-dax: "Hotplug" persistent memory for use like normal RAM"), the PMEM could be used as the cost-effective volatile memory in separate NUMA nodes. In a typical memory tiering system, there are CPUs, DRAM and PMEM in each physical NUMA node. The CPUs and the DRAM will be put in one logical node, while the PMEM will be put in another (faked) logical node. To optimize the system overall performance, the hot pages should be placed in DRAM node. To do that, we need to identify the hot pages in the PMEM node and migrate them to DRAM node via NUMA migration. In the original NUMA balancing, there are already a set of existing mechanisms to identify the pages recently accessed by the CPUs in a node and migrate the pages to the node. So we can reuse these mechanisms to build the mechanisms to optimize the page placement in the memory tiering system. This is implemented in this patchset. At the other hand, the cold pages should be placed in PMEM node. So, we also need to identify the cold pages in the DRAM node and migrate them to PMEM node. In commit 26aa2d199d6f ("mm/migrate: demote pages during reclaim"), a mechanism to demote the cold DRAM pages to PMEM node under memory pressure is implemented. Based on that, the cold DRAM pages can be demoted to PMEM node proactively to free some memory space on DRAM node to accommodate the promoted hot PMEM pages. This is implemented in this patchset too. We have tested the solution with the pmbench memory accessing benchmark with the 80:20 read/write ratio and the Gauss access address distribution on a 2 socket Intel server with Optane DC Persistent Memory Model. The test results shows that the pmbench score can improve up to 95.9%. Changelog: v13: - Fix nr_succeeded type in migrate_misplaced_page per Oscar's comments. - Make NUMA_BALANCING_MEMORY_TIERING works independent of demotion knob per Johannes' comments. v12: - Rebased on v5.17-rc4 - Change promotion watermark implementation per Johannes' comments - Fixed several sysctl ABI document bugs, Thanks Andrew. v11: - Rebased on v5.17-rc1 - Remove [4-6] from the original patchset to make it easier to be reviewed. - Change the additional promotion watermark to be the high watermark / 4. v10: - Rebased on v5.16-rc1 - Revise error processing for [1/6] (promotion counter) per Yang's comments - Add sysctl document for [2/6] (optimize page placement) - Reset threshold adjustment state when disable/enable tiering mode - Reset threshold when workload transition is detected. v9: - Rebased on v5.15-rc4 - Make "add promotion counter" the first patch per Yang's comments v8: - Rebased on v5.15-rc1 - Make user-specified threshold take effect sooner v7: - Rebased on the mmots tree of 2021-07-15. - Some minor fixes. v6: - Rebased on the latest page demotion patchset. (which bases on v5.11) v5: - Rebased on the latest page demotion patchset. (which bases on v5.10) v4: - Rebased on the latest page demotion patchset. (which bases on v5.9-rc6) - Add page promotion counter. v3: - Move the rate limit control as late as possible per Mel Gorman's comments. - Revise the hot page selection implementation to store page scan time in struct page. - Code cleanup. - Rebased on the latest page demotion patchset. v2: - Addressed comments for V1. - Rebased on v5.5. Best Regards, Huang, Ying