Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753611AbbKXQTf (ORCPT ); Tue, 24 Nov 2015 11:19:35 -0500 Received: from mail-db3on0068.outbound.protection.outlook.com ([157.55.234.68]:18816 "EHLO emea01-db3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753255AbbKXQTd (ORCPT ); Tue, 24 Nov 2015 11:19:33 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=cmetcalf@ezchip.com; Subject: Re: [PATCH 2/7] nohz: New tick dependency mask To: Frederic Weisbecker , LKML References: <1447424529-13671-1-git-send-email-fweisbec@gmail.com> <1447424529-13671-3-git-send-email-fweisbec@gmail.com> CC: Peter Zijlstra , Thomas Gleixner , Luiz Capitulino , "Christoph Lameter" , Ingo Molnar , Viresh Kumar , Rik van Riel From: Chris Metcalf Message-ID: <56548E03.2080704@ezchip.com> Date: Tue, 24 Nov 2015 11:19:15 -0500 User-Agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: <1447424529-13671-3-git-send-email-fweisbec@gmail.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [12.216.194.146] X-ClientProxiedBy: DM2PR11CA0040.namprd11.prod.outlook.com (25.160.91.50) To AMSPR02MB117.eurprd02.prod.outlook.com (10.242.92.139) X-Microsoft-Exchange-Diagnostics: 1;AMSPR02MB117;2:NbNTVO9T4YhcyAKcJqS0Bb6enX0fVRvIzRgqdxXW05PvMDhK0dsuHZm3gbeg2SIstL76g19yDE+DixHMOwrTQeInzPKUZF3GKZk1VzOwf4nLEFX85a4Xi9w5IrBB8uWa/dQT5HTlYZCrtcsL4h8U5g==;3:yc79HsIYONgfyQWiUCIBtbjmTXPeGq/XqaPA5XOBL3SVFADgOzuh48rOmzhgjO6HCkevWSYB3BDkp41XQTUIbHH98xurcOf0FW9rR6yMM9S+YoVmJXDA5o0ofL3pF09Q;25:NXIu5/ZJ8FjiQbwXL/3t7V/mgLo+sjq/HvktCZcc/p6jY1H2SkrfEJ7UP77eNsn+KC5Bp/PoK+xbgsk9h7RoxiSs0NL8ub2iIayTEZxp0Yfdr4ad5YLp4yDWhZw8NbH+2VyoboFLgdU2LfYpE9hiJlkd16cx16WLACUUrR5A+91vpJzDsnEmBPY+6WurFepAkvnu5EN4oGqRRFlDk3mWqRFrrWbAaKYZgNaVK1KXds0Ygq15aMC6qWd4W5DwstjiVJq2W1/bWGzYY8fc1DIBJQ==;20:gQmfpQIuP1IYnC6E5Do1FY/8mfokWHRr/0Yn0Vl8wO5D/4iMYDyBJf8m4maoMhjhA37uXCVKEyyahof8tAW7G4gCoA4RPfDSzZIop6oCPSLGchnPXCZQmDXSkLFC3578oiszWtvmxxjs0DwpLDOnfOX1IJFV5Uah1VETiLPmkD4= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AMSPR02MB117; 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)(10201501046);SRVR:AMSPR02MB117;BCL:0;PCL:0;RULEID:;SRVR:AMSPR02MB117; X-Microsoft-Exchange-Diagnostics: 1;AMSPR02MB117;4:2gr+QrXmms5hImrZgraaTWfbm/ej90tdgAckn+nD/EaY1ZJwCLlvoY5B8e7/nby8oW9ZB7Hp4KaihTgFoLL6IoVBXIj6zFlSzRuzc79or2OZuKZBiXdp7Y/yq1vpKMQhgb3t9gp082t75MSxACik7Kjke2oV31u32A2W6hFxm+1dpC3l8HptZaQ9i9XD8Ot7fMGyKcM2osANabUX4oGn9G/13lmpbveHauJ1lUFQH6GcfEbj4r0LfARVmt/mxLZ6F/YH4OVC4HkduzKkNvEMYl8z9fiqDKvKvnFLMJ8kMwZLrUBsDrDowaIQIUKbVRiyxDeuXQJHcB7/1vb4HaKZsF+Gg65XXuUaG7oU4DWyKJMQZlQ2RWEJV0bhoZd4993wbNLBEgmX41NCn+RD8cqBF767d56OXTxo+OOLriP8B23WW0t2jtAgmxcQZ23Vneuh X-Forefront-PRVS: 0770F75EA9 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6049001)(6009001)(189002)(377454003)(479174004)(24454002)(43544003)(199003)(6116002)(33656002)(189998001)(4001350100001)(42186005)(36756003)(50466002)(87976001)(5007970100001)(86362001)(65816999)(99136001)(59896002)(101416001)(87266999)(5004730100002)(76176999)(40100003)(15975445007)(2950100001)(106356001)(77096005)(54356999)(83506001)(5001960100002)(81156007)(5001770100001)(97736004)(122386002)(105586002)(47776003)(50986999)(5008740100001)(19580395003)(92566002)(80316001)(23746002)(3846002)(65956001)(66066001)(64126003)(65806001)(586003)(230700001)(18886065003);DIR:OUT;SFP:1101;SCL:1;SRVR:AMSPR02MB117;H:[10.7.0.41];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;AMSPR02MB117;23:T7QV8fSX1BD7+/BK36zCJ7JeQe8JYV+W0Nfdnh?= =?Windows-1252?Q?QPvkD8CKxb6/YF5CrtQP839lEcBbr1ObpKOHCWfxUF3YDzyR4YBrHmZ4?= =?Windows-1252?Q?mvHJgljvSMiwnexzCCSaTDmZpixlABvjbyOP0Vh5Vbkf+Dph3XWeLI4A?= =?Windows-1252?Q?1J8uTgyY6RFcXe/b1EWU/2ujNuV6fFdjDNQKxfSb1P9JQGuX5jF47yYX?= =?Windows-1252?Q?SeknOp8ItDkcmeBmFCd4PatA+Wd2x5Z/zh4BAgx8BOT1sNUR78fcYVaQ?= =?Windows-1252?Q?04SkCyXWNmtMrka0zm/e9iOiGymFWj3QOj9a2bqlFkiUY4o/BVIZEMO4?= =?Windows-1252?Q?6LipGOdiRgb0pQxLJGFGZbtFnYkJcpxyM2K+fZvoEovGNU++RwsjKtpe?= =?Windows-1252?Q?8E2OUAT2mLL1sgZk2wKhSwBVy6ax7eQ1vG0qHfrqSqexZ2U1bl6OWjI9?= =?Windows-1252?Q?yQd0v4vr68mT396g12r8zXmE3WJ15UnBkE8riGQn+oyuMDTg2nXGOVpd?= =?Windows-1252?Q?Osazis9U9ib/q27DdAJawgs40RPipt+ueYqYHkIKOIOfpCjMCpWvjOSw?= =?Windows-1252?Q?NAX+v1qyEg+mcMgLc/6cZj9FhJlvC0yA0TZCIx05L0Mpw978cXhN3Lrd?= =?Windows-1252?Q?WoFl8IWXEfrrEVsqoviCzsf1wtMMoVUe7KY4iJ6coOOXfqjsNoDj+UAu?= =?Windows-1252?Q?f3meeZX+RdSV12y5ChRwv64dow5GHoHth2DgCbIGSaCxSngJGcbSdsCj?= =?Windows-1252?Q?8yss8+3++llwW46Vxao0I4o5u/ESJGploCiC/FdWncWfE8Eo/ql/As4l?= =?Windows-1252?Q?vt/Asxz6yZ62Vuw9Gfn0GG0JHEUJ8iVIZ3lhIakiSvdG/BoVE4P9dfQP?= =?Windows-1252?Q?4gTK4b5IYYuFXM5IdSvOLfRQ3Slrt5/osuD7DmgBNw7/ulwGDdvttO1y?= =?Windows-1252?Q?Up31quJOA1niCSFeaLAAgTDCp6ClMYwQOAgTdiVIzuX6idQ3Kfq+tqYd?= =?Windows-1252?Q?YfPlSdrkSSnnHoTzFuvvdhr7FATjiCKbpk9WP3VAwXp6rjgwOCVApK8N?= =?Windows-1252?Q?vcqiDpdAY9UnvGlf+d5SIfpALk32cM63ksth0/oz+Z0yQLzHJDhp0nCE?= =?Windows-1252?Q?R9noNqUQJ5STV6q/5hLM4BQyl7Ei/YJM5j/jMETrsv+II2s1yx+GfCXZ?= =?Windows-1252?Q?ExTo7LpmrZ9o5mTha/0gX4G0uO60N/PSh3Qi2xizf1T8PB/fMHvxhscD?= =?Windows-1252?Q?RmyV6Tg1pXLTVkHOgsl7ivAqtzMICRbtBcP4UJgJ6U46t2yrMWWO0GR5?= =?Windows-1252?Q?brqQ4Qp65R+mAat0Bw7LtYywk5wGWMyMds+CHScHD9qoyC9pHOa5pLgx?= =?Windows-1252?Q?jDvvtW8uZu2wllBzagX5Bbhpf3ORSQPlNVh4h7oVcqeywdiqGm9w00jA?= =?Windows-1252?Q?fThGxESFyOLYGX7eoKbYvkjP+N9MvKzE9SYNJlny5VDzxjQ5KC/IhNeS?= =?Windows-1252?Q?m6FSY=3D?= X-Microsoft-Exchange-Diagnostics: 1;AMSPR02MB117;5:UPI4SUaT5tYUIZ09BMn4Wn476pqjQTxQ/rSe2aruC03aIZKHTrzCGZ15CGsSdnO3fw5fnIRpYv/xOpLw+rvhdpljU0oNem3XpegxnO6L7MbF2x0jGhlS621z6LZctc2hLjGQOERiy7ZxTQ2LDmHbPw==;24:nezCnoT4RdyILd7ZIiVyMEdWXCDl6m3zFzQa55uuOa+52nzDIg/ChzGNeYBa2UbuMzNGfSMJEzYbSEX+7aNryPlx7HLjCURUx1E1rEVzcA4= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Nov 2015 16:19:27.6519 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMSPR02MB117 X-Microsoft-Exchange-Diagnostics: 1;AMSPR02MB086;2:qQcoezTc3z75nZSHXGZ64ppEg8QeLJfIKyW9nvJaqHpPsPaIFGYBFx8KJwxy4LQhThsuxnZUA47dZeL8sM0vm+MAmSOIZ2Lt01KkGsHNno49AkW7i9muaBO0I6Wqzb+0z8NcHrsAXp9oHV449t14sIDERstlM7aeWEsZMXgac6U=;23:bo7Lc4ESyim5gFzndQiC9TzAvshHTEg02PCBz0s4cRvipeiOcbSi5/Kam9SzLZiNYF9+UaRmV5rXaOAu4tbhkE0jv39595naTqN+j8qmkig/Vpt2ZeLMvaQ8DoD7MS3f5d5/cdnyAMPQe+yoU6JFWDJIHORSuryaIi2FUsF4qqzwsR7ccpIpU83W1Y1UkTJY X-OriginatorOrg: ezchip.com Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2063 Lines: 51 On 11/13/2015 09:22 AM, Frederic Weisbecker wrote: > The tick dependency is evaluated on every IRQ. This is a batch of checks > which determine whether it is safe to stop the tick or not. These checks > are often split in many details: posix cpu timers, scheduler, sched clock, > perf events. Each of which are made of smaller details: posix cpu > timer involves checking process wide timers then thread wide timers. Perf > involves checking freq events then more per cpu details. > > Checking these details asynchronously every time we update the full > dynticks state bring avoidable overhead and a messy layout. > > Lets introduce instead tick dependency masks: one for system wide > dependency (unstable sched clock), one for CPU wide dependency (sched, > perf), and task/signal level dependencies. The subsystems are responsible > of setting and clearing their dependency through a set of APIs that will > take care of concurrent dependency mask modifications and kick targets > to restart the relevant CPU tick whenever needed. > > This new dependency engine stays beside the old one until all subsystems > having a tick dependency are converted to it. > > > +void tick_nohz_set_dep_cpu(enum tick_dependency_bit bit, int cpu) > +{ > + unsigned long prev; > + struct tick_sched *ts; > + > + ts = per_cpu_ptr(&tick_cpu_sched, cpu); > + > + prev = fetch_or(&ts->tick_dependency, BIT_MASK(bit)); > + if (!prev) { > + preempt_disable(); > + /* Perf needs local kick that is NMI safe */ > + if (cpu == smp_processor_id()) { > + tick_nohz_full_kick(); > + } else { > + /* Remote irq work not NMI-safe */ > + WARN_ON_ONCE(in_nmi()); Better to say "if (!WARN_ON_ONCE(in_nmi()))" here instead so we don't actually try to kick if we are in an NMI? -- Chris Metcalf, EZChip Semiconductor http://www.ezchip.com -- 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/