From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754963AbcHWXKI (ORCPT ); Tue, 23 Aug 2016 19:10:08 -0400 Received: from mail-dm3nam03on0112.outbound.protection.outlook.com ([104.47.41.112]:46876 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753293AbcHWXJy (ORCPT ); Tue, 23 Aug 2016 19:09:54 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=waiman.long@hpe.com; Message-ID: <57BCCF8F.7040404@hpe.com> Date: Tue, 23 Aug 2016 18:34:55 -0400 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: Jason Low , Davidlohr Bueso , "Linus Torvalds" , Ding Tianhong , Thomas Gleixner , Will Deacon , Ingo Molnar , Imre Deak , Linux Kernel Mailing List , Tim Chen , "Paul E. McKenney" , , Subject: Re: [RFC][PATCH 0/3] locking/mutex: Rewrite basic mutex References: <20160823124617.015645861@infradead.org> <20160823161750.GD31186@linux-80c1.suse> <1471970103.2381.51.camel@j-VirtualBox> <20160823165739.GQ10153@twins.programming.kicks-ass.net> <57BCA5B1.1010401@hpe.com> <20160823204136.GW10153@twins.programming.kicks-ass.net> In-Reply-To: <20160823204136.GW10153@twins.programming.kicks-ass.net> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [72.71.243.126] X-ClientProxiedBy: BY2PR1001CA0035.namprd10.prod.outlook.com (10.164.163.173) To AT5PR84MB0308.NAMPRD84.PROD.OUTLOOK.COM (10.162.138.30) X-MS-Office365-Filtering-Correlation-Id: 4b7a0e9d-e0ad-4097-538a-08d3cba5b9cb X-Microsoft-Exchange-Diagnostics: 1;AT5PR84MB0308;2:+pbj3ihMN1mnuSxWIEJkNmtddxacxq0q/BnwVQfeNrIZ2z1evxUFRrWdEbRTk1w09NXDF0qAay1pibYRe+qnEsmzeVmTCzg2A+m8/bpOzO3EIeFJtuUyOe/W+fJ7Nw13HVP6KuA9IP9cWw98ml0mri+utvwa23wKnwbqxS0Kxb8NS0lRxhwCmUsv5UdSTkSU;3:djLpchHgvacJqYXtm+ltRLFgIiL5qFGXNRTFCKoClWPQDIM/7Bkeu3nfNwp0hBad8qRPmPknwIvtV9ZeD7rGVB2eRMidXwMY9c/bQfKm2TjXO6fiDwlVnWhUgmqN9btW;25:hQKnxVXjk1ZfVlQ/UK1sOGRLCVUbrbkwP+hJwcQNzT4ye81awftAy6odjLqQfrHyMTwY+3cq3aAcrBsqaLCHHhEtis4Y1TfTYl+rnsYFqv8WgggJgh6h6Vcu2LJJwftz8DMdPf7mq+0UutxOc85jzXydiu/SWrS9E10kKC5qkI0E5iKGOfkcbOHsr23BQxJwlVe/QZMS6LsIYsFeASTGebcwCy94klFR+AxRW52GzDlvrOi6L+O/1orCX3Ry2uLNTiZPvVDE2zLK8pcW7SYxa6NfOEmNOtSMWWtM2VQOH+zLotfLlKPQOqrUaaLMelVW81qIqc4z2BwBPvO7ja4e588XlYNe4aJyZx+mQz8ZgHMgdNYefA/Pg7qH8a+LMqB+1dvBcO0pm0o3dDZxw7AhL86G71j7NzwZ3QR3qL/MtFQ= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AT5PR84MB0308; X-Microsoft-Exchange-Diagnostics: 1;AT5PR84MB0308;31:ADJQyVfg2+FKbUHZ7EU9Ld0clswkrO6jkO5JHffcnTd1c7wag75bqzzQVmCB2p4WK5GHOwgOXw1WE4b+U1iEbC5r1BzkQK9el5M/Gk1Wy3JVbJjtmwzM52AUjYqPxTzkfCtPqG3Qj4KZxERkgtoJhxXkyLNqspNX6HYfuNrsFQnjF4UHU9Bg/R8Prdbgof8o8eN+iViwNrvtD8SPbPlGywKAxpjkqwxx+vF6RYzw27Y=;20:svykzYutptxMzCML1J9L+PYT0gV4HEfekOhLVg2D0iJ+kzuunbAAlXpFyQB7Iu/81fjm9QiAQjPqQZYqYizJji/n3hOc8E9s/jNeBjhSM7NTDoLGJbHqIi826/CoBItwbpej3+LhvDD4hP8VaPzLHX6uV8+agbI29/7GTHyzD6iV2em+VXQHXDzQ0BG7keblqN6PfLR3C8DtqZTBjustmGm4Hj5ytxai4gefx9/OReRzRTb5uyqAQAihi7jreMfVkV77QWsBgv2Xfhcp6QWH3pLC0DMNFdLWwABjycxYUOYEDHuTji2wxx3D7ReJA+5vWdWb567U9O+T3wuCcZO/W2A1KlaYdkEYHiKOf3i+hBv0iOv1Kg0i25uhUmf6ZkMc3GeTlhGDsRU3QqsmX/gQ3STpyxTFfJeyc8/SOzWVF4P3gpG8xpLQEUIuwyP3Ows/PyFXHXsaVVCNPClUMhVdhCvxXaa9c7DSG0rEhReLGtZlj5enzKnnkWXjWi93BQno X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026);SRVR:AT5PR84MB0308;BCL:0;PCL:0;RULEID:;SRVR:AT5PR84MB0308; X-Microsoft-Exchange-Diagnostics: 1;AT5PR84MB0308;4:I9v6jNPjhSbugiVf0a0VX7/MrzONHQwNH4iIJalnHWABSuxL6RUsQFtdfSm8vL9VRXOP7qLjruRh4qW3SxNC6ifSsiMLlT3/3IEpJSYW+M9PjKB78Ml31HKOUPXbAhm8eM0qXcanuQ0ydpHfjOFqBUUP8z1Vxrbl5qfmkBYd1/iZZgVTvcNR8hXStSMO26w5QLGSOJYxSSdlBQBr/WRiPwkMlVE5RL2ochJzUC6rfvbFO/1igf+g/4qx48KDOJbB/z8rBoYLC+1eot9iCPhLKnh8XWdPl3J0lX1x1TLhh1dPOwvRVGUg/UDRGp+uTg/jraYaqT3kN89SCvMHtYKDLUTyB034Ratafapl3gKAtIBsl34kZprfOMkGko6J3/PNR7Qt6J8dx8UC/WP+98m0vhO8HKe7XufyJ/C/y+xcU+bKixjm+7bL/BnfDPbKnpcu X-Forefront-PRVS: 004395A01C X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6049001)(6009001)(7916002)(199003)(24454002)(189002)(377454003)(86362001)(47776003)(33656002)(106356001)(97736004)(101416001)(2950100001)(77096005)(92566002)(54356999)(36756003)(50986999)(76176999)(87266999)(8676002)(586003)(189998001)(65816999)(68736007)(66066001)(230700001)(7416002)(65956001)(110136002)(81166006)(4326007)(4001350100001)(3846002)(81156014)(65806001)(5660300001)(6116002)(50466002)(80316001)(2906002)(7846002)(59896002)(64126003)(23676002)(8666005)(83506001)(105586002)(305945005)(42186005)(117156001)(93886004)(7736002)(7059030);DIR:OUT;SFP:1102;SCL:1;SRVR:AT5PR84MB0308;H:[192.168.142.190];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtBVDVQUjg0TUIwMzA4OzIzOlBHaStGYmNLYTJxOFV4eHBEZVR3dWVtaDBQ?= =?utf-8?B?ek9wbjNmcGNBajdGeVVDZFdXeHkrYVcrOXVXYUc2eC92SFlOY0UyVUFZNjlK?= =?utf-8?B?ZmVNNlMvUmh6Umt6d0lsQnkyT1BvYUE1L0FoL0Frb3VNd2tKanZKYXIvZTJV?= =?utf-8?B?TDVFckhzOWM0cTJFMHZWWk83VXRHc0RadnZQd0tMa1VEQ3Y4cFA5Nzd0VmV6?= =?utf-8?B?UTBTOW00Q1d0WDB0TitpR2ROczVUODFIUC9UQy9ZT01mUWxqQ3RJVUJQVjdT?= =?utf-8?B?cEh6OHo4UmEyZC94dndSc2h2alhKNzJiN2c2ZUxDVG1JSnJ6T21KdUxweVdQ?= =?utf-8?B?MDlhOHF0dWFTejlCK1I1bHdaaHFvQU8raThJN1Q1SjA4b3dUZXJiZmFUdENE?= =?utf-8?B?L1VTVEYvV0p6cEQxZWxnNFlsd25EMDlHS0xvOUNHSzRYOXNyQWxPY1pQM3V1?= =?utf-8?B?OVhQR0xadElUaGtwWHJrbktsSWQvYzdTKzFQMytUeDRzTERiVDNXamU3andP?= =?utf-8?B?RVBmVjY4dHVVNEl3TWVra3A0OFZWS1hwUjhnYm1wYklnQ1Y4UjJJbHYvUnZk?= =?utf-8?B?S0xLd0hSYzRSSjNMNnZKc2ZxOWd0dGc0MGd3VGl1ZG5oRjc4NzYzdU9OTStv?= =?utf-8?B?ckJPajJKbnBLTUk2ZGgzdDZubkdMa2dDQjlYT3NNUUFkNzZTSGl6dG9XR1A1?= =?utf-8?B?T3FLeEVLd3J5dEtIcThpU0hDRjRFMEwzdEhRRVNaaW5JU3I2OVdYSGFOLzdE?= =?utf-8?B?UVZZRHdtTHQ2b21ONVRFZXNSa0FKT3d1TjZmK0ZBc2tHQldNZEJueE14dFJ0?= =?utf-8?B?M0hkMjR5eTBsQTFuQ2QzYjAvcEgxRmZ1Skt5ZndzS0dhWFprNUl2bGpyc05O?= =?utf-8?B?UnJoYlJuanM4MUF0UlFQdU1SOS9iZjM0bVNQZFNUOSs0WEE0eFZOaVhKbHRG?= =?utf-8?B?cEN6QXYrSERXQ1pVRUcwcGwzY0l6cFcvMGdPZnYydWlDbnVKWUpSaXd1QXgx?= =?utf-8?B?QlpzRVhjZVNxbU8zdDdteWdVaEdIWUx0VWFzMnFqNkJlT0o3Ty8vT0VEbWZk?= =?utf-8?B?L0ZPZk5yTkRRYVhvQVJwVmE4Z3ZZQmx4ZE5EYzkrZGh1VGI2dCtFTGxFS0Er?= =?utf-8?B?L2RaOEZta1hibkRSSVlablB6aHFKNzU5WHdjcUlyZ0E2OGhTNzlydmNYU3Y1?= =?utf-8?B?Si9OV3NwaEJQeDY2WTlGVWxqa0x1OU5LSlhjMWRhU1IxS1U4RnU1aEpiTU9X?= =?utf-8?B?eTBHTWw5d0xwcWZ6TkpEcWEzSEwxeG95dHQ2cm9XbDR1ZndUb0psZStndldC?= =?utf-8?B?QldxaGFZYTdnOFNrVGdzTXZOWE9FNk82S2NRZzkrK1FaK3BiSVBCVDlXOFRS?= =?utf-8?B?aWxxY0xCMmx5S1VydDVFQWsxV3RINXFVU3NBcXR0OUhHNEVsdDRELzIrRzJJ?= =?utf-8?B?dmpiVG5mMzVBMDNjSFNaWGxsYVNodnRqN3hLdVozemJGbVJmS1c2andsR3ZW?= =?utf-8?B?L1V5TXpSbjk1VWkzOFV3K0o4ZlJpNHBJWjJXbksyQ1FKckpkTTZtTFJrU3VE?= =?utf-8?B?Mno3N0RDOEtHZVhwSlplajRVZEFNTk5KRUNiQi90bGRvZXI4a2puajcvZVZC?= =?utf-8?B?MzBXeWFkWnE1czFwWkxrYmxDMFFZSFNNTkZETmliWTZMaTVIdTcxdnY5ajYr?= =?utf-8?B?NzZtVkkxSklhdUo3aWNVWThJTjc3Q2h4NHkzSzdCZWQrWmg5VkxsbnZ2YW1m?= =?utf-8?B?ODVSMnhVQVA2N1REWnlPWTAva2pWTFg0TzZ0T1J4R3I2UUFBbCtDZCtHdzlR?= =?utf-8?B?THllc1Z0NXYvbUFabmRkNlUwYmVRTzlsa0ZMUTRuYTdId1E9PQ==?= X-Microsoft-Exchange-Diagnostics: 1;AT5PR84MB0308;6:3PfKhTl9eMkhWhBcoBUnxsftlnwiCbEBPEWwb2W9eUl7MWkAiY3+0p+e7w1cCn3coec0JVefFIBi1mZysPefqaX6jhnsFfIHSgaeOgR3zrUfdNjDr2b+hIZuPRYogn6t+M/LxXlZmiQavfA2qZE2StcZRuiHNlJ5Z6Cz5yQUSN/Q0HO2sRvzr5jbMbCd5OOQCtc4In3r4RwQAHIcCX0HIgh858Dqx7BAeAHlP4XnjJpg65A52yG5c8hnqkYuiDKJYG3PhW0M4PqRGVzR2N1fsCyeSfYtKO1okT6X1pEus7PHr8SP3jjl2VSbp6y9V7hV5bp3ZJsvUH39mGTt6N34TA==;5:omZmUCJVfeEAwr5B/YY5exBf9lD2UpNISwJCIKzTvItQfbjzz6pawYnf0EklhFU1+qjdngQVrzFOjgWaVUjjNmeh60KfHIlr9Kyd0rwWAfBp1gMvp3Ov0jbFQKadyvqNC0EJP+N5JdILLZ01jbFYFA==;24:MO2ZpPw9OXP+QwgtWhEpj+MJ481DqdBUraHvhRs2BWaukj4Xskdfww9pYB8rgYbMdNuBP0KzTglDLYA1Z3WQz842uPooxzAvJYc1ksZyH6Q=;7:mvPDNyP7xaJ87qGlv0IEhYeOy9Hy8ivz7i1ctGLJ9f/VrywWm6ECJUWEkrPkapT/MHG9o0uJ+5H8ZpchFSM6wtJcyMlDKXdDsGpx9hfvC3XxR6S9gkmXuz1VkANz0kPipq70fM1eORD6W3D7eBaZdAPYcRL8dhV3DpCc1AyMjqpQgkEVrw9afrfF4t56jzjrLq7nrVjKGKdGYBh4RGUWZ/LIj6A+X7VD+qGYPSqTBpMTm7qy01b16tSKRWCv5SiK SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: hpe.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Aug 2016 22:35:01.2555 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AT5PR84MB0308 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 08/23/2016 04:41 PM, Peter Zijlstra wrote: > On Tue, Aug 23, 2016 at 03:36:17PM -0400, Waiman Long wrote: >> I think this is the right way to go. There isn't any big change in the >> slowpath, so the contended performance should be the same. The fastpath, >> however, will get a bit slower as a single atomic op plus a jump instruction >> (a single cacheline load) is replaced by a read-and-test and compxchg >> (potentially 2 cacheline loads) which will be somewhat slower than the >> optimized assembly code. > Yeah, I'll try and run some workloads tomorrow if you and Jason don't > beat me to it ;-) > >> Alternatively, you can replace the >> __mutex_trylock() in mutex_lock() by just a blind cmpxchg to optimize the >> fastpath further. > Problem with that is that we need to preserve the flag bits, so we need > the initial load. > > Or were you thinking of: cmpxchg(&lock->owner, 0UL, (unsigned > long)current), which only works on uncontended locks? Yes, that is what I was thinking about. It was a lesson learned in my qspinlock patch. I used to do a TATAS in the locking fastpath. Then I was told that we should optimize the for the uncontended case. So I changed the fastpath to just TAS. I am sure if the same rule should apply for mutex or not. >> A cmpxhcg will still be a tiny bit slower than other >> atomic ops, but it will be more acceptable, I think. > I don't think cmpxchg is much slower than say xadd or xchg, the typical > problem with cmpxchg is the looping part, but single instruction costs > should be similar. My testing in the past showed that cmpxchg was tiny bit slower than xchg or atomic_inc, for example. In this context, the performance difference, if any, should not be noticeable. Cheers, Longman