Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753451AbbG1TuB (ORCPT ); Tue, 28 Jul 2015 15:50:01 -0400 Received: from mail-am1on0094.outbound.protection.outlook.com ([157.56.112.94]:14522 "EHLO emea01-am1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752109AbbG1Tt6 (ORCPT ); Tue, 28 Jul 2015 15:49:58 -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 v5 1/6] vmstat: provide a function to quiet down the diff processing Date: Tue, 28 Jul 2015 15:49:35 -0400 Message-ID: <1438112980-9981-2-git-send-email-cmetcalf@ezchip.com> X-Mailer: git-send-email 2.1.2 In-Reply-To: <1438112980-9981-1-git-send-email-cmetcalf@ezchip.com> References: <1438112980-9981-1-git-send-email-cmetcalf@ezchip.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;DB3FFO11FD031;1:t0imSHq4MAyxulXbi280v6kQBmIELuzdIERstnxYkfx4TwkWNuRrhQ9YLACRKM/gm1MHGtF6QwsDr0AD0t1fDG4j1atuhIjJp28rjPi1D+wZgtBwrymaBeHucI2EbLEuM3hCrxrhsU57+yvTWyiLJdsK+2mTB0fGpRBGjiIeQlkx+Oa2+IGlYToyY5lEupMo6sbyWz9FiECzgD1X7rXgyGlPEZryWVMuazuVDQDCt9Ib7QlIquusSV9qkKJZxvUJ9WVye+pY7aDq+9vAnxuOx8rYhYhQzS9HqXVdJ4M2gLg= X-Forefront-Antispam-Report: CIP:12.216.194.146;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(339900001)(199003)(189002)(87936001)(2950100001)(36756003)(19580405001)(107886002)(6806004)(48376002)(50986999)(86362001)(5001770100001)(92566002)(50226001)(50466002)(189998001)(62966003)(19580395003)(42186005)(106466001)(76176999)(33646002)(5001960100002)(229853001)(85426001)(77156002)(46102003)(104016003)(47776003)(105606002)(921003)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:AM2PR02MB0418;H:ld-1.internal.tilera.com;FPR:;SPF:Fail;MLV:sfv;A:1;MX:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;AM2PR02MB0418;2:y9fNIHe8RqKv9mnn4KsWJg6bbeas1RuCd5i097Ej3Fmbt600QUfxZsQ+3S6chECZXt6FZ6kPQmr1Ce7tdTfz1D9mXGBk3oLHy7hZBSaf9P5VmmWrVP4py1V04C5+NTROAg/jD/iWXtbTkBCDPGD1zxvF5NMeCOUg1L23b4nQzr0=;3:MRtru227XV2uFwc76/DsTn23B3WGEg4AXqbm6zLTsAh+RFiDY3y9PHVRwQ3Fk/F9lWsiss51x8G9I0BYyE7KIuW8XmVkMXYoWdHMGAybZOqc+MKTO1fEmrWsLFX4HRH9jiGarOUVPRC+71iZ9Wqm+YNhuo9EaJ8Cj8437gUdgo9C9TAtmiA4yNXhWxc41FDCc8fphFGjToAvL/xd73OM0xeKnIRM+O8woBP8qxW2bxWtMXeTtqgHAWurmdiDFMhk;25:sheQizafn32A0Kcpp5ZZcIaOQneuAuWl0jZsKP89fiq/ofP7ZsOBrltRd4VGZ5Tb/IlquK3CNDGcZZV6D4qwn5J7dAPNopx/6G0TFxMA/fmFCbBQ12tYL+oMezuAGeVDlyfsxCd6cMlLLAL8EDdrIdEWTM3339zH0aQXi/Bf6an5NGap6wfCHfjQ4ENZkT31HcnD/LFYvxXeGJM/0DG61MIRmFjXvEISq8aIFbjJOf0mr1qeqQxZQD4Ateiwd9vEn1rk7a7BQcepMyNEOFCkXg==;20:nGBU5HQPjcK/5JkoOnvpo0/NiwsbuZVdO92eOQ84t+xhXJyD+goD4KOp+usxTwVZZu7xGUafhhgefuh4BFb0QUjfX5nnDQh1fqWWArHk3K8qkhl8z7KCMMxTBxezRqJ9w3+38cGWbDHOxtTZcrEkPhAFOtTtAzv+WdPuMqokzVc= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AM2PR02MB0418; AM2PR02MB0418: X-MS-Exchange-Organization-RulesExecuted X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5005006)(3002001);SRVR:AM2PR02MB0418;BCL:0;PCL:0;RULEID:;SRVR:AM2PR02MB0418; X-Microsoft-Exchange-Diagnostics: 1;AM2PR02MB0418;4:jhl179kilo/NlOFQLucMCaf/SLsPnDu0ra+p/fBAvZP8hP3M8Mx4HtOdp4JtTAlpV4Cr3HwRzfwF4a3K+JGCNDDwSzr+oPVv3d6qFdiepf6EYglzI6KJmYzNDayoUE5/0evnpA2sVeoG0ylZPabLMRXPt1DZTWUNH+hr1LsQAWbWK9vSMMEbJtDSKsF3h33q2sTbYTkHTwAsJ0bTCQUJvixuJbBXqvBzIHMfuxhA/ViuI+BlqBWYg/k1kIHD87O3Nbhauz8Q819z+ix16h0f8TtwaBy+og+4gptozaex9n4= X-Forefront-PRVS: 06515DA04B X-Microsoft-Exchange-Diagnostics: 1;AM2PR02MB0418;23:Cykatnzpu772Z6aa28XuZidYdUiEtYU0cLdgaJOKtSqb7baq4xjMpbIsGosHXqyHAVAr5RDpqs6ovqReHBmzfqUDy0g5/8oBZxOiXaFuZ5sPUTSFE4WKC6e1K08kBPif+1PVhxls42QVpEIAf/F9tlRGQqfmgmQwZnWJGmHYr7WEjrE0gHwzxYzS5o0zELlh5ojWcUe2U6DUuxaZwefeFSsi1vqCIffrpvZN9V0579EWtfzBW9cYRpZM/SRHPAKZyEgyKE2CDRf33vN6zSwext2SkV7EhS2SJuQRwFFUMI9uoY2rl9rheMoCiF+xWmeJeH/GlxQFMm+NacPUtILnqIDgX+Mn9RsKxskKwEt5EzPU9aCfROb9K6iUnz5Vt15JOJbt4n+wo53qwLyMsusqW1gks3NBpRh2QaFCDXYr1UrurKFKvnFCivo6ILWW6cFsQbth6yrmB85ZlLgTGmCfAxXAjbyVPbL1xatBCTAsW7JluyBebb8jHmA5jc9ZD5MQzBtJyaEMtRPtj8G5LMeQOQ/D8gHQh6dKG41Gywf2AKmUOVz0owD+WFZpK1U7vZQufMNsyG+D/w3FIq/c3UTp+67kGvGa3TtfyfbVxIpb5HXi2rCMRIAQYSbas1nUiJMKWlfEG6UCMNehThRtyvjBsoIX0Jm1/tmTp2IitYxme8620kZv1eQtUQo7ilIVP2/wISO46ENPNB/ETS/aeRcQG5H8pU2sv0CNm13bgAl7jh0YnBVDT5HAcSx98EbpQ1Iu5hDex98G/7ryWtL49nXZIIm/o+D9NYpzrmnkpCM3nfoVIcq2PZ5CKIOIn68H1Ej9j6saOt7aKrL0TYwwZC5o1Kfdbvu1PCDNeM/giKSiPlpYgSyhnGxDOP1jl7Zygb1GkWqMWyA5LFsuO0iYvn3byRjFg0H7E+y3d8ZfqzcSpc0= X-Microsoft-Exchange-Diagnostics: 1;AM2PR02MB0418;5:8FSn8KY3rNMhRU2q3BZZPk0CTjIRdOMRUA8JT+ukjcec6skEOMHrBKavKKJ3zGqpUEkP5ktYiJQd1sRlDD/Y9qkWYg7RXbUts0WvS0WSc9qlbRudz/E5aeKWrGBnRc6UqRpb6CDZ8UWcD7WP+TJNGA==;24:pkBEr24W8eQhtnJvYBFkU5nE4KETs5kgU6bPzfZ8aaQSwzGB/3lUK2jcbzQgqYNR94ptMjNfO3W+TTmk+oKTMw5Df/KmsX79Y9NMmgGhfD0=;20:dJB6TmtJpuqUkx1W93P0KLBEjlDRxyQzeF48tO9I7NK6PouIiQNSKhv/sNxTGq5O4n1wyHdSSX89EzIY3YIk8A== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ezchip.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jul 2015 19:49:56.3075 (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: AM2PR02MB0418 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/