Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756060AbbHYT40 (ORCPT ); Tue, 25 Aug 2015 15:56:26 -0400 Received: from mail-am1on0077.outbound.protection.outlook.com ([157.56.112.77]:14496 "EHLO emea01-am1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751042AbbHYT4W (ORCPT ); Tue, 25 Aug 2015 15:56:22 -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; 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 , Subject: [PATCH v6 1/6] vmstat: provide a function to quiet down the diff processing Date: Tue, 25 Aug 2015 15:55:50 -0400 Message-ID: <1440532555-15492-2-git-send-email-cmetcalf@ezchip.com> X-Mailer: git-send-email 2.1.2 In-Reply-To: <1440532555-15492-1-git-send-email-cmetcalf@ezchip.com> References: <1440532555-15492-1-git-send-email-cmetcalf@ezchip.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;DB3FFO11FD031;1:aTApyvaW0OUw0bRoxaCsXGZB0ls+aDlRQlG7SVZkMmY7jomo1lzsFLDRg4KJcagkFSL4VcJwnjnObwcMJ8GkyMvgu37ElGRzUOCgKzInJ/NNQ4dwozMlOpuZBNt0zCU71lNVrmUmY1EnqCjysK6FfvywadSvQLL56h1TJNdxxgdGt3HTpepRGwAybHuv/WCGddUqo3VUPxTXnw4JD+M9gnz0QzOqXyylN1ECUbl99v06ZSK/T2q5HjEAzJN06wlapaOKNp3wPFLJwWv30rztlNl5hSeLPImnjT/lGYuwou6gurW4teQ/l/dAdKft7R/ZX3R6sTlrBAQDkYZ5pW50HzHtpiPT9E8eEBtng6DnhrM= X-Forefront-Antispam-Report: CIP:12.216.194.146;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(339900001)(3050300001)(199003)(189002)(19580395003)(50226001)(106356001)(5001770100001)(33646002)(5007970100001)(104016003)(64706001)(36756003)(76176999)(86362001)(2950100001)(92566002)(189998001)(106466001)(85426001)(5003940100001)(105606002)(68736005)(4001540100001)(97736004)(77156002)(6806004)(81156007)(47776003)(50466002)(46102003)(5001830100001)(5001960100002)(62966003)(106476002)(87936001)(19580405001)(50986999)(229853001)(48376002)(42186005)(5001860100001)(107886002)(9376005)(921003)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:AM3PR02MB0423;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;AM3PR02MB0423;2:dQlqwSnwZ+ZegOHMidf1pIMgNKdS462s5jmdFljeQXzpY7oROND1QXCwNlHiXTxHH4AXTGUtFm79d56IfaMWegGhhY0E1eGkrsMQsoVVaHfRhh+9I1OsbkucOZFiJ3+U3lPWQeQMyNPEJ9VEFEnGlk90SjMhrASJZIjZrbU8t38=;3:Hel5TPJsEoGwFkGdhJLBK+uJXIYly/y/yEcqEtmBOqh68RRIVkjwb6DlT8FRScu7emOecPM27wTe01dCxcSu2ViTZyUiurLD3OwIQRWBtO2GQhlHY6YmJPcJRW5/o+ek9hDMDu/oWSfLVl3nYd5RhMArx64Vkj+0WvGemjpT2zQAy1JaOwUIKkKShF6jdzQKQskJKIyX4YjPHycgfUpJP34Rv2fgiwEz1PxrWTowPeHNxa8wSYtAcW+HMzb/dCPb;25:nns2MYdO1XHMVbTEoPmasoKYFdxuYMtctIQr8mCaP5VxjH0M4PMH7VkWKj0bFQUCjgAkr9W0cuaRoFJV/QUShFkFEJimO9HhSsX9BpZo5sOmib/KGb/eiWOceF/qQ7R5ubcN5mC0VZdYKKVuF/Xd6uVaMc5/Cvb5qivALGjOuehAsykpZp4amnjMCBL13anPpmF8GToWb/CflfiyAMlls9iE6iiX2FqixT1n8cdh9mJDz5PyeYRNTu+6R/epWUpmtzGH92+KOOVOeKP6WUnEaA==;20:omeMK+i0joB5ltgTSzgJBiW/Qhqf+W54ViiM5FOLLK3IO9qcGFISm9g4y1lSu91gcopzF7uHjz0TZwzQ2zgRdoezC8GyAWpEc4M+rwqmOFjMkV/ZBiN1qoIGFrsM4lEm+LEVw2tnBVN8x8mMmojOoh90o2HA5U395/Ea6aR0JzQ= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AM3PR02MB0423; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5005006)(8121501046)(3002001);SRVR:AM3PR02MB0423;BCL:0;PCL:0;RULEID:;SRVR:AM3PR02MB0423; X-Microsoft-Exchange-Diagnostics: 1;AM3PR02MB0423;4:0zvM1k2Md51wvClFYV3tHbzGuwrFnWo9EDuyo4C5I9ypZkd7Zv5pCK+vsHWTv7dk3/DJi1+/DURjpgR3JscK6rvM1Qa7B+0RxNLuOH5mXXKwqZ9j0VE7q9hN9BL5rUrGA1cQHsfJbI5bxuTKYKmj8ljrBoqDfu88q/yo2cmob6UlWWg3D9ivaiKuKrOc/TBuMC/24iJdHGnZlmiK5yh6g1vKMyf4lvsbtoJsQwhaOIGRs/ocH+KgQY/0r0vB6fdo8bFeSf3yKVyvw0UhwKdHeLTVEO48snQuQE6OqXYoTZTnQUh/eZAgkBsNXIUaPg63e9R/rQ6nsISdrdphp7Ciaw== X-Forefront-PRVS: 06793E740F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM3PR02MB0423;23:Wi6gJQlMV7J9rkwyqbv52ZzrVF5TdwrOrckiNy29T?= =?us-ascii?Q?NLj9aKeNCrgzlQfJC+yBX8VW5BSGozbAbj0wmilsqzO186o3oDjt6HyPL920?= =?us-ascii?Q?rtMuHUG6AcNS5O6TQAd8i3TwIiikJeQLL0sQbrRlTu7820jOi5cYnPb7n7la?= =?us-ascii?Q?UUWLQMtaCjvkynNru5WkWqqqF3n2I5KOmv/kRdWtoxpK9vXFL++FH86jpzja?= =?us-ascii?Q?6DmV9yNdcFgYMgb4bqQXO2Ms02BSW9NR1Lz7fT77DrrgAo4q0JaGhVY5kZMi?= =?us-ascii?Q?tWZXNR8xiBo+FlmUJLz8uJC7ZhKKhNXL/OGzGJk1+Fc8AKl5ugWlS4PL6nb9?= =?us-ascii?Q?ed/Tnshb0MTAv8fUPLYkATF0k7of0VStmRqVx02Z68mxwUCtOpHZL10vBLEj?= =?us-ascii?Q?nYGizRGHucgJpNcsyZsB9srOnX9hUtGrybie/Sb06tIF7DOXpiIGYANSoUgy?= =?us-ascii?Q?en6nT5QH6r0+6CVaBdkVBzwFRoMZJPI8djRBFtHAoTy3jePAL/vZJywkDn1n?= =?us-ascii?Q?JKyjHQdnILsZM7ZxLg4iRg+TqAb4q/cf+xFMZVGRTJQ39h/mWROkmDv2y8Ch?= =?us-ascii?Q?PWCoArpsa7M74OskGbeYL4lzdZtCEdnMhf4X+zdu4hOAkzKNhOsbyWNYYng7?= =?us-ascii?Q?G+aIeL5fDL6ttMOLHwj+m39o9A9g/p3YoKMbBqvlUGYykApdYRWIJmRIOsD6?= =?us-ascii?Q?UqiLr7m+HADsosN/ylob9j4dVHd3Sbr0PtAnE8oSb+V7/TLLxt2sYkC2mTXD?= =?us-ascii?Q?+DtZD60k8/gVqctvsLxbcwLAEtSobchRozXe4hPFNnuzfGCEyV2d8WZ7MfZB?= =?us-ascii?Q?Qc+F1kPGXC4wL4I0fugtcrfzWk0bmpGnkvJb08c/Ea3xl8Ib1x5okbqC1TLf?= =?us-ascii?Q?IrZvZabcSjdMXYf13o+1iYzIPxA+4+o7IkMHWBI+4jVzmQ3FhBokIXNaBrBi?= =?us-ascii?Q?dp8yYYmjHq4i01qRQBknYXwYeq3EVWzfzpQSuPPE+5Q4+tQvUTThuXo31Lzw?= =?us-ascii?Q?+iIrc2UrcgUHX5G0IoraAqu1UknSgHYKhSgYAAnlfj4+i+5dNMiIl4GN5bg2?= =?us-ascii?Q?BVSzwd2jZ6Y88O6CQCa4pt+U6DWA8Aeq8wGWLu2A5wSPa4lCg5vLNpB/q6dD?= =?us-ascii?Q?HbicIbUr+aAYRF+cMtG+lk6p7/YrEryah1YtV1Y/eX7VGN6DZNJAkmoBSKnk?= =?us-ascii?Q?HkryCOOkTBz0IcEEhee//bIrr3nwJbkqV8bLA2KXrziZzjjLlLo+BvR2cxOs?= =?us-ascii?Q?K3/StPd9lZR48bfoSSyUapM19J8HyIUbpFalDqW?= X-Microsoft-Exchange-Diagnostics: 1;AM3PR02MB0423;5:ApIpf25E4VVZLkpxHFwK+ZRHUObidQawrezEq5t0ZB5aACnG9QYN8T96MB4gNzXTQyZpncgLOST+kCbgymDcQya7MgW7PdbOz63i04A6CcSHJZk4/hLnoZZUwbxtfczxj+aZj9pA7zG6QDJhNl/0ew==;24:paEun76QOnitvx6NVkiRJB55zmChkRbkhzh3tzHSpjtPwaPyRJulR6ztNSRLCUvFP8EhgeGvJDZfHeddH9MSI1JlBYdIAMzOlB5douISQB4=;20:WfaIpWDAFdeavOI6yTaOdZxXqUvNJ2lBnzwHDy5LH1GoKkpP2mkdWZV/vSF7oLQr6MRcSANs0SM6j7A8fDn1Mg== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ezchip.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Aug 2015 19:56:18.1743 (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: AM3PR02MB0423 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2411 Lines: 70 From: Christoph Lameter quiet_vmstat() can be called in anticipation of a OS "quiet" period where no tick processing should be triggered. quiet_vmstat() will fold all pending differentials into the global counters and disable the vmstat_worker processing. Note that the shepherd thread will continue scanning the differentials from another processor and will reenable the vmstat workers if it detects any changes. Signed-off-by: Christoph Lameter --- include/linux/vmstat.h | 2 ++ mm/vmstat.c | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h index 82e7db7f7100..c013b8d8e434 100644 --- a/include/linux/vmstat.h +++ b/include/linux/vmstat.h @@ -211,6 +211,7 @@ extern void __inc_zone_state(struct zone *, enum zone_stat_item); extern void dec_zone_state(struct zone *, enum zone_stat_item); extern void __dec_zone_state(struct zone *, enum zone_stat_item); +void quiet_vmstat(void); void cpu_vm_stats_fold(int cpu); void refresh_zone_stat_thresholds(void); @@ -272,6 +273,7 @@ static inline void __dec_zone_page_state(struct page *page, static inline void refresh_cpu_vm_stats(int cpu) { } static inline void refresh_zone_stat_thresholds(void) { } static inline void cpu_vm_stats_fold(int cpu) { } +static inline void quiet_vmstat(void) { } static inline void drain_zonestat(struct zone *zone, struct per_cpu_pageset *pset) { } diff --git a/mm/vmstat.c b/mm/vmstat.c index 4f5cd974e11a..cf7d324f16e2 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c @@ -1394,6 +1394,20 @@ static void vmstat_update(struct work_struct *w) } /* + * Switch off vmstat processing and then fold all the remaining differentials + * until the diffs stay at zero. The function is used by NOHZ and can only be + * invoked when tick processing is not active. + */ +void quiet_vmstat(void) +{ + do { + if (!cpumask_test_and_set_cpu(smp_processor_id(), cpu_stat_off)) + cancel_delayed_work(this_cpu_ptr(&vmstat_work)); + + } while (refresh_cpu_vm_stats()); +} + +/* * Check if the diffs for a certain cpu indicate that * an update is needed. */ -- 2.1.2 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/