From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752864AbcADTfV (ORCPT ); Mon, 4 Jan 2016 14:35:21 -0500 Received: from mail-db3on0090.outbound.protection.outlook.com ([157.55.234.90]:35168 "EHLO emea01-db3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752686AbcADTfO (ORCPT ); Mon, 4 Jan 2016 14:35:14 -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 01/13] vmstat: provide a function to quiet down the diff processing Date: Mon, 4 Jan 2016 14:34:39 -0500 Message-ID: <1451936091-29247-2-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;DB3FFO11FD006;1:MPWbZB1mCw37MKoPYJS5lasIVkAyunxVI7N6Z4HR1wkG9NyrgAwPvgJsbzIshnDZkKvCHwFU169Qig6hArbBtA4zru+rPVc75pdnNq3DFOJP50fLXc1QtuVbrZ6X2AYFXozI+EdYnhLh1pNgPYQFevCm18zZ7M70VX3evRvmX9h+dTxqm1z7ApA3LVp/FFf/KNtxf57VXM+7uPWPipH+mqgBOf3J2zAur7Z6NdnF++Z5cOJKiiU7mB74EXK++HmCdDAmsR9VR1eyBz2A5NmyIo8DaKJUNj7BCvG9Eez0ZcD4qSf59v6aZ4qrFO00rWTEcsLSOMGbFXBZnkaTSF0kQXEIzW8yVuWFJM9IlZAFhwHrhSsoAknjv3SxOaFrNGq+ X-Forefront-Antispam-Report: CIP:12.216.194.146;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(50986999)(586003)(4326007)(19580405001)(19580395003)(87936001)(86362001)(2950100001)(575784001)(50466002)(76176999)(229853001)(50226001)(48376002)(85426001)(5003940100001)(33646002)(42186005)(189998001)(11100500001)(6806005)(1220700001)(105606002)(92566002)(106466001)(5008740100001)(104016004)(5001970100001)(47776003)(1096002)(36756003)(4001430100002)(107886002)(5001770100001)(921003)(83996005)(2101003)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:DB3PR02MB0425;H:ld-1.internal.tilera.com;FPR:;SPF:Fail;PTR:wb-fw1.tilera.com;A:1;MX:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;DB3PR02MB0425;2:wI+5ji3fbUZfR25CFgaTGyiKCMk4iXsU1DQzsd48tVigohjnLHWqi79MlYhC0wsKA4SH6LEBECnmM2BuN0eybrOAzmgzzs305qx7d8HytGI3c5FARcb5qEX8Qkw/21kTqdUkkGrUQgmQHnolxPkp1Q==;3:PW/9pca7Qu36V09oTK99jbI4eQy/jjbouJI7p9foMBxMSsF0GE8ASjLoQ3X6JlLgi3R13LRXLEJuZZ6umgLZ8XpRP/mZ1rHw15vaWGTKBRw+2CnC0WzqKjr668MfaTpWWrchADQ+rcIRyQ+os6xhcwG4iPBz8TxVJkiBdbOVBWp8KGFKPm3q7lTELhi+s07hFDa20+CzopM3B2lyszGP87qZy3ORhnaiKoEjQPXzawI=;25:4d6Zmz4XesRhaRPu9s6S4H0MwSw3qfbfCSJx9CaLk3LhqYWXN2k0WYs+PYDSw4hTU2BrMEW3n380/lvDZfOJiUqYo5tgQfoe/ldxu1qmIqd5vWJ6gywBY5f55KYyYbrQXVayokVY8xwI52eKItwZZdxJ5rSsImvEdoBYL5ttjKuXuhnGg6UW/2cx7gA8YSe21ujvQTzCiTpOrmTCziVhbAe5QkK5+uLaTlkI6TFvG7PGxrGpkPGKqa1KJxv8HFi0Zgga31+620sPFJi2hSNdHA==;20:KoSTv9gPj+3ziKVlFQsCumrzq9Ykhle3mtKaHZJnEJPCcPPX99OzMhtojvGJIiNzq/SYmbh+9CpQe3T8pSyGlexKYXHp/681BDKvA8IiTypJdisCBW3KaC3r/L+NMf7br1vMf1GaiAkqQktVE24rwb2pJy8BIa/6OIbdDAjpCU4= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DB3PR02MB0425; 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:DB3PR02MB0425;BCL:0;PCL:0;RULEID:;SRVR:DB3PR02MB0425; X-Microsoft-Exchange-Diagnostics: 1;DB3PR02MB0425;4:7dFw3OfcKtfzo9dxKsyKl+LqZeFiBcsrN3s62K/D/EBeExZD0sbo74AOh2ouEDSNfpxaFzXz96tO8uTbXBzP0aqYzdRB2ak/ArySVndSlBO8bCgrIuAIJ4u4556y1cKdvfKiUKHdzGZhZ70URueh9XnER4/coRMLAEbyO8suyje+oyi+rWUTBZR28nDXwuhtgpmhUeTl63U1npBQefMQfMx35zyA0LYQpaA31zkOHUuBMOXXbJJXYxqaN2YsBpxH/vwaR0080DJDzzkCYIFP2cqk4hhOcK+cqyTVdxMTwJIICy6rsrLZx+/v7wc/SBkGCEiuvBeIVmU7SSOcsWJtuJUN5BJksscOBbQQ7cmysF3SQ2vuNsXzWvYmYBGXiArYDSBSZ3+vtvfGQJpnLqW3r7SX8U5u/yNqvkdB+PZvf/Z0PmVzZV7mHxvmmr45B9lC X-Forefront-PRVS: 08118EFC2B X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DB3PR02MB0425;23:lVtszFkj813N7QpOFTT2KQil2V5AT7zlcOwSfMq4t?= =?us-ascii?Q?WN+nA7L4CY1JsclfxkBuEQatGbjPI7lBx4+PmqurCdjcBGrFRntbXBIsT/IQ?= =?us-ascii?Q?cHCQ6Sis2W6ctLoeb/gwlPOGsM8zeUucEjlc27qOvoR75FO+Ey8vCoE/OsIq?= =?us-ascii?Q?V1nyFJ8At6eP5MPGQuOqwYRfzk1/vJylj5fvKtR4lj+KVAzjJPN7NCDVjRnD?= =?us-ascii?Q?H/D9beRt28gRxNRwCE2tky5tH5tzs+7oac9JEW4EqMrlGCtTwCaa64ZNL5B4?= =?us-ascii?Q?NqI4JJdMPyli66muoOBHGED1vmIPCJzqxHqSR4DMx/VCCo8OkgYuKJl7G/HY?= =?us-ascii?Q?1ow4t59p3KRAMKtdtr5xHkLX7SizRJAl51/ji3NtLp52gsImstNrYiry7Oux?= =?us-ascii?Q?9JGlYjjvVFULLFcWMHI1chcoPhw5/35vxSmGRVJOKzR8YW318xC2gyAttdIJ?= =?us-ascii?Q?Q1SGmHjOc8jL0UBWmlNxj9zYdg7rlHFsETws0Titn0JotipCIEI82oNa/Pji?= =?us-ascii?Q?FG68jWxum5s4vRxEaTbVI7neZrT/METdhbM+249ei3CTxuG02nXM2NA6xT59?= =?us-ascii?Q?A/vh4b7WgYNxCIEjaBf+y/YOJD8imA9IsCcUzPD4q9OibDwTIcEK6FRGsoeP?= =?us-ascii?Q?Lb2ozWDvFizvJKlRvhjcfxmNxhbS4PCq1pf+sgfyUtYhPHQ0NkZavA5wotwh?= =?us-ascii?Q?ZUAfQ/Njq094yfSHYePgI07wprfOzkCX4u701rtpayIEaG8aFRUL/gxXBtsh?= =?us-ascii?Q?p9Pf8KHS2MA3N99gvA/Sjx9QRZgFX0WEv1YnAp6+Zgrj9f1d6CSDwwa3VBP6?= =?us-ascii?Q?Th/4GsNmqTEr5t//yk/MOG/UNlbj9TEYbSh0Sh74gzrUtoKanH7Rb+0xeaNO?= =?us-ascii?Q?zwn9QVy5QH3JqvcciB55i1osNAh8odm4L50daSgPZg1nQUnJn32zT7AvPove?= =?us-ascii?Q?1Huq+r/ZTtVdxJUZifcP8sGpV2PlLk5Mj41vaYx9VVEMkHQcXSLTapTkllJN?= =?us-ascii?Q?U7PcU9mw++yYeLR8+n5xS1ll5CfJm3bmoMxgbSZlIxJaVbf6hUM3Y4ZrzdxB?= =?us-ascii?Q?CbDzKWn/tk1QQM1caxoisSm+pp2zI8mZkyiFRw/jwx3/mTg/xkjWL4TAi4cy?= =?us-ascii?Q?+WX19NM9CKh2V+lnm8zfFs1nenp8yBldxMPHxsA8T9Redo0mp+gHgV7Ewi5K?= =?us-ascii?Q?3sIc/y+pMa/4bA=3D?= X-Microsoft-Exchange-Diagnostics: 1;DB3PR02MB0425;5:B9TERMvLI23QDgaOZet6uBt7kVWyaEEZrjsx054C1IhO5V5xwZG6QvwG9xK8ASB05JGE7nt9o+egabv3+YFttv0TCQqIYuap/7aEvjgobb//bRfUTxqv5dtYsUpol2aFBGLo2hGwpE3aOj+9gTWf6Q==;24:LvBX0HuKVTuy4v/48DmXObUH8hqJRtwgFtuvMBFb1aUZeaFL9StBSfN0IeBam+BNZhSwkkNJwjG6FVRem6UwJkJd7IhNasYThFXngntqK+c= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ezchip.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jan 2016 19:35:08.3930 (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: DB3PR02MB0425 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 Signed-off-by: Chris Metcalf --- 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 5dbc8b0ee567..6f5a21993ff3 100644 --- a/include/linux/vmstat.h +++ b/include/linux/vmstat.h @@ -189,6 +189,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); @@ -249,6 +250,7 @@ static inline void __dec_zone_page_state(struct page *page, 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 0d5712b0206c..0510d2ec31a6 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c @@ -1418,6 +1418,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