From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753086AbcADTff (ORCPT ); Mon, 4 Jan 2016 14:35:35 -0500 Received: from mail-db3on0074.outbound.protection.outlook.com ([157.55.234.74]:7848 "EHLO emea01-db3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752686AbcADTfW (ORCPT ); Mon, 4 Jan 2016 14:35:22 -0500 Authentication-Results: spf=fail (sender IP is 12.216.194.146) smtp.mailfrom=ezchip.com; ezchip.com; dkim=none (message not signed) header.d=none;ezchip.com; dmarc=none action=none header.from=ezchip.com; From: Chris Metcalf To: Gilad Ben Yossef , Steven Rostedt , Ingo Molnar , Peter Zijlstra , Andrew Morton , "Rik van Riel" , Tejun Heo , Frederic Weisbecker , Thomas Gleixner , "Paul E. McKenney" , Christoph Lameter , Viresh Kumar , Catalin Marinas , Will Deacon , Andy Lutomirski , , CC: Chris Metcalf Subject: [PATCH v9 03/13] lru_add_drain_all: factor out lru_add_drain_needed Date: Mon, 4 Jan 2016 14:34:41 -0500 Message-ID: <1451936091-29247-4-git-send-email-cmetcalf@ezchip.com> X-Mailer: git-send-email 2.1.2 In-Reply-To: <1451936091-29247-1-git-send-email-cmetcalf@ezchip.com> References: <1451936091-29247-1-git-send-email-cmetcalf@ezchip.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;DB3FFO11FD054;1:NHFwOslQPG+KxTPX+YEb6LUIB0DHmIbYc57/p0ht9YiFAzOx/xRpteqRIb5peTrHOr/WuM5lUUn+ilnrq1GuW7Om9WOfATQ29Mg4G14KyHZ/QNzdsXw6fie+h8g6jVqk23yfu/iaYx/fK+QbOuumn3BjDBHHIH5Fs1Sit+T2AoTG8zFzgKhm/BERc2AGzX/4Bn12mxS9qhHn1Ibgh8PFtgPfazX7V2aE9ZAS+t0ig3otVYf8nR2wNNs6SPLGhCu9D5KRWdfOidRD9mW3VkJi79m6+iHXJlU0wrGTA9s4V8E5Anp5McrrdzlLd74jLJItFgwwt+W+Uk8HjY+Qoocjp+1sSIrkylKoKBA5Ow1kfX3Hjv19R3jvtH194frvv+Ll X-Forefront-Antispam-Report: CIP:12.216.194.146;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(4001430100002)(33646002)(92566002)(107886002)(1220700001)(50986999)(2201001)(5001770100001)(189998001)(5001970100001)(5008740100001)(586003)(104016004)(5003940100001)(76176999)(1096002)(4326007)(105606002)(50466002)(19580395003)(6806005)(11100500001)(42186005)(36756003)(48376002)(87936001)(50226001)(86362001)(229853001)(2950100001)(85426001)(575784001)(19580405001)(106466001)(47776003)(921003)(2101003)(83996005)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:DB4PR02MB127;H:ld-1.internal.tilera.com;FPR:;SPF:Fail;PTR:wb-fw1.tilera.com;MX:1;A:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;DB4PR02MB127;2:TMTYsRuztzijOfCseHZ4ynAsTGlKX4jP+l8jLadMX5bEIt7rbEVmxMrgXiOuLTEP7H37PALLsdrTMZefJcur/Da+e7cmHdysLTVSV3QSzuTUae77kFWePugAwJARaO2z7BEjCOCuMZwVeyIzxOxrmw==;3:Cg9gSf1Okmfg40Oo1dXIsxdIWEID2cLG+jxm47CH+OsCMO4VCkh1w/rNaPh+j/jhGsAYftaqUe3DXG9lVFw5E7zxGXm8ZCuMXsxhH7I38cwJd9tXhlNtZLhBSKwwdRHA7DpeOgJl6Okl1mhc+IdMKF3cq+oUOhzPqYRwzH1xyJgvHlJ8jbUd9kSiQBKfAKqbNIiY2wzg+KNQuzBqDBDZ00bel4JIuxLhpbZVW4NTlyk=;25:XPLOpRE6cUzSNgyzWAAiQuL+MAe92EnTXO5+YV9RHB754GCR14MbN/fZyWS+xtX/po3Yv6gOhgmCs5Ecp5Qp6iR9+KswOjTRVP1fuvIfzeX8IyrY3hH6vd7OVxgziTWyCSSSuTIXY0hpTYdjqZVoawxQD4C2k2vumFUw3wfdXWrvEg6FVDX3kMSZAtrpC3/XYzX0g0RXXOPS16N840e/8nOySyVowV5bt5NTBg8kr6Y+lKAOiZ/yB3DtK/ijNdZ/Up3AHu+PxkGGbj//f3os2A==;20:ZXUvR4ixYbhvzud46lRuDcpeNek9YxKN61eQ5vzsqnYSs7AiTsnfpPXIV2gdbQYG4+MQ58DD87HauiZe4BTSAAUdI1gq2FhYQra76W2uBrvLmAFrkFIF66T4Ij1XQMyZTI04bYCQCi37ompS/EdGb1Bt+eHgAGpFtgmOR7cjbYQ= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DB4PR02MB127; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(121898900299872); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(520078)(5005006)(8121501046)(10201501046)(3002001);SRVR:DB4PR02MB127;BCL:0;PCL:0;RULEID:;SRVR:DB4PR02MB127; X-Microsoft-Exchange-Diagnostics: 1;DB4PR02MB127;4:w44v6KeOuUqnu91kfkxrUmxKqvSbHav7SrZKcEBuqglWI0gLom6FUke5pX/FkUT3cREqBJ7oFtJq1frjvEYBG6ujw9nvknIcK0FI5CdfHQoCQ7U3hqtD9ty9ukn3u7WLrewdnq+mZMn6jxowoBrS9267gxE42Oq1fTaxDjOUaY8eXTrpBcfOk9UWHNntpWlb3ptfV/AKT4qgKKrO6KHfGokC/pTS5mECmI+ekune3Q7HnZjcU1NU9c10ggGY1gaUeOTAYOBI0uCxhwBXCqQbHf94yXXiRuGUXcy/8i+CsmmoHgUwG2wbjQsr9Vn27DkcTL5xrc/0dM7vkbNVzj9449K9FshRVc65FZog6dzKsFnMjlh3zQMJeVXXp8drLWL//QTUwsXUSY9xXKtdq7Zxq6bBtu3rwEd8wlBH2XBQMyCW0rnnRa3KtTOq+y6xJ2Kj X-Forefront-PRVS: 08118EFC2B X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DB4PR02MB127;23:km46rTZA7YqE+udmzzkrrrgimKN8gGQSBo8mw3duOl?= =?us-ascii?Q?2cAZ1R46MPT/76a+66ZBJ480T6J0Sy3e+/GNSvk4Z2yUa4FCkXJvisSlJ1F5?= =?us-ascii?Q?UrjGo1CYG6HQr/bz/ud1HKuvdRwE2BlvOkzkPhOmZp9w8yoCANRh4xyGmxDU?= =?us-ascii?Q?uPTm5OGu9I9sZblOKGd+QAVUn3AQsgODg2M60S2U21o5V7mEBV+dlBEmOwBC?= =?us-ascii?Q?D82VaLKD2eS9/aPTOuOzfORB+FYKugRVwEAAuzwPApoLWN8XXRcM2Hfe5wop?= =?us-ascii?Q?uCA4efQZy4LFTJxv+Z0sNy9vzSDT8EZVz0LsY4HSHU38QKQ9vqjgS2yrYFqu?= =?us-ascii?Q?MI2aausjkOvOrRouyDNYZs3Dw5Go5nTFgu6XP1UIcX120Y4RRVLRv6xNgziP?= =?us-ascii?Q?OHrCapnE8EtlfR5rFhLFBuwG6f04dNAQAYX51LjExjZfymSUJCr692t7lnlE?= =?us-ascii?Q?9jXp3ay0xufEyHEx6qL1AsQ1bzRCov7oY6024dgLAulflS6OOWtGYajl0mUf?= =?us-ascii?Q?xk7mqxVM0q5CGQOqjE7P3pJxFJx67zV940iwJ8DqPziOuuikder7vqAqgnjZ?= =?us-ascii?Q?BFvvTK+ebgUeRdpkpyCotqGvUui82RNhvYVo97jdSE6fw7UzYstgAqs9+/3c?= =?us-ascii?Q?RyF1p8YnkeO4QWtsjABz4EaF9tl3JCvh9CaGmhTcvU5HmGHWQcsc5ANHLwsV?= =?us-ascii?Q?7s1knwqRcEjt20aPZbwRSVQim6f9oFCgrui00OqONqxNXitU3hiW/sukLLEC?= =?us-ascii?Q?ZMs7sJUR8NS9SPYezZBq50ONMCCqUdxvgjCtmtlTaKSPHtKRlbm9XKtKBw35?= =?us-ascii?Q?dFEySLDvzX2cI3XjJrmb8K4cdFkROMKiAmwx7bKVtRtn/wfJN9xLuIQe/JvM?= =?us-ascii?Q?Cm9C1G2mNVnYHhoc2SDHtiRjoJxk6giHw8lyv0Rflsh4dg6FK1mGSphQ/yuj?= =?us-ascii?Q?f4u8HCKjBqsCuRG0G1A7OlYrftCfiU2KY6KVlAKJduK5Kf2/iLiFJZhn63tK?= =?us-ascii?Q?1eF7yvcs0rZdMjVvPPEn2fCDRYzQIEcEOmRJ1OnKJuY3Fw9fkU7a1y+cAJj/?= =?us-ascii?Q?a6vP6CgKewtSOq6rydbCNq/Y+2BOGL3hKE5bCAbcw2t7oOLYLff8jlBhGoEY?= =?us-ascii?Q?M5quJ5zyX+yKYOZ9aLUNiiMxyDCjx0+6vdhcCdKCZMx5OhXWnXguKindsaFT?= =?us-ascii?Q?FPw753HNxCEIrmYIgVWgtfTlzkWW7uGphn?= X-Microsoft-Exchange-Diagnostics: 1;DB4PR02MB127;5:MnuIkjzMgLcvLm3rmEzCxJ/mFu4tP8oXV1tUrjnOObPh8bMAFJYQXaqwglJOfqb1xFgGKWZ4i0lLDcwpXEeEMx1pjuvQru0LRN5q5F4Jp0CkYoVsaayaPOvTQZio055fdAvoTiAiga1tOWy5GLncBw==;24:Bnsk0MMq789f4+sXcPdz/doTfwyBDjpKYW1v6+TxX+Oh25KQLtVJS8VVkFQgoiJbJ2EE68ydsKxXl1k9A2968ge/Hl0y2uH/P02Q5efOWZQ= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ezchip.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jan 2016 19:35:18.5268 (UTC) X-MS-Exchange-CrossTenant-Id: 0fc16e0a-3cd3-4092-8b2f-0a42cff122c3 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=0fc16e0a-3cd3-4092-8b2f-0a42cff122c3;Ip=[12.216.194.146];Helo=[ld-1.internal.tilera.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR02MB127 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This per-cpu check was being done in the loop in lru_add_drain_all(), but having it be callable for a particular cpu is helpful for the task-isolation patches. Signed-off-by: Chris Metcalf --- include/linux/swap.h | 1 + mm/swap.c | 13 +++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/include/linux/swap.h b/include/linux/swap.h index 7ba7dccaf0e7..66719610c9f5 100644 --- a/include/linux/swap.h +++ b/include/linux/swap.h @@ -305,6 +305,7 @@ extern void activate_page(struct page *); extern void mark_page_accessed(struct page *); extern void lru_add_drain(void); extern void lru_add_drain_cpu(int cpu); +extern bool lru_add_drain_needed(int cpu); extern void lru_add_drain_all(void); extern void rotate_reclaimable_page(struct page *page); extern void deactivate_file_page(struct page *page); diff --git a/mm/swap.c b/mm/swap.c index 39395fb549c0..ce1eb052a293 100644 --- a/mm/swap.c +++ b/mm/swap.c @@ -854,6 +854,14 @@ void deactivate_file_page(struct page *page) } } +bool lru_add_drain_needed(int cpu) +{ + return (pagevec_count(&per_cpu(lru_add_pvec, cpu)) || + pagevec_count(&per_cpu(lru_rotate_pvecs, cpu)) || + pagevec_count(&per_cpu(lru_deactivate_file_pvecs, cpu)) || + need_activate_page_drain(cpu)); +} + void lru_add_drain(void) { lru_add_drain_cpu(get_cpu()); @@ -880,10 +888,7 @@ void lru_add_drain_all(void) for_each_online_cpu(cpu) { struct work_struct *work = &per_cpu(lru_add_drain_work, cpu); - if (pagevec_count(&per_cpu(lru_add_pvec, cpu)) || - pagevec_count(&per_cpu(lru_rotate_pvecs, cpu)) || - pagevec_count(&per_cpu(lru_deactivate_file_pvecs, cpu)) || - need_activate_page_drain(cpu)) { + if (lru_add_drain_needed(cpu)) { INIT_WORK(work, lru_add_drain_per_cpu); schedule_work_on(cpu, work); cpumask_set_cpu(cpu, &has_work); -- 2.1.2