From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753334AbbJTUgv (ORCPT ); Tue, 20 Oct 2015 16:36:51 -0400 Received: from mail-am1on0064.outbound.protection.outlook.com ([157.56.112.64]:31756 "EHLO emea01-am1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753157AbbJTUgh (ORCPT ); Tue, 20 Oct 2015 16:36:37 -0400 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 v8 03/14] lru_add_drain_all: factor out lru_add_drain_needed Date: Tue, 20 Oct 2015 16:36:01 -0400 Message-ID: <1445373372-6567-4-git-send-email-cmetcalf@ezchip.com> X-Mailer: git-send-email 2.1.2 In-Reply-To: <1445373372-6567-1-git-send-email-cmetcalf@ezchip.com> References: <1445373372-6567-1-git-send-email-cmetcalf@ezchip.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;DB3FFO11OLC004;1:2+AbcrVdI3oAnSVApKg1E2zJdJDT1Iqh4/RX7peXZ5oPA1TKsUOBJjdbwjs5runuxx3nEOqHkMJZksdaGAolp1zILcRpMLu1MaauEub8C3mmiWyy4zHbnFadvNN5mUVl/mF2jkC2fnIPhkWZnS6zTi6grF0+NjY3wyfj0XjnUlBLo5holtTTvEyBxvo1DpVHuHE/mwzX8D7ZmMhuoVwektnBni4dIhliWXf1kSw5bFbH+msROGBuFD6+fydRbVl2LMXpjYgDJ++C/P18LbXfHzT4UNxb87V/W/guqk1UWzXqXeODwFRP24u5Iy/iJunFQN+1JGAw4zDZWyOEaZcSoNmrW+0wT/LVq78nupGK85M= X-Forefront-Antispam-Report: CIP:12.216.194.146;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(979002)(6009001)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(85426001)(47776003)(33646002)(86362001)(46102003)(11100500001)(6806005)(97736004)(36756003)(104016004)(81156007)(575784001)(2201001)(107886002)(189998001)(42186005)(50466002)(48376002)(229853001)(5008740100001)(5001770100001)(5007970100001)(2950100001)(76176999)(64706001)(50986999)(5001960100002)(92566002)(50226001)(106466001)(105606002)(19580395003)(5003940100001)(106476002)(87936001)(19580405001)(106356001)(9376005)(921003)(83996005)(1121003)(2101003)(4001430100001)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1101;SCL:1;SRVR:AM2PR02MB0420;H:ld-1.internal.tilera.com;FPR:;SPF:Fail;PTR:InfoNoRecords;A:1;MX:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;AM2PR02MB0420;2:IkDEoBel82pwm7eMdWwFujMlWowu1pNzPFZ8WwNRjkmRnU5w4ZR42dYuOkfQ3lD3QsWfnlw1hugl6UzlPIaZ31GAEiDJGbLDY8tVvioX66r+SfxnPHtE8dUt9zGUx2s8ZH8nzlZ+FjxPDOQSF5cvtCTSB6X4+Obr/jrfw59tbtA=;3:pW4A5Vaf9o71kYX5fiS8BLTqad+734pcFxSp7dlHz6KRgilmZJUyWmK9H0M/4END6DzlqpKC8ZD8za+JAoQntjFeMZdHYMIXTZnbe4PRbgj6tr7EKRvFM92Yz3yNMDeQaeAGjrIwcfZVRrMX9FN31fruP3q2uL0KCghkH1KKafZUV5KrsTM2qxUuRwGhsXDe7Rjg9+q0UQwluTEYKpu2JA2bojCMmh2MOd3OdyEViPP7nW0sy6AKpXCgkzlhbhU9;25:Wha/QizY7vX7gIhSpjtr7xlIkbcbW9BtIwuUuwgZFsCeimooZ6q24Lb4jMnYgsYFFORft1k7uhmKkvKWw7TuatLemszjFVFA0LkE3LxE4bsk0P9U5HxNo8NjUilm09ZC7Ja17YnO83unH2qy6tAfu3EroCQpOM47KquiUk8gho66gUlxI57UwqX95YROS0UENhw9YKz2HJozdrHyfMmaxyvB0vhqH5XgjrZ4w+YDGNzMBl0ROqGtqRa0nQVbxhkqXFX7+gUeBJJvJ8MpoS4KpQ==;20:xEbJTtvLm6OxEe4PD4toecsaAGqyYmxeeKrGUxJ4oGRDh9NwAWNCGTwF2MkwuosB6qSa2JcfdAwk6dXcDzhKx7iFtMFPptv5ZmQCXoDDTvsWV69LDiU/nLHHY3niOlGYIglxNBQe3bmhT12ZnK+nkP3mPCLvTapo7dXxy3vpj14= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AM2PR02MB0420; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(121898900299872); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(520078)(8121501046)(3002001);SRVR:AM2PR02MB0420;BCL:0;PCL:0;RULEID:;SRVR:AM2PR02MB0420; X-Microsoft-Exchange-Diagnostics: 1;AM2PR02MB0420;4:hyQzxIWnE/hwdyrQSe40IR5O36S9zIzsSSEuADWwQhopFT/WtFXI9D19OcpOcJjQCg41kQL4lDJQH0kpUu14Hi38jHp+0NCK5fm5T6Xs34120sDpOWy5sh6w+hfGX3DdlkftJXsW2Xq+8X3VcsVZDEUwGsTa5sExvgONtMQ4uu564ryvnmWl63DbVci0IzbizUag30UaPBDvihN++9JHUvxp/imEB59/+CSXIlCVqVWbHVtk/DUHEJ8FJNizZo6Sw50eiAVilXokCFqM2l0jhhrdKM8CvSPfpAN4M6AZwrV+ELOZDBccHcDWdjo4Hj0t4hZGqhmNwMZXXb94TVQSdNhTYOnPqEf1/JqryTt7T8Y= X-Forefront-PRVS: 073515755F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM2PR02MB0420;23:sFpd+qPU0c5GV858dUi59V4Kv20HfX8nf1WvBeOQA?= =?us-ascii?Q?HS2n0rKBvebq4VzQt61DV0kgQhNtInxEKxuNZDJ728fb4qFNJqYAXJ2s9DF1?= =?us-ascii?Q?JKJUxxyIczffI47vjUj9a6N3KFVl6vWfU1AAujCGn8LcUiqN7wkx+23YlTDw?= =?us-ascii?Q?DOGF8GPTXrzd/QCNM3XFdIF+cGwHuzo1OZdxvq149lJDSkdfpMvEQ8ytJUPw?= =?us-ascii?Q?8Dn5U6MwiK6/y0+2x3uRkNSfr6sDTyY29VkucHTOswrnpCIwL2Gy+kNhFO4a?= =?us-ascii?Q?fe3NtYUJWjLNQIT68Z5zAPnDEUja6Y+yc3pY3WrTuLTaKLufiKyxH9N7AJXq?= =?us-ascii?Q?Rpu3MZx8lAekuLWS2cRdrgh5wjrYWWCS+eXePV0Waq9kLwVTMu4tX3ZsmxV+?= =?us-ascii?Q?P7k31CKv5jqXUMcQYyCjUcUKnXIvPKLgzQkS8CPbHPRa23VCmVGiS/s3Ae5Z?= =?us-ascii?Q?tSVyq6h4G2W9FDvPoW2ezjnMC3Jw4GpGrifIU4IVxwEgyAd2yJG75avCo8aU?= =?us-ascii?Q?3kBykKbAVgONmWKZnISULEzTyTvBH4b7Rb5x0HtwrqfNf+mOb2O6MNj3hEKr?= =?us-ascii?Q?yFfIVfZSuvdvIlpnYDUuwZxW3N3IJGfOouPcpeuZJGV4rkja3jX5Wc2qdfoj?= =?us-ascii?Q?Lfbhp4DHQFZ0iQ75nSzwtgG8vG5At+cx23Hci+V0+XkYipehVuiKHPqSiO2p?= =?us-ascii?Q?tCpVEqNFYzuY3Uh4eOYWZnEBMSjaySgs6mku8MHAfbWsdRJqjjVGvnhpJ6w2?= =?us-ascii?Q?cF5fn60FIQRlVX8hQ50swB3fT82OZjdrkFlKqwJERCcWotgxKmWK9nZcw/+9?= =?us-ascii?Q?Gh8QI9PtZ5GzBK7LOorEyOzjFwtM94HqErQjwrjWv63nium+J791IzQqByMC?= =?us-ascii?Q?rddpbniG9UFsf/KsR8kQ7OpW/A/Hq183ZxojRBV4QFeyxsT7BdpSt0hy9b+5?= =?us-ascii?Q?tt5th6eUSnGLKHAgubAGApR0y9csXI4dlOcn3p0eeQqiqEx1i2DmkTcDIkop?= =?us-ascii?Q?C+SX8iT7ER0AbKmn429XsJbgTmOuQL7svJTGEawyek4Av+Xm1lZm3fY/cjfb?= =?us-ascii?Q?KVbDhfSJ8FUwzhCjdPbC7yGXGN/vjaTp3qk6021y8FA4m+lfSVDwfzyZoKou?= =?us-ascii?Q?G7lIZ/xYYPwHiQ4fa2qqq3NkPk8j1jFNCOugwd1TGf1URc56VhvGus6jdm1n?= =?us-ascii?Q?kkUWBjmGMu32DFWEFF38xZcBRXFNs/ShbRCpZRg5UxUc+9xYEMNYBsS2ZYvj?= =?us-ascii?Q?OGSeMWdfiiPxkfpXabnkaTqJeiR1zxMVcXCc7gOEm9Jrq/GeF0lFbhzQOz79?= =?us-ascii?Q?oJvzRLw6XJ4r0/IiaYCgVXFEaIBL7TT9K/6GujKqhtJk0WKuU7YbWcN5Txjn?= =?us-ascii?Q?vFzCqoIHeu8cJjOJDlnA2SNSnBKOqmOcwxjYc7NrgNgJXY6?= X-Microsoft-Exchange-Diagnostics: 1;AM2PR02MB0420;5:tCYo4my62cQyNPrh4lQ2wUTEkwuS1vaAnTGNB4TS3dK5kmMeX+Yh6eOGscQEnIDTgZ5t7EFFQLxHl5kq7xZXw1MuRY/i/CgWX65EdOoL8+t7cbIP44wmGaS+y4x7dNiS9+xl2WGrmIQLaNVXwFK5rA==;24:zYm6oCgXRcHNZMKhrvIFAt1HuuaBXkDSaK9lYaAnphDkHYNd79H3WceCR3WrQ9fmkn4o+tUzScuBlejtU1PA53zp6UMs9dv4qyyCFIR3cvY=;20:NWbrsT8ioSHnuHZ2gibJuiiqYQv+mlZK+72ji+QKvEwDMZ5ut+tYKsrmdVLcZLfW/itXAYKy7qRizyBqHXLwtw== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ezchip.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Oct 2015 20:36:33.3531 (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: AM2PR02MB0420 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 983f692a47fd..e21f3357cedd 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