From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753207AbcBPADX (ORCPT ); Mon, 15 Feb 2016 19:03:23 -0500 Received: from mail-bn1on0116.outbound.protection.outlook.com ([157.56.110.116]:43955 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752444AbcBPADV (ORCPT ); Mon, 15 Feb 2016 19:03:21 -0500 Authentication-Results: stgolabs.net; dkim=none (message not signed) header.d=none;stgolabs.net; dmarc=none action=none header.from=hpe.com; Message-ID: <56C2673F.6070202@hpe.com> Date: Mon, 15 Feb 2016 19:03:11 -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: Davidlohr Bueso CC: Ingo Molnar , Peter Zijlstra , , Linus Torvalds , Ding Tianhong , Jason Low , "Paul E. McKenney" , Thomas Gleixner , Will Deacon , Tim Chen , Waiman Long Subject: Re: [PATCH v2 1/4] locking/mutex: Add waiter parameter to mutex_optimistic_spin() References: <1455298335-53229-1-git-send-email-Waiman.Long@hpe.com> <1455298335-53229-2-git-send-email-Waiman.Long@hpe.com> <20160212220249.GA16417@linux-uzut.site> In-Reply-To: <20160212220249.GA16417@linux-uzut.site> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [71.168.64.167] X-ClientProxiedBy: SN2PR80CA020.lamprd80.prod.outlook.com (10.141.39.158) To AT5PR84MB0132.NAMPRD84.PROD.OUTLOOK.COM (25.162.137.26) X-Microsoft-Exchange-Diagnostics: 1;AT5PR84MB0132;2:CcoSvS/vbK5IG9KDARGOp3mMaBdK/17+RzDjPOFjmbIFHlgx8iI8Sne1n2VczctcwOZr8B0uU+I98Hphgk2tf1Ako0FLfalXgFFiB+bmY9oYnNkc8VzTh1lo4EKu2qJs2xt609f2IC4PRiIdF085yQ==;3:U0Rg6HPG42wDfEHrsc98EoMWFkiS2ZUpGdK4R8oXdmxo/AMMMncaKw/f++74TSe0SpGzLNjaVwad/2d2LnDbGVNdnFwSfMOFEmx1mwFobkXqSVI+mDUWOsNQZB9culLs;25:A3k9+Q2kCU2fKLsAPLOREBTjFn0hcdg5VsjIrHY6vfAlesZXU7czqyybnv4F4ySwsFyDgxYW5+tIhnE43k8hthEYvAVyN+zVcH99Zv4HcXciPSfxNFpNKNaBFPX467g3p6V4+2x6k5DDweXoRfmvd/a9UicRDHIPHf41Fkpdxmj3BAityLz5aqQlXH5ETYVKLKW+Mp2EjLe3F/LNSgGqWLTyNIPlSChcGhF9xe6kJOfOgT2Z4HbdO3HdesPqXUYei6Km0ErPE39GEEreghB/OgOj1JgmVThSyLeHgbHAw5slRTlZKExx4co2L8k4SdJx;20:PAYBkZ7BrtTrvplngupt7GwLTOgv3xZiSnlf/mJQHbsdaaVzVk2O3yXPZPfpHTGahPuMSvmZt1yPyQsXMilrDf+40cjI9a/iX5OyrPLEDuwZezDr44REcUBeeCdR3GM5Gs/ms/zXL7DKeDfdREQUCbE0EI1OkI3dFOw6VkprUTK5qJ6azg2uhCHp9JmTpzeFrnjPNPobjq4WHEj6U2ujPemzoj2xcGwbGovVJ3pZa3+Nl8/KpJWc9fl4XemfU64Z X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AT5PR84MB0132; X-MS-Office365-Filtering-Correlation-Id: 5cdcd021-0194-4051-9758-08d3366493f9 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:AT5PR84MB0132;BCL:0;PCL:0;RULEID:;SRVR:AT5PR84MB0132; X-Microsoft-Exchange-Diagnostics: 1;AT5PR84MB0132;4:JjH+cj69rp3y/5vX5MtDZzJ+GQJ+N4X8Vmaysp8nFHUe1Ey3hybOZrBtm4p+A93dY+kafAvb0Ej+fFzuXEd05JkBbkRPe/ksHgwnoorIEFgLygjeoGkkt1rhGmXp9g7L4Ece9oPIhotRn++XieJ7ohCzTU3llQ66ivFQzIIWwgA8oSYznKdgPe9zuiTk4Y1qHz86cJZEBkzkyPBOJM4VSo5R+wKoGzGvG/nAEpJFHSMde7o/sU8Akk0YhhNxKLvXsodJIt8u3KjCFO4WJd2sODmVaEZfLxIvpRfwBNO7G8RdsxQho5Sx8jUPWtHGGXwtskFPTU96fiaZnmn59jEpaMXB34GHlKzUt4RMns82phJhBkHnslifV817nG1USM1JhhiLonC27TUkc15h0tXER8RiD5n2RBI9K2i/m1Wo6cU= X-Forefront-PRVS: 0854128AF0 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(479174004)(377454003)(24454002)(164054003)(230700001)(50986999)(117156001)(3846002)(87266999)(76176999)(65816999)(54356999)(6116002)(586003)(5001960100002)(4001350100001)(33656002)(5008740100001)(2906002)(50466002)(110136002)(1096002)(4326007)(189998001)(83506001)(42186005)(19580395003)(19580405001)(40100003)(92566002)(66066001)(36756003)(77096005)(2950100001)(65956001)(86362001)(47776003)(23756003)(87976001)(65806001)(7059030);DIR:OUT;SFP:1102;SCL:1;SRVR:AT5PR84MB0132;H:[192.168.142.186];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?iso-8859-1?Q?1;AT5PR84MB0132;23:nk8URRnmLpHHlsBu8PkZRBZtlTz24/H03TolaL2?= =?iso-8859-1?Q?6j76D7/97A0BJwHArui5S6vCcrLJMR/Cgq44FvEVrr+t8vzGftl30aSGTk?= =?iso-8859-1?Q?9NSt1LPzknMMJlUlv1s8P/AQv//qJx9z+aHWdr2IwUsdzhZJW8HYQSfH11?= =?iso-8859-1?Q?LmZRQF6fvP/drZne4RsgIP+fwwlnH+NTvV+7VipQp5s1mX84PCJdKRfRu8?= =?iso-8859-1?Q?QWDDULIrv8m1bzPfRYQpsuUDhfsTZEbChD9WDl0PMFobhqmDk26vjSB+Ua?= =?iso-8859-1?Q?zKF89YYkms06MN9lDF5mLkZdG7ltVNGyhNAAtCGdk5ETUkPe6PyzwBRl8W?= =?iso-8859-1?Q?pD9Wxf9x+5WrGXdvLGrGVj4qZaXX9pr71B55TjJqZrgsMosSHzQ9Dkhp58?= =?iso-8859-1?Q?UWXd+4+p4rIje86Yl6PzeVBK+ChEsD6G6jo/cLjowSKOGvoKzR+D1vE1tq?= =?iso-8859-1?Q?IMV6Z5QuEPg3gOBlB+8uskfZvI8LKNbvYH44YprLNGqpXBuDFLmN3TRdPg?= =?iso-8859-1?Q?F/DdOGSVwbOieTjDQ269veJONRCrRv+4eTqE/bSPARSMwiPafWMTpEw0oC?= =?iso-8859-1?Q?m/ecEjAHW1jcIsOLwqmaqUB4Ky3dHFtDjHAeIMEjxGqqPHAF/e3AZUWxou?= =?iso-8859-1?Q?Q8hY8FtOcbPY5nrtzotp6xucqlUOaeAIFMsG4d1KUbvBrQypV9BNmF2Cmt?= =?iso-8859-1?Q?mY0nFf9Vd6TNuAHJ37J72YvXz2eL2bhJvIAxzpkZiKGgBlfNf+s0ipk+Af?= =?iso-8859-1?Q?AzLHMO+WI1quw/nfwQmIypc+ZFWyUi+hao7r5mk2ebFKuVV7qLTY1lsj1J?= =?iso-8859-1?Q?KYRx/wfMf7cVh4iOfYd01GBO33fCL7DzguNslKFWhc5+rj7Kuuj4XpBAoA?= =?iso-8859-1?Q?t/IDWRDiUDT8gMo5ELwhMJuCTsKamJXYIlEqwBaIJmk0JRJL3nh44bSZe2?= =?iso-8859-1?Q?f4Z4Bptw870tNTfsFSpLgKABs4BhrEZAoxBOpOtSYHfM+odlCZVm2Rh0vX?= =?iso-8859-1?Q?nmrBSPC0g99Y6KotlsB9Ak5g9ci6zFnoNyhE7EQxHeLmf8j7RXe1L3VuFq?= =?iso-8859-1?Q?ydq9sjyRQ9hg+6pvAWXTZV6UHZ/azRcOa9DB2Zj6yc3GoK6lx0NiP/Jgxt?= =?iso-8859-1?Q?7q4D4Jt+A0iAUfLnDeQzkemF7qEmIKfENio4pFCbQeIXMwsa7UzWr2DHku?= =?iso-8859-1?Q?Afe8ImpbLMD?= X-Microsoft-Exchange-Diagnostics: 1;AT5PR84MB0132;5:2WpoqvYXsBvF2EsKMq3fjgYe0Iex1+wK4SDCMqRUram708glzTmhxMbGztbT2tXEFXVVsb/yx92+m8qciZxuzDyn8OxCdanpf4H4V+9srtOsAMCcthGaSaFLQ48DkFQuVIex/j5rhjaEebyuBCs27w==;24:ieXr6i2HBYINMoHp8YDGDBvPUvZoTaldeP8V9IfC+GEE2Gz0wVp/KCBBNxYfsDqgOfeUJ7T0PxaWiws7cwCcXfsRuOOJBtkP5aBtO/SQoQE= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: hpe.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Feb 2016 00:03:18.3171 (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 On 02/12/2016 05:02 PM, Davidlohr Bueso wrote: > On Fri, 12 Feb 2016, Waiman Long wrote: > >> This patch adds a new waiter parameter to the mutex_optimistic_spin() >> function to prepare it to be used by a waiter-spinner that doesn't >> need to go into the OSQ as there can only be one waiter-spinner which >> is the head of the waiting queue. >> >> Signed-off-by: Waiman Long >> --- >> kernel/locking/mutex.c | 55 >> ++++++++++++++++++++++++++++++++--------------- >> 1 files changed, 37 insertions(+), 18 deletions(-) >> >> diff --git a/kernel/locking/mutex.c b/kernel/locking/mutex.c >> index 0551c21..3c41448 100644 >> --- a/kernel/locking/mutex.c >> +++ b/kernel/locking/mutex.c >> @@ -273,11 +273,15 @@ static inline int >> mutex_can_spin_on_owner(struct mutex *lock) >> >> /* >> * Atomically try to take the lock when it is available >> + * >> + * For waiter-spinner, the count needs to be set to -1 first which >> will be >> + * cleared to 0 later on if the list becomes empty. For regular >> spinner, >> + * the count will be set to 0. >> */ >> -static inline bool mutex_try_to_acquire(struct mutex *lock) >> +static inline bool mutex_try_to_acquire(struct mutex *lock, int waiter) >> { >> return !mutex_is_locked(lock) && >> - (atomic_cmpxchg_acquire(&lock->count, 1, 0) == 1); >> + (atomic_cmpxchg_acquire(&lock->count, 1, waiter ? -1 : 0) == >> 1); >> } > > This can be a really hot path, could we get rid of the waiter check > and just > introduce mutex_tro_to_acquire_waiter() or such and set the counter to > -1 there? > > Thanks, > Davidlohr It is hot in the sense that the lock cacheline is highly contested. On x86, the ?: statement will most likely be translated to a cmov instruction before doing the cmpxchg. The cmov instruction won't affect the amount of cacheline contention on that lock cacheline. So I don't see there is any problem here. Cheers, Longman