From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753440AbcDATnD (ORCPT ); Fri, 1 Apr 2016 15:43:03 -0400 Received: from mail-am1on0063.outbound.protection.outlook.com ([157.56.112.63]:45984 "EHLO emea01-am1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751210AbcDATnA (ORCPT ); Fri, 1 Apr 2016 15:43:00 -0400 Authentication-Results: spf=fail (sender IP is 12.216.194.146) smtp.mailfrom=ezchip.com; mellanox.com; dkim=none (message not signed) header.d=none;mellanox.com; dmarc=fail action=none header.from=mellanox.com; From: Chris Metcalf To: Frederic Weisbecker , Christoph Lameter , Ingo Molnar , Luiz Capitulino , Peter Zijlstra , Rik van Riel , Thomas Gleixner , Viresh Kumar , CC: Chris Metcalf Subject: [PATCH] nohz_full: Make sched_should_stop_tick() more conservative Date: Fri, 1 Apr 2016 15:42:51 -0400 Message-ID: <1459539771-4251-1-git-send-email-cmetcalf@mellanox.com> X-Mailer: git-send-email 2.7.2 X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:12.216.194.146;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(1109001)(1110001)(339900001)(52314003)(199003)(189002)(36756003)(2906002)(50226001)(50466002)(48376002)(6806005)(104016004)(5008740100001)(50986999)(1096002)(4326007)(5001970100001)(107886002)(960300001)(92566002)(19580405001)(19580395003)(106466001)(5001770100001)(33646002)(586003)(1220700001)(86362001)(4001430100002)(229853001)(11100500001)(105606002)(87936001)(5003940100001)(85426001)(42186005)(189998001)(47776003);DIR:OUT;SFP:1101;SCL:1;SRVR:AM4PR05MB1684;H:ld-1.internal.tilera.com;FPR:;SPF:Fail;MLV:sfv;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;DB3FFO11FD017;1:itrUngKbKAZGOTyds57wUml0gDHV3F+4bHC6i6W/3Mg6+zitnTwwX3114AWjvAhRBGqzQNx8Y5znVD7It7wqORO8IAkis01IdGBGskmmYLPtsmSq6fCErWbqDLyLlGOoqA0n3W27+Z+UQnYa0MGTN6Z/wh2fe4AaLIGBNq8goSeRDbzQvHuW11EjDdc42IJ3+thSxR7tBKgsBr++Zs7kDZkqOonj0gTFJar1e637skmMcG0Ojizx4GldvP4v7de3AKmrM9eeaAESXcKvoS1O940vGMc+NewCfI9Vryaq2Yhrz4rOUenpOzcY6N0bh9YvF6z1yOy7k2gO7+DeiNR2PiVOpyrvByIX7wX7a0/Ny5Nbr98yiGbf87GN40XWYCV4fufyu6BCdCBSpi7FMeyHUmrRPobv22yMRW6NBVQSppWDBw84U2VbKVuv4LctAnFPRwOcAMcx1rCL3619QwZkRYBnmtjBYXQHQPujXrz2K0ysoIqnHnJefMl2TSxuHourlYX4Lha+fGxKgw/SY8xJV0YcL48yNL8GdD5WHL/GWtkYn1QPmpGJX+MsnPLWsaUHaZLXWyu6QJSKU0Ti//wzmA== MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: 5b7c911e-6f30-4a72-9ce3-08d35a65d2a3 X-Microsoft-Exchange-Diagnostics: 1;AM4PR05MB1684;2:qiHozLc+A9kwuafSY0S0hRAruxx3MbAKjglJnlAtVO066jT7pNC8jJqPSNjpxY9MB/+u9ACRB3tBId5NIREMn7zAfiJZKCNQtH3n2uUarPHFmVgSj/nCjsZD9XlY642Ke6VtN8M+h29O2m7gUVtBSfsrziHMwXG5Dtwe2pzhLO9U+X6sv2+fk93zcsCbtpcw;3:5W5dlm33iD1iBMRqKyt/0d4j02uLoGqSnzibcJDmaL69k/JcqSNhgw0whFRSdcrxlkleadmh2jTCdF1ZXKbX9FPW6kEE+00Blrg9O34q1R2x+6CImuSo4oN3FLpqQXVZLsDm0esZ3dZet42mfPsHfRXbwtsYYCEP3ExTyHbGmPA57PVz4Ivv6cAmC0D91lghcUR/4RJt8Uqybdd1K4U9gwuL/K8WvNzeg5Qml7XWopU=;25:Kp4VzrMI6PrbvZ1StmHZmWZU9QiAM2QgdjOM0ixQIJ4YDtJdSLOhU1EVXfK8hwVtYX3AGQq94ON5n+vNLGwqIdvA6cHVk3W+QAYUQih2fWakDZRVOtVwR9mL52OJttxpOyUfISzp6bRlxQygkds5lQViYr/knSZhDOOKEisRusHKSl869+clfLBXM6GDA65UVn0/uUUtl7qY807bw2Fl3gUSkS/Z51GnbQLNGT7gKWmFyXvdDsA5IwKwPQZ6R9Gm7Nv+dRAY7z13bRPuqMWtCDZPf+wuleRTXV1pBzkBWYK7umOqWnbGNGI0CpIFUs4uU1Yeulc0Hy8/2jvwNslSFzkq61aIbDx2TMKc9/3BqxU= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AM4PR05MB1684; X-Microsoft-Exchange-Diagnostics: 1;AM4PR05MB1684;20:wJ6FIwIiPqtMdi5up6ux/ScOvdcepvmAlpaF09KOcbWvgITK64kmpD6Vswcmy3KWIHjY+E855MxsG5z7JREw0H13gduxNFPBfQDXVGf+KW0aRA7D+gIhdKyvkZzNzq3PBFErYHVr3z/MvCfxcZdji3q20P9Le0VjBj4WBq30vds/+wHWBxpupA1TQzJN/LD4JU/bw+KELYr9jvEDupEamYQ7g3jQ4tYGF+HJ9yevx6BYQEiJDaltbuJr1olkJa/c5JuhZFIp/bBhJcgFZ9YjPXrZ+8i0IpbrCqCUmcfOIaWMlJx6+InuGrwSQhX9A/EV/4QnnlRrsEXuJByMFWqqsmmaEDwP/mLvDaGcB+bKJ6ZsGn2ukSL6oa4IzkrddvK0F6AHbG2++zA2pAtiwSEN6St637Ln3ymTA0xp4tS1K6kNRqJ3tuwrdfOsb8a3XKuVnjIGth/khfUCMJGwzUc5FQKcQElc3HEzfkcctMa3xvYZJ38dQ8XXV5mTxHDi0i8v X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(13023025)(13018025)(5005006)(13024025)(8121501046)(13017025)(13015025)(10201501046)(3002001);SRVR:AM4PR05MB1684;BCL:0;PCL:0;RULEID:;SRVR:AM4PR05MB1684; X-Microsoft-Exchange-Diagnostics: 1;AM4PR05MB1684;4:AB2bN1RFtKkEbF/yTyEklk8Tyvdc51OUa7ULzhVhzGciRMbPIZWFkkNiVv1VFovZFH0VpgUxHackjTBuACEICAJumZdnoBug8IypGUzQEicvk1p2B1Y8B7I0DjeGPE4BPR4gR3Fa03FEu3b1035rkMQFXO5sO+q28gdpwwyQCcK0edfttTP/fPtLF41RwU6bCjSMZvWgy43Cbn/haaBon7HqhbNk5LPvv3gWb1ZCM2QqQOywRW0N65bEtsTnYKwSxRzUbyUc4Kbxw4tOiDxSS9vDj7tMEHwlxpu8+WXnr5KDD4Rk2Wum42q8sfyZ2h6geOPvqIi0JI4PJ19vaBQM8oKz6PB1MH8dSIPNQ9EDkFX3/UTFaVBzXvYwAFn9DK3sZ6MJ0w/eTCRUdPfFi7DOEMsiLEhO0MwGk5pyK0UFWQ0G73nUeJSXtjcD3zqTIaSk6ktOG2d8gdBIX2IX5tdqbA== X-Forefront-PRVS: 0899B47777 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM4PR05MB1684;23:kyi1DGdhgxXiPm4C4jF8MLslpwCwOeCLLIa5CD7Il?= =?us-ascii?Q?AUEMqi1Ygg/eLAyV7DFAE4gGDcJr/Cz3IzcIm0+6hW/kQbGmxBF5ZaiTClOO?= =?us-ascii?Q?HZ4ZA0wH9sKkw+BLO4Ul5EySOpiAKN3sq8eJ4VoabvngkWd1lApbs8vmf23e?= =?us-ascii?Q?ON04+FXazD7L7mDoYd9FePH/xa5Mke+yCz/BhzGCVfB6L6riojMGFlcqtSkn?= =?us-ascii?Q?pAQeivhsGs4YYi0pKmxg5s8TvrEMBaqUq+tykpgEd4L5Y++6fgGBnze0U0t1?= =?us-ascii?Q?MePyp5wdeLG4Or2jARjRtAefT8B27xpTonS3LV+GyqXXtRtWVqXFMDYrViZV?= =?us-ascii?Q?bn+B5a99yJS5Eytqd5W1qZWOdRP3dP0ZatTaguIwzZoDOQrJUeYlk0+pzIzF?= =?us-ascii?Q?Jh2LTLfQVmae1+mH99G1I6GasE3QSg1+yrlo21+tPPOzJXUxK0unkAEjHnwS?= =?us-ascii?Q?EHyAN5DSD6pOX+WScvA2YwqLC7nr5YqWYcAJC2WJ4rkjBY5W3nGubhQwJJCl?= =?us-ascii?Q?x5rHTMsRq7CUqzvomSvelG7G7xanZcVm07rdbjL6yNoDVJBUsiR6jFndsAGz?= =?us-ascii?Q?0w/+uQ/4/ZNVT1k6CsPPwQoPBLLunMN0oZMuEXb//J42cUCFtlUm+lw/VIZx?= =?us-ascii?Q?X99n5rBuJTaSjU0rpD5BGa5rqpLdLuSSicmOOFMfOKETjWvozo+0ZBJz6Wl+?= =?us-ascii?Q?pHmPU29Jf+hoVR0vaovSUW9Fwz4WmSJdutiJoca/YLnH+AEs4CSi/u9cfQJQ?= =?us-ascii?Q?goAyAGp1sotLW4E06FzbLLiMpZT03dZY35Rv0ggnJRZQPPZjMZ8XLiUCThOX?= =?us-ascii?Q?890MFBjPUy7F0HOr09haCLiSHBCUmYbVybkmaxpK2THW/ySNZEWwa7ZHPgle?= =?us-ascii?Q?9d/vDa0eIJ+G74d7AG9BPJKlYdrpTydrHF1VYfMTTzDBbFRt6sUDazVMw+2o?= =?us-ascii?Q?iK6qO3tSUi9EoaaEHpa9xr1Zu2QVLuM6P88ara7mmHQnRSZgaJZvVGaxaD2/?= =?us-ascii?Q?B1v9H3XjNnnG3DD2/C4JaYcOYXFeNyreVwqWO9ZCyxKIXyDQa3Q96bohMuwx?= =?us-ascii?Q?fIiBzMrq3WvusvCuEEj/rixkZUtU8g7D+5PfQ4GCrn/8thX2A=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;AM4PR05MB1684;5:v1n1QKM7I19B7jiHTVYaKlEHfsRIc41FLPzsUDhRigwl5V1TJb+E3p+y/eFZROE8dY4knthSm8O1wd0gW7dkUBOTUGCj23RLjxhsghOoPGP71XTVjKwxy1BLBj2VFPFco34D2cQfQz/wQ1RkbDv3AQ==;24:gCOI14jBLckDD4EuXNxTKvWPsu+QSQ/j4bGzMhIpLdlNUN2Asaq+4stFFK7Wzme1GeJQ/nXpJ2C+Nrh6NQe3Itrpz+fERMJ4ybOViU+guKY= X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2016 19:42:55.7450 (UTC) X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=a652971c-7d2e-4d9b-a6a4-d149256f461b;Ip=[12.216.194.146];Helo=[ld-1.internal.tilera.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR05MB1684 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On arm64, when calling enqueue_task_fair() from migration_cpu_stop(), we find the nr_running value updated by add_nr_running(), but the cfs.nr_running value has not always yet been updated. Accordingly, the sched_can_stop_tick() false returns true when we are migrating a second task onto a core. Correct this by using rq->nr_running instead of rq->cfs.nr_running. This should always be more conservative, and reverts the test to the form it had before commit 76d92ac305f2 ("sched: Migrate sched to use new tick dependency mask model"). Signed-off-by: Chris Metcalf --- I found this bug because I had a program running in nohz_full on a core, and from a different core I called sched_setaffinity() to force that task onto the nohz_full core, but I did not end up with a kick to the nohz_full core, so tick-based scheduling did not start. This is probably bad enough that we should fix it for 4.6. Strangely, for some reason, the existing code worked correctly for me for tilegx, but not for arm64. I see that the enqueue_task_fair() code calls enqueue_entity(), which calls account_entity_enqueue() to adjust cfs.nr_running. That seemed to happen on tilegx, but not arm64. Perhaps there is some difference in how the sched_entity stuff is done, but frankly that took me a little deeper into the CFS stuff than I was willing to dive in this moment. I could also argue that sched/core.c shouldn't have a lot of CFS stuff in it anyway, and if we view the FIFO/RR stuff as handling the real special cases in sched_can_stop_tick() anyway, then just checking the core nr_running feels like the right thing to do regardless. kernel/sched/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 00649f7ad567..1737d63c65fa 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -599,7 +599,7 @@ bool sched_can_stop_tick(struct rq *rq) } /* Normal multitasking need periodic preemption checks */ - if (rq->cfs.nr_running > 1) + if (rq->nr_running > 1) return false; return true; -- 2.7.2