Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752985AbbHaMyR (ORCPT ); Mon, 31 Aug 2015 08:54:17 -0400 Received: from mx1.redhat.com ([209.132.183.28]:54031 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752085AbbHaMyQ (ORCPT ); Mon, 31 Aug 2015 08:54:16 -0400 Date: Mon, 31 Aug 2015 14:51:39 +0200 From: Oleg Nesterov To: Ingo Molnar Cc: Linus Torvalds , Eric Dumazet , Al Viro , "linux-kernel@vger.kernel.org" , Andrew Morton , Thomas Gleixner , Maciej =?utf-8?Q?=C5=BBenczykowski?= Subject: Re: [PATCH] task_work: remove fifo ordering guarantee Message-ID: <20150831125139.GC31015@redhat.com> References: <1440816150.8932.123.camel@edumazet-glaptop2.roam.corp.google.com> <20150829092219.GA8916@gmail.com> <20150829125421.GB14973@redhat.com> <20150831060208.GA7093@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150831060208.GA7093@gmail.com> User-Agent: Mutt/1.5.18 (2008-05-17) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1377 Lines: 34 On 08/31, Ingo Molnar wrote: > > * Oleg Nesterov wrote: > > > On 08/29, Ingo Molnar wrote: > > > > > > So I'm wondering, is there any strong reason why we couldn't use a double linked > > > list and still do FIFO and remove that silly linear list walking hack? > > > > This will obviously enlarge callback_head, and it is often embedded. > > But this is minor. > > > > If we use a double linked list we can't do task_work_add() lockless. > > So we will need another spinlock_t in task_struct. We can't use pi_lock. > > The fact that the O(N) overhead was measured in real apps to be in the > milliseconds IMHO weakens cycle-level concerns about also having a spinlock next > to the list head. (There's no additional cacheline bouncing concerns with the > spinlock: the head of a LIFO list is essentially a bouncing cacheline.) I agree. I just tried to explain that we need a bit more changes than just s/callback_head/list_head/ in task_struct. And. The fact that this O(N) overhead was measured means that we have more overhead with offload-fput-to-exit_task_work which would be nice to remove as well. Oleg. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/