From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752780AbcBLStf (ORCPT ); Fri, 12 Feb 2016 13:49:35 -0500 Received: from mail-bn1bon0130.outbound.protection.outlook.com ([157.56.111.130]:47309 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752672AbcBLStU (ORCPT ); Fri, 12 Feb 2016 13:49:20 -0500 Authentication-Results: huawei.com; dkim=none (message not signed) header.d=none;huawei.com; dmarc=none action=none header.from=hpe.com; Message-ID: <56BE257D.4020608@hpe.com> Date: Fri, 12 Feb 2016 13:33:33 -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: Ding Tianhong CC: Davidlohr Bueso , Peter Zijlstra , Jason Low , Ingo Molnar , "linux-kernel@vger.kernel.org" , Linus Torvalds , "Paul E. McKenney" , Thomas Gleixner , Will Deacon , Tim Chen , Waiman Long Subject: Re: [PATCH] locking/mutex: Avoid spinner vs waiter starvation References: <20160122105312.GQ6357@twins.programming.kicks-ass.net> <20160122105652.GE6375@twins.programming.kicks-ass.net> <20160122110653.GF6375@twins.programming.kicks-ass.net> <56A235DC.2060900@hpe.com> <56A48566.9040206@huawei.com> <20160129095347.GA6356@twins.programming.kicks-ass.net> <56AC0F74.2040808@huawei.com> <20160201100824.GO6357@twins.programming.kicks-ass.net> <20160202211906.GD16147@linux-uzut.site> <56B1A7D8.4050205@huawei.com> <20160203192458.GA26475@linux-uzut.site> <56B2A749.8080400@huawei.com> In-Reply-To: <56B2A749.8080400@huawei.com> Content-Type: multipart/mixed; boundary="------------080306060403070506070305" X-Originating-IP: [72.71.243.73] X-ClientProxiedBy: SN1PR0701CA0032.namprd07.prod.outlook.com (25.162.96.42) To AT5PR84MB0132.NAMPRD84.PROD.OUTLOOK.COM (25.162.137.26) X-Microsoft-Exchange-Diagnostics: 1;AT5PR84MB0132;2:8+hOU+3/fSKMAgRgOctMlsEM3t0LHQR23HjfS/6MV9wKupo8HgUcGuN8X9/twkeIToQIq74Pi1HZGnui4PMSgR0EAxhvccqkvsm0BFpuSsx8qg+KAar6sTQQLDsWHGStzt4R62eFKG8FbVhLVl84Ug==;3:PI5Z3+nBwLEKSd0oBlhVpHeUjENbVapFAp5y0ff5+gz9ZGEQGHt3SVBV9ajaXtSjZOLZD7WNx0rTXuRSytgvB4nAMK0iw2FbOOBjS8/q0kf3NJDjdmf0ysSslIk/SEEX;25:YmjEhBOyB2D5QeR2zUwnuYpl+f0tUvXTWlZdGNT7DYWtLeLSKsiSSPo5mEeHbhiebSgeh16lkgYZVo360yVjxAQqVaQ83K8zfyahx5SSdbpf6gnAkW663GixKtgEHMoHq11uqYR97QVizhQK3O2Q7zxaLG7zhTIj8EpLGfHebOTgf8nMrcCeA44xGvBlHCtmDpZmI6ZV3u5uYzzjcoNRSTCSu5+sRNaCvywW9FC/FT23EnMEIrI31zSidCW6MehiD6F+yaKAZxu5JKSgexHAWtHm5yhqbjvbYlCWJgZpTADI40COR0udhwGp5rAc3alF;20:fedxvLA8e4nnRjUlJx8u2qmtzEav3jjdv+OI3BGicnyWzwyOqdAevW/fZ4Aq+frCiZapiPOQ24j8+WyeQZhXUKAmnZ8qCvkV5EuO7CNoBSp0rocRljs+iACEBLN7J7bThMrvWmGE7kc7SpEvaOxV3YCDxfSaEcspioFnfPnR0yIKbuUTcV8PeaZnr4J6xWAA8/aPYK6gpxpwls9OtTAsHA4UOIo8Rm4eWdlxvdLla1jYtH8TBvZ45dhh4TWfERcJ X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AT5PR84MB0132; X-MS-Office365-Filtering-Correlation-Id: 8cf03f77-8839-47dd-7046-08d333db0795 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(102415293)(102615271)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001);SRVR:AT5PR84MB0132;BCL:0;PCL:0;RULEID:;SRVR:AT5PR84MB0132; X-Microsoft-Exchange-Diagnostics: 1;AT5PR84MB0132;4:SIG+ABaCiFQsgw3blogHRjFrDd+nltFxyOOnzDLjBAqBpau0x9B+YuqvUp5tjL9m98h0avexy3aKfXlt4ckDFCY8/KWJr2LtDjB/eri9Rxx2mKOttO18AS+yYjRC8LZIJ58sdHLZ9WcGuoWYDF+DCKKsvwzILDLdgWPRzpa5LcR9YUwgGT2eJQbNX/E9OGujdLkef8m4iuHjCN+LEDKZR2W5pE4aRfpHHvIdsZRBVQyQdsRoLDwxwUPDyXVa7oZlpQp9myZiPNVhMpWjx6yYac6y6Z7QiGVpOSRy5NOwQdtDexuuChAOfckwN+IQy+3ATqi6l6TdzxrRVaUKgB4z+ikmlDEjfwYYYiIH/M8dfN3PDljlvwIxG4oTELDckE3tyFNCkuz5Fw+48r4SNEZK2u3lXWjAz6GOems6szzgn4I= X-Forefront-PRVS: 0850800A29 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(6049001)(377454003)(164054003)(479174004)(24454002)(54356999)(4326007)(50986999)(77096005)(76176999)(2906002)(65816999)(568964002)(86362001)(512874002)(33656002)(42186005)(2950100001)(83506001)(84326002)(36756003)(59896002)(87976001)(66066001)(117156001)(4610100001)(19580395003)(6116002)(3846002)(93886004)(4001350100001)(65806001)(586003)(65956001)(5001960100002)(40100003)(110136002)(270700001)(2476003)(189998001)(5008740100001)(1096002)(5004730100002)(92566002)(5890100001)(1560700002)(7059030);DIR:OUT;SFP:1102;SCL:1;SRVR:AT5PR84MB0132;H:[192.168.142.185];FPR:;SPF:None;MLV:sfv;LANG:; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AT5PR84MB0132;23:vsOvyFbJdvJSNRZClyBSErhzac/5N39+aR4u9JEuS?= =?us-ascii?Q?aPn2N2q6QDbXvWr24lh1Mjg/ZBHuiQOZGIB/STItn77SFveJZ7kh3DwToBr8?= =?us-ascii?Q?3uM51uDdluQSW4Bs3cUlz+c6io82EuOsSaEmX+kvSOKzpvG9Ub8BHD00SjQw?= =?us-ascii?Q?Uyg8wdlIqqTNHFAbfXAQQggKfVIHG9wF+nZZkf083b2D6AhIOini+2oABGwf?= =?us-ascii?Q?sXzKl2LNiongKyocuMuW0in/aUiae44jw1e0Ieb0nCz6pz8brBoJs4x/LGSN?= =?us-ascii?Q?EUQHAIiUzZkJaB1y0vxFFf+bwvAUEx1M4/qDnLc8goupPALiLmdcV8yHtVzk?= =?us-ascii?Q?O4c88yqyE8Wdax93CiOBjgZsJBO3QKJwgv+u/phYPExJaa/kxasWCSwCZe5o?= =?us-ascii?Q?RQUiTF97ng8iOgkO4zimJ1aaCRCa7RPCIMvIcLHKkgFHXfUGWuFN1ScwEJ2G?= =?us-ascii?Q?slhG2wlRI+VjDchquey53Or6QaPHqWL7fVu9iXhWwln0Mx6/Ibhs5KYxmVEL?= =?us-ascii?Q?vhpyVJGKBa1p8uSvsfOwdhUNMFGbcWwl37ATjOZc5t0rM9zdG11eX4u7L1nD?= =?us-ascii?Q?y2lOklCEKk4Td4UON3htRbNM2wOtybU92Ygow74F0qLieB8Gu5SbCKMKFAB9?= =?us-ascii?Q?5JZToVk9whDkdA5MhzGFoW8CDGCHWOCsECNT02F7ogcAA+eB3kSZ+J8ON67g?= =?us-ascii?Q?TtXHGDCX7AVG5SeNYDcDA54WeYA1o9b1LHBaI1+gnjRFZif4ij8w+j7GO71H?= =?us-ascii?Q?Q8osE254xIJM8+hI4mA6Nqabl/6uqxSpq5d+tw/gfaBpsa11EKLTDJrppabu?= =?us-ascii?Q?6hJutyLdRQLH9cJqbFa/P2FP//B8cyAwUNilSpw2/iAUfDxgAV0Ko9znrrSF?= =?us-ascii?Q?g05hin6Ep3nvn3GDkFKUUIL+cwTFRYR2CdoQ2UTY8l9l83u5VALDlx4MHMu0?= =?us-ascii?Q?IqmnWKKostQscAvuZNsE4UUFza8wUM+8sdcivoKFAFKn4tt7Y8dKGJZ3KT9u?= =?us-ascii?Q?tINY/eiwaQ+At7lBb+w7QB53E01pTG7/XFOI0UpJOK3C+r6TmfU13qYL1b1j?= =?us-ascii?Q?39WGY4511l3n2PksjBVB3B2zZngfGWP51AmqhMBZPHqrYlZksWjNcvSPpa5C?= =?us-ascii?Q?Om/WqB9wsS9rcgkt3Yl/1zQd6Dar6ProrAPmcl6GkUkHaTVVXBfIZFIUrnMF?= =?us-ascii?Q?ujQX/jtIMpe8mXjkD7Q8VWTye92bO5Vyu+6QYogfmzeMI7QuBYTujR+CamOE?= =?us-ascii?Q?5M+36kx/ZqYsGKRdA8=3D?= X-Microsoft-Exchange-Diagnostics: 1;AT5PR84MB0132;5:hnyiMPaAlmfO2I7FnsirN+n56FHUpQ66EeOVQrjzYKJwGS9rHQPEZ/MIvRGQnOk3bao/eOsL4+2ZpewoGWpOUL97Iw4ewFPLixdswbq4OnZt10GldAZGfAMTuTg2XV3ycSQGKocTj2/lvvLSFReOLQ==;24:P+TmqxD+xDhROqaxqip95J3/HimaD1PqPMmJIv0S6zC+GH5SIwclm91gjQGNRlAVXV78MDWWOAK64cI0NocnVdhza3oUbDm7VgS4NYbQgMI= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: hpe.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Feb 2016 18:33:39.5584 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AT5PR84MB0132 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --------------080306060403070506070305 Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit On 02/03/2016 08:20 PM, Ding Tianhong wrote: > On 2016/2/4 3:24, Davidlohr Bueso wrote: >> On Wed, 03 Feb 2016, Ding Tianhong wrote: >> >>> Agree, but this patch is going to help the waiter in the wait list to get the lock, your scene probability looks more >>> too low and I don't think it is a problem. >> Sure, I was in fact implying its not the end of the world, >> although it will be interesting to see the impact on different >> (non pathological) workloads, even if it only affects a single >> waiter. Also, technically this issue can also affect rwsems if >> only using writers, but that's obviously pretty idiotic, so I >> wouldn't worry about it. >> >> Thanks, >> Davidlohr >> > Hi Davidlohr, Peter: > > According Davidlohr's suggestion, I use several VM to test Peter's patch, and sadly I found one VM > still happen Hung Task for this problem, so I think we still need to think more about this solution. > > Thanks. > Ding After thinking about it, it may be the case the hung task missed the wakeup. If no new task enters the wait queue again, the hung task will never get woken up. Would you mind trying out my patch to see if you are still seeing hung task or not? Thanks, Longman --------------080306060403070506070305 Content-Type: application/x-gzip; name="longman-mutex-v2-patch.tar.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="longman-mutex-v2-patch.tar.gz" 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 uScQOV2a//uY/9/JG5kfOFGm0eb1HV1bp20ZQCJ8jQ4E341fZpu+KVWDNQegK2whNa+yk0dh /5ZXzdtXHSlkC4vzaEShSs1r94sj0JtjzRSS3PZfpdi+J23VzoEa0nHZMyQA/05BtTbClBxi kj8Hex8nol7bkmFR8pEL0q6pBmEOS/S6zOOs1NvXuXdfnqpe4Y5UoUI29uZN4zjdfaecmGkd esm7bwoXa3S6eUxxMHY75KryvMxXCBSAfxa/+s5euNT45zToIFvfsi7Qept2+yotZ/8H8v3p Xrp/jWy/tUhw6K7J8ydq5E+DaDBQfjBWU/9gnt+a10ryW0/onSVnMsLOV/rNLy3t/NGRQyfK 692EhJMUbj6EaeycqVGTuzVJQFSKkZ/eCpkWVZOLOT8zdSvYOnz5AiMg7JLBaFUXDAh2N86p b4QkcCtGcIs6GsSbPDvN5Up8h9MxXaBsgTtGTQc2rogaF6kwjhRahaKh5RTPogpDNlLnPPhX AxgM/U2JWoQpKMRXRsxJRrxaqQhFNbkYEMaY0+rVGo9WojrKeggJAGs9RUtXPMe+2IcH8oW6 0/bAM47VdBliwAgZi/OkPnbKymLbQo4zUR7o2CePA4i0NO48veP/VDx8SHt+4GF3zQc622yK AsAPz/8J8d99SHZ/3V/31/31R7/+D4CzrFoAUAAA --------------080306060403070506070305--