From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751724AbcBLVhO (ORCPT ); Fri, 12 Feb 2016 16:37:14 -0500 Received: from mail-bn1on0138.outbound.protection.outlook.com ([157.56.110.138]:2368 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751680AbcBLVhH (ORCPT ); Fri, 12 Feb 2016 16:37:07 -0500 Authentication-Results: infradead.org; dkim=none (message not signed) header.d=none;infradead.org; dmarc=none action=none header.from=hpe.com; Message-ID: <56BE4D15.4000002@hpe.com> Date: Fri, 12 Feb 2016 16:22:29 -0500 From: Waiman Long User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.12) Gecko/20130109 Thunderbird/10.0.12 MIME-Version: 1.0 To: Peter Zijlstra CC: Ingo Molnar , , Linus Torvalds , Ding Tianhong , Jason Low , Davidlohr Bueso , "Paul E. McKenney" , Thomas Gleixner , Will Deacon , Tim Chen , Waiman Long Subject: Re: [PATCH v2 4/4] sched/fair: Abort wakeup when task is no longer in a sleeping state References: <1455298335-53229-1-git-send-email-Waiman.Long@hpe.com> <1455298335-53229-5-git-send-email-Waiman.Long@hpe.com> <20160212201845.GX6357@twins.programming.kicks-ass.net> In-Reply-To: <20160212201845.GX6357@twins.programming.kicks-ass.net> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [72.71.243.73] X-ClientProxiedBy: SN1PR17CA0026.namprd17.prod.outlook.com (25.169.33.164) To AT5PR84MB0129.NAMPRD84.PROD.OUTLOOK.COM (25.162.137.23) X-Microsoft-Exchange-Diagnostics: 1;AT5PR84MB0129;2:zImZjZa6DVnfXi8Hgq6ubaaJxdPZoisvYIAXvoFoCfUeBZH2yB7/lVmRl+RTg2cTP4+BahQpob8yjdTpkMieI9kyy07tKuMefNXoQhWeZzPwX63h4ToWLsFnAhIucc2VhZi5h8yOW2CvdKXPVckqdQ==;3:F/pSbaIWAAuvVwfWMrsPoEeFu3CERersfLoIpJecrJeU00DpsPGs0uv1MfadjAlHH4BIRH4gsh8xjPoXJ91rz8kDmfgQItgmKL+fmJsSpK8menh4ULjdeURcMfUnlR8/;25:ugCKrQhhCWGss0CZYX9Jd6ZZUV7ipuv1ozmY8UA1qTH3FTBWadEayTtPOIFD6mDPJnYyMF+6BiWu1MbBjOn/lQdFY+x6J1aidmU161HsUHVaZayQFOOoA0SoYeR/yNi6aowgfhnKKzB6QBWTJZdGwZvJuxPCcbbrHQXir8sgLQTPh3IibE+XdnuJAKdY9NhKdT///B0nllKAJx+QKYInkPkNR9mNlcMbIB6c6+26lREFWqbnmTcpbsOBIhX5S6Dg3UMT12NOVm8MvlxeEhpkgF0KuI0oqrwdZCvTH2gAfMDXv1F6cTxOwI8p0793akB3;20:8k0Ld9U9YtWrhcbJ1gKH76FHN03ZOYxyy1gtM6WgCq8LMYTDtWyTS+XLr+Dz+960xwWHdETrB1MpJ4tLf03nVIvjjVB+2LiKfrKKmg+LN3dmBsMkDRckdX0oUn1+aHEFJkWOjYsd2fa9u1u2EGnIjEh5MKBvWy+5PRR43G7Nf/NS03zrOSHNGT1ppiFOjzOwzaznhr9iWDoatotssbGgFK+pCzNVqitv7A2VLWeIHxJaEh0FWpHf8lBrZx1hbcop X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AT5PR84MB0129; X-MS-Office365-Filtering-Correlation-Id: 72b16374-6ba7-4cdc-1b3a-08d333f2a21a X-LD-Processed: 105b2061-b669-4b31-92ac-24d304d195dc,ExtAddr X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(73583498263828); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001);SRVR:AT5PR84MB0129;BCL:0;PCL:0;RULEID:;SRVR:AT5PR84MB0129; X-Microsoft-Exchange-Diagnostics: 1;AT5PR84MB0129;4:Ue8+ZW/cLuSIHV22PixraLL8e2tMLavUtfrIv8jFUXcOFkI/Dd0KRIM/PdwLR0KH2H03EB54snxPTI1mvxm4R1TWsWb37wArHEcDxfsNXmoTVLorCuw/wl12NhPT1RxXgBS/Dru9hOxZxJaS0LL0qnsJ0TpBpZDpaoMqmvwhgTyt7ZcW1eyr7/0Mhbr4gTCQqvIQ+oOGqh3RbA5wqInzDOOAgThC4vz2GD6BVewgd1Xs+0wvt2jh+KhZjVcFCG2XP8uqEn6JA9/9lsloIduI4wNEAc/OtC3fiAC2/Re3TkoYHADay4BsBK5wQ944N0j/up96u3ojblSLebS87gGn3a9DMlIZ2/Gu9vh1dUQhHVYybfvGgQVNpbxO/JxKSbDpEVcgnE7C8SzkMA/MO66GPxPy/2QX05cQSYdduTX5fYo= X-Forefront-PRVS: 0850800A29 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6049001)(6009001)(24454002)(479174004)(377454003)(5001960100002)(230700001)(1096002)(33656002)(4001350100001)(110136002)(92566002)(117156001)(40100003)(23756003)(65816999)(189998001)(77096005)(2950100001)(4326007)(87976001)(36756003)(5004730100002)(2906002)(5008740100001)(80316001)(19580405001)(50466002)(86362001)(19580395003)(76176999)(586003)(83506001)(54356999)(66066001)(42186005)(47776003)(3846002)(87266999)(65956001)(50986999)(6116002)(7059030);DIR:OUT;SFP:1102;SCL:1;SRVR:AT5PR84MB0129;H:[192.168.142.185];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?iso-8859-1?Q?1;AT5PR84MB0129;23:C8Chx+9pdIHGBN9Ht96D9NKI8CpcR86cNceAsI6?= =?iso-8859-1?Q?GsQrpu93n4RUFEqRdIinNZkSymDdfVGfpQQgow47fYi/4L+WrRjJ1Bzg/J?= =?iso-8859-1?Q?AEFww7k/b/i+IQGjwAqgqYRDre7eiF9S2A3I63eeoj3YNwqQgSwMPUatmK?= =?iso-8859-1?Q?29zDyCO1qs8z4a++Q7bGH+bxqp19wjQ05Cv2YP6BcpvHWNm5Wsze9YWAdk?= =?iso-8859-1?Q?1uFIzuiU27r+KppRPjWPfRmymonnO7L7+nuhOEYerKspjTUjZIHWOC/qqO?= =?iso-8859-1?Q?Lr5ow8AF62QgSegIhBMIcA/huszueCx7mPXmJ/VhitrdLl/WsHrBvp+l5f?= =?iso-8859-1?Q?CxQCKld3m2rSNh8hofucFeNSGReHOCXBN0gUpSs6BLOULmvz3jgptARqBw?= =?iso-8859-1?Q?3/cg8dvYIfZiMXTkty+q5o/7LIsgMwnor6tRBSIvBS26FTThO3TYXnQGsN?= =?iso-8859-1?Q?C0ZR6/8pzjYqgedz68/NAzh9dTfSyFctQMjaUx//G/iAZVgP5RnSXVqpSN?= =?iso-8859-1?Q?YkpcyU2LYGZD6/Ewldco223BmvUepyAw0LT3K8an/yiTt50GczFh6tF/+z?= =?iso-8859-1?Q?gSx2JJDTJqNsk8vFMcjm3BmJg08/NjCjlRZhy/gsJbpMMx6dfcHtsHedZW?= =?iso-8859-1?Q?jOam0fLx8IWau2CWuXO30XMmxgKb/NAvIFICb4BGxvWOcL9kcoXf/YH3jA?= =?iso-8859-1?Q?ZtxrqzNo2OLCyBQBWYPtcrpSo5pNMMnCAq46m2RWUdc86f+gi7RxvFiwDI?= =?iso-8859-1?Q?4yJtsGD8oMb+v5hdt5rOudAuPxHX0q46tj9yQDuf+ldG6gg6nfj/eZQKsL?= =?iso-8859-1?Q?UNRaXLNUpnLs5WnlaDyH1FT+28Zz/Vw6/xSRfaKbj7utNO2dCcNChJ+Afd?= =?iso-8859-1?Q?6q1cAmqDyOKjH4gYWNXcEh+QkgAlG2I9lPjDsaVeGFm5/10avgeb4Ly1s4?= =?iso-8859-1?Q?TRAXMxxEgxvPJlnTdxuRmNfuVBP5RKx2hRrTA8kxLiLPDaxhoBVFIJqiuC?= =?iso-8859-1?Q?SxgTriv7+cVUa9wecIkbHQvd4o+QJiBSsv31gHdMrGqp/KoBQtthWB96o7?= =?iso-8859-1?Q?pUUxyIwjHCd8vhZkDbjc9/h3ZGredSEV7b1OgGOg7ifX/emTJhvuT46uGN?= =?iso-8859-1?Q?OAKEnU2YSw67UHjGiR1r3bBPdkE0eiIrR0++THGJSzKR91FEjZ25KKMH20?= =?iso-8859-1?Q?Uue403WPf4b?= X-Microsoft-Exchange-Diagnostics: 1;AT5PR84MB0129;5:frZWPgMYRGV+a5077mgubXouXdELgtAeA0vjtbeoVjywZbywt7ix6NofYh4oJGuFb38qAiZ33i/phtPYNl66Nz2O3tqZARrbHfU7iPoMphkxHnZwnMilzmG1nsyhHBc1jPXbhmU7SuKadw1C79k10Q==;24:Mp73ALPlFv8wcOjDNyuArs0IT4mLIgaGjlODdggQwBSWr1vkYF89AGW2nImnZu9vb2EccV5nebx/CPVCij6fl4NJXU3Qnfz6tS1qFoRLSKw= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: hpe.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Feb 2016 21:22:37.1906 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AT5PR84MB0129 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 02/12/2016 03:18 PM, Peter Zijlstra wrote: > On Fri, Feb 12, 2016 at 12:32:15PM -0500, Waiman Long wrote: >> When a task prepares to sleep and then aborts it somehow, there is >> a small chance that a waker may be spinning on the on_cpu flag of >> that task waiting for the flag to turn off before doing the wakeup >> operation. It may keep on spinning for a long time until that task >> actually sleeps leading to spurious wakeup. >> >> This patch adds code to detect the change in task state and abort >> the wakeup operation, when appropriate, to free up the waker's cpu >> to do other useful works. >> >> Signed-off-by: Waiman Long >> --- >> kernel/sched/core.c | 9 ++++++++- >> 1 files changed, 8 insertions(+), 1 deletions(-) >> >> diff --git a/kernel/sched/core.c b/kernel/sched/core.c >> index 7e548bd..e4b6e84 100644 >> --- a/kernel/sched/core.c >> +++ b/kernel/sched/core.c >> @@ -2075,8 +2075,15 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags) >> * >> * This ensures that tasks getting woken will be fully ordered against >> * their previous state and preserve Program Order. >> + * >> + * If the owning cpu decides not to sleep after all by changing back >> + * its task state, we can return immediately. >> */ >> - smp_cond_acquire(!p->on_cpu); >> + smp_cond_acquire(!p->on_cpu || !(p->state& state)); >> + if (!(p->state& state)) { >> + success = 0; >> + goto out; >> + } > This doesn't make sense, if we managed to get here, p->on_rq must be > false, which means the other side is already in the middle of > schedule(). Yes, you are right. It is my bad that I miss the on_rq check earlier. Just scrap the last patch. Sorry for that:-[ Longman