From patchwork Tue Nov 20 13:43:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Hocko X-Patchwork-Id: 10690401 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4701614BD for ; Tue, 20 Nov 2018 13:43:41 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 371D226E82 for ; Tue, 20 Nov 2018 13:43:41 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 296B626E97; Tue, 20 Nov 2018 13:43:41 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A76EF26E56 for ; Tue, 20 Nov 2018 13:43:40 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A714A6B1FCC; Tue, 20 Nov 2018 08:43:38 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 95A7D6B203D; Tue, 20 Nov 2018 08:43:38 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 75E806B203E; Tue, 20 Nov 2018 08:43:38 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) by kanga.kvack.org (Postfix) with ESMTP id 1F8886B1FCC for ; Tue, 20 Nov 2018 08:43:38 -0500 (EST) Received: by mail-ed1-f69.google.com with SMTP id x15so1307403edd.2 for ; Tue, 20 Nov 2018 05:43:38 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=JPA8FPoPMv+gmc6SS8CXiLWc7PLkSqS/f1EA6JDY91M=; b=dvLsXLPTudy8yWuTFCaxlOR0//KiKmxHEE1nMFW2CCXd9K8Y0eq3GHaEmvjKHBup6f sA9tmf8iD4uRxdwzOyHc0+Z+XuHo0CpQGHsi8M/2Bb9A+HNZWX0R1KKNpHbj9WON4ltv yMUCYu6L5U6WPNRS8pBPMGIYEHyaJbBBRXBkb7OIx39sANCc+nV1mkO3aaTjjNOzkF44 hX89qTaVvCj9bz2HeoXZaQRWavOd5wZvyQCSFI28oyrU6h9Tjf9UbP0KZhV4XIPC/2LO oGwtsCXBvznuv7VwgaRr3BX5No7Lbw6UT8BDz8KduasrG8pOJyHWKmoWUDUUyNHqX+dw cJ3g== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of mstsxfx@gmail.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=mstsxfx@gmail.com; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org X-Gm-Message-State: AA+aEWYxM0lE9cKPOvQixyXR3rmM9whUFVo9caCDE9/ngUP6AHjh1j8F eEIxk50p5R/fUGJ0bMupHcDmsbxjAre5EVoBNcj34O9QRX6JUziP6mFRhxB1MuTnpeHXpdrgOq8 +R6WBfOLbtHFHfJnVnp8Ex8G6MzU3dyi65i4V8gTqkpNhVhmf/IT+hky/O5nc5csaVRaIDoQ+pJ FRYze6G1chFUpidzDSFf2jgveHHNhZdTJYY+z3S6VT8ludz9FOd0d8uG4R2RNbjNpsCkagi9aDQ JGpZ5/4PcV1k9Bvuir9AXklYjJeO4PEqXrlpKlswD/V/x+UAFPi3UNHz9WOjDI4B3xIR9c1/6VS a1OUtRovmWq9U6k0K4rvjtGuSBRbqMfwgDRiBitX77cathP/ilN+syZxe7KAlBn/gOLD/o4AWQ= = X-Received: by 2002:a50:9770:: with SMTP id d45mr2188556edb.49.1542721417629; Tue, 20 Nov 2018 05:43:37 -0800 (PST) X-Received: by 2002:a50:9770:: with SMTP id d45mr2188522edb.49.1542721416670; Tue, 20 Nov 2018 05:43:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542721416; cv=none; d=google.com; s=arc-20160816; b=H8F8DQ9Gg0M1gprcQbJBsbjtE38HvzAJaasBsJerrVVVCBJwlHEwEQQJGdTvbOxBE1 8kJNxKFIGq/GjeAnL2ctOdROK+o59WL9gLc3vwH1Zx9j/e+ulZl4JlobU4ANQBiMyJ+t /y3wZ3wvcPzWsmjayJpBHf5c+6Qid8uyIgZJmGeqLK+aGSZDo9CarY7d77FGHYLqg/rb byZtBj6li5TEGBVChF1v3jsMDk7kllsX0H0MapzFeke5uuWCdvJTFk0HtPm/BT9+DKtO gXhuo9mV9pVHF9uQOS3GtPA2BvuDD/2IGgkTRqvv5aSmcGKd37Oc7FGvBd87O0AVmlRX 0X2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=JPA8FPoPMv+gmc6SS8CXiLWc7PLkSqS/f1EA6JDY91M=; b=lSNujudqHTkQZAq3JFjO+QWShHp9aYcHAyvUzm39Ykt/ztNlQ9uvOEUx19IFJVWozD OOSuVXRpfWcWOJmDIIcCAB8OYn8GEicApOT0toXwy/bnYgihDbg2QanMO82Qg13L+0V0 WpMIPzgdcXwQK8+HiTIYD4nbTFyr7152Khc4BadraGro9jAcStabzr642JHsiaIeg45/ O/ehpiayO+B3AcEPLOcMeOKggElQW5zvnGGmDC/5T0AGL5NuPzyUsEnUnkzYTT/nv9rw CaAlS2K/d6WMF7fN1dhGvIN+WNJPQqYb0XE8H+/P10FCLsOOwzjoFtYmP+39sEXIq2x5 fGCA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of mstsxfx@gmail.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=mstsxfx@gmail.com; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id k6sor21397135edx.21.2018.11.20.05.43.36 for (Google Transport Security); Tue, 20 Nov 2018 05:43:36 -0800 (PST) Received-SPF: pass (google.com: domain of mstsxfx@gmail.com designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; spf=pass (google.com: domain of mstsxfx@gmail.com designates 209.85.220.65 as permitted sender) smtp.mailfrom=mstsxfx@gmail.com; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org X-Google-Smtp-Source: AFSGD/UXIyPh/3c7XVeJ+kNuWyZkxIcVYxxw03A3PtUVq8tllJKzM6JPgEjUx2ox3Ct5oBx7q6ySfg== X-Received: by 2002:a50:a4fc:: with SMTP id x57mr2265364edb.229.1542721415966; Tue, 20 Nov 2018 05:43:35 -0800 (PST) Received: from tiehlicka.suse.cz (prg-ext-pat.suse.com. [213.151.95.130]) by smtp.gmail.com with ESMTPSA id 49sm8428786edz.59.2018.11.20.05.43.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 20 Nov 2018 05:43:35 -0800 (PST) From: Michal Hocko To: Cc: Andrew Morton , Oscar Salvador , Pavel Tatashin , David Hildenbrand , LKML , Michal Hocko Subject: [RFC PATCH 1/3] mm, memory_hotplug: try to migrate full section worth of pages Date: Tue, 20 Nov 2018 14:43:21 +0100 Message-Id: <20181120134323.13007-2-mhocko@kernel.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181120134323.13007-1-mhocko@kernel.org> References: <20181120134323.13007-1-mhocko@kernel.org> MIME-Version: 1.0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP From: Michal Hocko do_migrate_range has been limiting the number of pages to migrate to 256 for some reason which is not documented. Even if the limit made some sense back then when it was introduced it doesn't really serve a good purpose these days. If the range contains huge pages then we break out of the loop too early and go through LRU and pcp caches draining and scan_movable_pages is quite suboptimal. The only reason to limit the number of pages I can think of is to reduce the potential time to react on the fatal signal. But even then the number of pages is a questionable metric because even a single page might migration block in a non-killable state (e.g. __unmap_and_move). Remove the limit and offline the full requested range (this is one membblock worth of pages with the current code). Should we ever get a report that offlining takes too long to react on fatal signal then we should rather fix the core migration to use killable waits and bailout on a signal. Signed-off-by: Michal Hocko Reviewed-by: David Hildenbrand Reviewed-by: Pavel Tatashin Reviewed-by: Oscar Salvador --- mm/memory_hotplug.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index c82193db4be6..6263c8cd4491 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -1339,18 +1339,16 @@ static struct page *new_node_page(struct page *page, unsigned long private) return new_page_nodemask(page, nid, &nmask); } -#define NR_OFFLINE_AT_ONCE_PAGES (256) static int do_migrate_range(unsigned long start_pfn, unsigned long end_pfn) { unsigned long pfn; struct page *page; - int move_pages = NR_OFFLINE_AT_ONCE_PAGES; int not_managed = 0; int ret = 0; LIST_HEAD(source); - for (pfn = start_pfn; pfn < end_pfn && move_pages > 0; pfn++) { + for (pfn = start_pfn; pfn < end_pfn; pfn++) { if (!pfn_valid(pfn)) continue; page = pfn_to_page(pfn); @@ -1362,8 +1360,7 @@ do_migrate_range(unsigned long start_pfn, unsigned long end_pfn) ret = -EBUSY; break; } - if (isolate_huge_page(page, &source)) - move_pages -= 1 << compound_order(head); + isolate_huge_page(page, &source); continue; } else if (PageTransHuge(page)) pfn = page_to_pfn(compound_head(page)) @@ -1382,7 +1379,6 @@ do_migrate_range(unsigned long start_pfn, unsigned long end_pfn) if (!ret) { /* Success */ put_page(page); list_add_tail(&page->lru, &source); - move_pages--; if (!__PageMovable(page)) inc_node_page_state(page, NR_ISOLATED_ANON + page_is_file_cache(page));