Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754162AbbKXQTv (ORCPT ); Tue, 24 Nov 2015 11:19:51 -0500 Received: from mail-am1on0097.outbound.protection.outlook.com ([157.56.112.97]:38836 "EHLO emea01-am1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753704AbbKXQTt (ORCPT ); Tue, 24 Nov 2015 11:19:49 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=cmetcalf@ezchip.com; Subject: Re: [PATCH 3/7] perf: Migrate perf to use new tick dependency mask model To: Frederic Weisbecker , LKML References: <1447424529-13671-1-git-send-email-fweisbec@gmail.com> <1447424529-13671-4-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: <56548E15.5050004@ezchip.com> Date: Tue, 24 Nov 2015 11:19:33 -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-4-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: DM2PR11CA0034.namprd11.prod.outlook.com (25.160.91.44) To AMSPR02MB119.eurprd02.prod.outlook.com (10.242.92.150) X-Microsoft-Exchange-Diagnostics: 1;AMSPR02MB119;2:3yb4N3PcqhhB69rfI0nk6w617O4QBL2YNxS0YsUvdjwwEFRcUb/+Ek9MP5OMv7JzpPfs+EIhTF6ejOho2nYziJJ5bAUzgBtUZT/3quJbBbFs1QhRo6gH3tAujBWqQ0dHu/Y9hbGzreppi4G3ncNupw==;3:+rRig2gdWwn28VuKKqiVEmana6Gdukzx4CM3kAszAMkjCi/4mZeL4fzLK4vlajXaLaw8Zkdw5tjf2ZKBtXLHIC0klfBKnhMu3CEsO67yz2QU93YzEoYdBziMCrbC8Q0C;25:QqpCLWsgIirW28vzXe4taz9RBPOaSFxRrm31Z8YCd+AIvVLM1eJ8tdoEvETGjES7E5TGt4RyoDZ5zRN+XyyWpFWi7LPIBksOVhKwijNPAolO8bV3L+0E6Is5E1EdRt2jR/2rpV6LbslJJR1+QNzSekVDi6KQ9dEzPojRZE4RYhILjkz+jlSqonSurb1gtisN9uFS4dCM24Y6TmZO+TMcFuDm8TO1xxkpJTXhIFzDEwsMy0JTTvf3WslPQY4u10wIk7c0cIPFlkVsyWJ/9VvYag==;20:I/11eoARb3j3zQAufLsifmlaFyLso4v2b9cw+ca8qVqlmkp+rd9w14nklohgyh5ANqrdYDOKMeeatzgXkyleQBAJgN8NjblQupaeBGHGKFLCMyJ9ZLYThjDhQcmPU2ZCmamvdYB6/Rr8N/k9k7JEzVgqNHUYgtyR/r1d3AGhzAo= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AMSPR02MB119; 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:AMSPR02MB119;BCL:0;PCL:0;RULEID:;SRVR:AMSPR02MB119; X-Microsoft-Exchange-Diagnostics: 1;AMSPR02MB119;4:kz7tvMLjo8VK++man6EbHK89oAFALmAxWPmPU1TnSvg8TWvFGcQe4d5BMlwzb156V1bxzvjO0Ils+9CKDW3+4COWnerZtoeAFSZ5WbOh94MJA5rSIIHR6rv7VpnAhs3Y3Ilxcn8i3AHZ3Bld1780m8EASsU7B/iWekoRNr7DJZA8vKjiLJra59cYRIA4xYF06iFv5PcNJkAhrs3r0rLAhFh4CK6PBJGSFHRsjGDK8tpUMsjQ1taxGcqdBqzq0a6BYzYV9UwiG6tuK2LtjaDqRH+7TL3DGQ/Do75OPSfAYS5xmMCm8S91EQoeQzxC7Av8D07m50kNprcZorQKOfg02wBOLhxe3x3rV3LIKi0AnY7KY0PLA17Diu0dChIn+L+iuvTVnkUVlta+Kq2yrIa5JGzIZ94XrzslQyQU39PlYqi3iK7DkMR8rrUXbLuVCWzz X-Forefront-PRVS: 0770F75EA9 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6049001)(6009001)(189002)(24454002)(377454003)(479174004)(199003)(5004730100002)(36756003)(5001960100002)(23746002)(64126003)(33656002)(65816999)(83506001)(5008740100001)(59896002)(101416001)(105586002)(80316001)(87266999)(5001770100001)(106356001)(189998001)(54356999)(76176999)(97736004)(92566002)(4001350100001)(86362001)(81156007)(19580395003)(50466002)(40100003)(586003)(50986999)(65806001)(66066001)(65956001)(230700001)(15975445007)(47776003)(99136001)(2950100001)(42186005)(3846002)(6116002)(77096005)(87976001)(122386002)(5007970100001)(18886065003);DIR:OUT;SFP:1101;SCL:1;SRVR:AMSPR02MB119;H:[10.7.0.41];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;AMSPR02MB119;23:1WEyHpFenk4fcGgyWPHnA+7stuwlr8qylFyWCH?= =?Windows-1252?Q?9ZcvvdmTb8gAqvHcWUKELTPz/quyWbZEaMn5xdGRzduXmNsmSNJcrNdv?= =?Windows-1252?Q?py7gE6lTsbx9DgOjNKDzrXQDvUlBdQhweJLVNI8Yomu00t4lSFW+3Q+7?= =?Windows-1252?Q?XQkxE79MVJrNjbzHBiF+r0c8diCBPa8qYnBq3Roxtx5MigXY+MDfSVmU?= =?Windows-1252?Q?RZKMHWwtCoTpbr7WqAoU44yUa5nrITCcNm5F0x7zem35CfooJFRgDO/T?= =?Windows-1252?Q?C3m9nyXqHOmIr8WZJjnvEIjYqwpI45En0D1huPm0gUut5xivqYwBCSX+?= =?Windows-1252?Q?R6hmush2+1grVPFB6s3azu55hterk1+PGYrH3v4pm4btB1N1Qm5SsWzT?= =?Windows-1252?Q?I+w1tYk1VXxAaRb0wB6v+enJ0H8XcMqcoWrNa2Oy7pXrs79LdsB/8MXd?= =?Windows-1252?Q?FnjW9uw0qUyfo1Ls6qxA7rRWP/WihJXn2wgY220tMPAVS/iySi512bCY?= =?Windows-1252?Q?6D4/mnv/3qACZGdLlCLrfAvpLhU9S4t51jsHBxXUxtc8A3XCE6i2Jfo5?= =?Windows-1252?Q?S4aQa2mtwUtqHncdXuyeB8x4e3n+79tcJDGTUa2J8ZHUsUCsWqykoyWl?= =?Windows-1252?Q?AyyqE+TniwFCvBYrtvI2BcRMkWQG/lun44j+V3FPnKqsKfOV8eRcmL8t?= =?Windows-1252?Q?XoALI0RsdDOtX7ys/VUPZHHwv7mAOQVEJr9p1Jv2XNg8YFtuhakXceQ/?= =?Windows-1252?Q?KxijILNQLdSqNbH9bUmnCYz6CG++selzxY/3/6qs1BZFCQ65OChhLdZB?= =?Windows-1252?Q?MPq/fgpCf+O3kw0g7nyFMptiD3mYjEZpvwDuwGQEIPGDTD78c2cyRJvg?= =?Windows-1252?Q?YB1nEG6fH5maeBdODEZ0L4eq3KLvE1RKoLPYkX2gMJlWKU68y+jIe/j5?= =?Windows-1252?Q?Bcgmmvfw3gOVZg4PafLa7OZ7Kshbfoj/sDnG1bFYsPfMWCeaClw4BN+Y?= =?Windows-1252?Q?xpTLHtwdvRLPLGx/Fgbj4UhbgcL7BlJwRMxg3BmHvm7Ga/gdKj4g+eVu?= =?Windows-1252?Q?2TExDhe4DOy4A6jok68oUCqES9SAzM7NqpQj+Yw8r4yh+9nQZRgQOfLk?= =?Windows-1252?Q?5Z9apRSsaFPrtZvCsIIBLYEZZ50j+4ahi96TcCAjYQZbOnfSF1BV1Puw?= =?Windows-1252?Q?Sgm8urVyCezCJKJ/iOmPxsL/Ro4tt/q5CQiv45zEO2yosmMoc8k+GTHc?= =?Windows-1252?Q?d+UZFY7A8NrAlq1G3V9slWm5xBcFhQUQw0elPHSEiXQfURXvAOO22KMl?= =?Windows-1252?Q?VUMcRaQLHahnBNsrX2uiP22iVRxXeWDwmfy0yAUcVyuA5HL8nMfn3ZFG?= =?Windows-1252?Q?ZDHzD1Akc6pozJ6WbgMEHt1lDT1xKXtgBsLAnTwczHpFAEVvKt89M5Gu?= =?Windows-1252?Q?bClod1z37XOyhdMRiZ9z9B9NeNIGO+nRS78PCpTw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;AMSPR02MB119;5:o7qSEQJ6QZ1GDTsQzES7IxTi5FWNEQTgeU6q4Dib2Tfobl5poHKQWOPTdG8IeNVjMHgiqCxa6C//zucTL2S+d6pGXFb31vV7XHsD2plfDOwnG7/YitPn9iOcdZHS6upKjiUZwLLOKP1HoRRcGOztpQ==;24:ReBB/HuLUsas2IauHTpt55cfKamPp2SNAiUXSRkAShVbq7f8Q+G3M6D501rb/ZgzBnLPHE2unJcwJvZKWcSINZ8iuoYS9YLkftN94nLGRmA= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ezchip.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Nov 2015 16:19:45.4442 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMSPR02MB119 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2215 Lines: 61 On 11/13/2015 09:22 AM, Frederic Weisbecker wrote: > Instead of providing asynchronous checks for the nohz subsystem to verify > perf event tick dependency, migrate perf to the new mask. > > Perf needs the tick for two situations: > > 1) Freq events. We could set the tick dependency when those are > installed on a CPU context. But setting a global dependency on top of > the global freq events accounting is much easier. If people want that > to be optimized, we can still refine that on the per-CPU tick dependency > level. This patch dooesn't change the current behaviour anyway. > > 2) Throttled events: this is a per-cpu dependency. > > > @@ -3540,8 +3530,10 @@ static void unaccount_event(struct perf_event *event) > atomic_dec(&nr_comm_events); > if (event->attr.task) > atomic_dec(&nr_task_events); > - if (event->attr.freq) > - atomic_dec(&nr_freq_events); > + if (event->attr.freq) { > + if (atomic_dec_and_test(&nr_freq_events)) > + tick_nohz_clear_dep(TICK_PERF_EVENTS_BIT); > + } > if (event->attr.context_switch) { > static_key_slow_dec_deferred(&perf_sched_events); > atomic_dec(&nr_switch_events); > > @@ -7695,7 +7687,7 @@ static void account_event(struct perf_event *event) > atomic_inc(&nr_task_events); > if (event->attr.freq) { > if (atomic_inc_return(&nr_freq_events) == 1) > - tick_nohz_full_kick_all(); > + tick_nohz_set_dep(TICK_PERF_EVENTS_BIT); > } > if (event->attr.context_switch) { > atomic_inc(&nr_switch_events); It would be helpful to have a comment explaining why these two can't race with each other, e.g. this race: [cpu 1] atomic_dec_and_test [cpu 2] atomic_inc_return [cpu 2] tick_nohz_set_dep() [cpu 1] tick_nohz_clear_dep() Or perhaps this is a true race condition possibility? I think we're OK for the sched cases since they're protected under the rq lock, I think. I'm not sure about the POSIX cpu timers. -- 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/