From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934191AbbI1PRt (ORCPT ); Mon, 28 Sep 2015 11:17:49 -0400 Received: from mail-db3on0068.outbound.protection.outlook.com ([157.55.234.68]:20288 "EHLO emea01-db3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S934024AbbI1PRq (ORCPT ); Mon, 28 Sep 2015 11:17:46 -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 , Subject: [PATCH v7 01/11] vmstat: provide a function to quiet down the diff processing Date: Mon, 28 Sep 2015 11:17:16 -0400 Message-ID: <1443453446-7827-2-git-send-email-cmetcalf@ezchip.com> X-Mailer: git-send-email 2.1.2 In-Reply-To: <1443453446-7827-1-git-send-email-cmetcalf@ezchip.com> References: <1443453446-7827-1-git-send-email-cmetcalf@ezchip.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;DB3FFO11FD051;1:hAVMUgZ/7YdDReDE17LFkJ7a/2U7MNyihd6KEedltOKBPNKrYsqt0dG3Qc2MHJp66fXrPiUtFCeKENi6S1AzqhrW0fPZZ1OfwABrTZQtYKRJscbXIIn1qhn2ufEiZfT+ILAnKLzlss+N/3yiHptssslP33eMXrSiahLCETo+kZj9YuUNhi418frDLlSY6kulq6EUus9/ct6bxW3k/H8ZquGy8G+DQVOQYUzVc9WeMRZvSn2ZhfeGaK2CUrSIumZUGA/lLcuZ/vW5iNRNphFRFOab7DtXIe+CB066QkjXFvBVy3dzhtattUXxCPY9Ny2+JgmWIoA+DFPIAyNADvZ2QLJaf5ymcDiU0J51scMpfcU= X-Forefront-Antispam-Report: CIP:12.216.194.146;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(1110001)(1109001)(339900001)(189002)(199003)(107886002)(64706001)(5003940100001)(6806005)(86362001)(85426001)(50226001)(42186005)(47776003)(105606002)(106476002)(106466001)(229853001)(106356001)(5001860100001)(189998001)(5001960100002)(33646002)(87936001)(11100500001)(50466002)(48376002)(5007970100001)(2950100001)(62966003)(77156002)(36756003)(92566002)(5001830100001)(19580395003)(19580405001)(5001770100001)(97736004)(81156007)(4001540100001)(104016004)(46102003)(68736005)(50986999)(76176999)(9376005)(921003)(83996005)(1121003)(2101003);DIR:OUT;SFP:1101;SCL:1;SRVR:AM3PR02MB0423;H:ld-1.internal.tilera.com;FPR:;SPF:Fail;PTR:InfoNoRecords;MX:1;A:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;AM3PR02MB0423;2:5f9osuAb1PeoTmrH7Z7l1adwl7kvFG5fb7IrgVMSG/29bmxxkuceMkt9M62Rc3E430uBSSIuSlLS07gG3sTwpxi8B6C04uWI4s0XNCQqhUWH67cuOdiAI5Usi5Z8/b6U65lHFdtgimuvfZl/KN9cg+DTtUnr8yGc6EY27H8MoSg=;3:qwmZUg6h0njK7Z7gLpPY4nRXSzAxgezWrzlqzRbJXl3PCS4Pn3VEQUEr4C/MhUxtzynEiawChq5lE5eDvoufE5RUFwbTqipgrOmPcBGbnQcPv57FvSzXeXV55jIEnYiTlNcJd6XAeDgggTeyMgM3TC9cWtz//RVI9QBoXawHRxUpTRRhTR1J3Wr0UothWiReqIzVrtl3ZsjgDFxXoqqNQI9D3sFafC5B6c6q6Uv5MOHj6F8eIO8x+FTbGu0q1vIX;25:RFza08eVUKoDzRR8/yniYpLviN9JP+r+t00Vui4UojUWEBgk2LPgAuVvxElg9jA27GZlZUaUuLkaKiLNqZ4tbJeNx2Iog84psi7Vdbj3cj+DE0l0DEjoxslEJjxvunKeEB8PiaLE9pmo2+opn5Wi0nAjSY/Q89ttclWfC7YtzJPDvuDokbyix1gnLUxaHOs3ARqUhJdLSiUsFh3/GfbLmbsdMIRrXlX/RzmK/k31ypq5QJIWrCpjWQ4iyj/vkQ/EjO/KstKnjUBYrhRB2wsCtQ==;20:hWmuX/4eKA6e6FyoFkjDKGSlZ6MoCOWz/AGUbXUMlRsPxvhOIOWDKUXLemRQk20DluHCpaNo0PawdlkN4VA5cdDAPe2EJ1v76/6Ad3GqQUMYcqJM8mpVWmabuamgdtNvbL0OsBugIRSlRfFuKGsXimLe0NBSs2nt6nqBTbaGHB4= 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)(2401047)(5005006)(520078)(8121501046)(3002001);SRVR:AM3PR02MB0423;BCL:0;PCL:0;RULEID:;SRVR:AM3PR02MB0423; X-Microsoft-Exchange-Diagnostics: 1;AM3PR02MB0423;4:qxBk03OXR44S9WiBHZmc/FnOEoXvsvHkDgSgeUo1GssBKyQX11XNSrVIcs4j+BQov+F94j0utEpItWezFJxGld4ZZKzBxdWsqhzXaZmD5MaxoQRb5MMprVDvLvnJYDNCV/pxJmA4K717ufFHrZ7996A3KeesosMrkapmYF2GeCWDRMxowA8yAf6rP/f4RhXu8bTMsjUOnCPtV3gJKaaKCHAxHifhh1NTdcQ06MHAoVRoOLL3CFoyF8VeqAtt6mGRNMDfZT89OXTE84FMXbIO+dRvyvKpgNojebiagwRFdxPf2DHFKhr/bdyxRsKTolIaknQ7sl8TOSKzs9kFcddTtVhsKwCGa0U18WUzchtODck= X-Forefront-PRVS: 0713BC207F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM3PR02MB0423;23:ZTlAmdrcazRagBZX/Hhq7EWcx0ARRsujzbGKU7Ixc?= =?us-ascii?Q?4QkPQ9bVvWrtePSv3GTwgPNXmtNxD0HdlIFCo/HTIURTZZ+af/j2KGbCOQF1?= =?us-ascii?Q?IQ4NYxXlNJX2R0hfYF2HV/pDv4mBt2b6ea8GIabV6XTiVTsGG94QCk4BE2tm?= =?us-ascii?Q?044NDmP+fDVPDLckwsSMVAUP9rj9hoovkG0aEYmaGdL0Z8ul1yyvYAJePqL2?= =?us-ascii?Q?TI8wA9NTx7SqIRahSyQPEhPA3wU8dxim8HRE2oUqUmyXnH0mI09FFUhg2k4C?= =?us-ascii?Q?DULctmDJ7AgKcgZ+CQjE1S+VTXsUUOePDKw54QuN96atOmvbt2zjIuv5UZBq?= =?us-ascii?Q?0L3UHX4AmZRLceMk5c4nVA2DUpeA+Z35hknZ+Ll6u2V4luR5q8A2UPGHlEdn?= =?us-ascii?Q?TUgxKfxw53cc+JKLyzAxvC1T8GTtCenqCVDAC5LLfKod8oRDf8a8wVfRi2Ls?= =?us-ascii?Q?DgCfn/c8IJH9vkDTZo6zXQqn9t1JsopBa1vZaTHwOBFyCS1eRFtRHqCfDn+l?= =?us-ascii?Q?eOH2V8qTdD0TWBPURmk9oRgH6idnK7Gsh+BNAcSxtHKOM7Q8ZStJ7gu8I486?= =?us-ascii?Q?tjZ+ynPhoAcYgwZ3oTb/5bpQWnNt76NXuyrLn8WoVWwMqG+Mh7Yefwt/KjhY?= =?us-ascii?Q?e9hx7WsHMreF5X+aHCwS7zF+J8IgmPAUCdRi3A45uAfdVNNLIAoDHeObvO98?= =?us-ascii?Q?woYroFB0qW6kQ7CbkIqEjL4/AhSbXpfauoXXHgj8+Uo6cWB0BZ7lhV2MyFN8?= =?us-ascii?Q?DHDdHpBU33fiepj6VUnCZdbLfSxq3HqVU7MQUy700+x+OEJikiso2KMYVDKl?= =?us-ascii?Q?nBvbGs9FeaixE7jqVRUlEHTGZT5R6wA7ZK5vditSvWv38PBd9zlRelK6Kfcq?= =?us-ascii?Q?u9QpkUnTJ4kN511wLhiMf2Y+YSbT5Na6mapRBOFj+G9eO30h1i2emT6Y6jae?= =?us-ascii?Q?GGDclN7seh6VOj+hb35neN8DhShgOqb2kXfUdUcVooR8iUQUM/GkrtUfE7CJ?= =?us-ascii?Q?NqoV1BSHPohQxKX4ClvMNbPHzY3NgGbiuuv0poE4aJ+cQi8qRCX4qw/wqW2N?= =?us-ascii?Q?RWRU319p2A974FNOc1SzmvBhMh20jEZMsY44soEDTXP5BapLPilh3mL+HDaY?= =?us-ascii?Q?cH1fQGe5EKgHeWnJVqJP+Ud/1xuxPMyQjoA+MPKB7Gv1NKBY+taZ6G6+jAs8?= =?us-ascii?Q?KzZJ4iiGqLqE697+QFa6yhuLTtpafs+YRQaoiJqTGKEczIsK+XPBb4dL53XC?= =?us-ascii?Q?2UfR7CyEsfqvoafJrk0USQkQFt9nAXkYxW7WGyB12hJPS5u4xR5IOKEzGP+n?= =?us-ascii?Q?2GGp1zinQFJmJBjymXe+o8dJXEtLMQnvIJezMlmJZoBtJX5Pr7W/8iy5afIa?= =?us-ascii?Q?9C6yA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;AM3PR02MB0423;5:xpEHltP18tPvtHyjtNz26VHh34b5DTT2/HE9SQ/cwFNFzFafE5Cx9g9Yx7qHLryn2VnSk+i18uRkp7nxJ40Jz8jBUW8MDm4uUOzUkY3rFvyOrJSQ1P7dxFuZ3PUfR+kvAqNR1gNmPGB/uptNYhGDAQ==;24:y3TAQ4SeIOu5wdisZDFKZbFppCDmALvEWlYOf/k55EDoBIwTMvktIhIRGs+ZM2rS02QqGYNzM/FtnNqKY5wCHkmWDZte6dAqFhQZfl+2q6g=;20:BNqGDb9POye1ZsSmqSLPWrAFyYwLcsviVw/faglkEibZf0sf7YQQ7xjXFiZlBKgqqSzWgyJBRwrvyQupok6rvA== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ezchip.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Sep 2015 15:17:41.2650 (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 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