Received: by 10.192.165.148 with SMTP id m20csp3105797imm; Mon, 7 May 2018 06:47:56 -0700 (PDT) X-Google-Smtp-Source: AB8JxZrhmbE7jc4DJSf9LlvvKH095h/m622AYvoeOIVU0499VUC0QwPaL5s2CFQVC6EKUjZ2VYBK X-Received: by 2002:a17:902:a586:: with SMTP id az6-v6mr38490854plb.210.1525700876536; Mon, 07 May 2018 06:47:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525700876; cv=none; d=google.com; s=arc-20160816; b=wV76EIZuWHgZtmASEBjzDAzSTmKj6hLMc3bOyHV2PctfTiWeRf6cY71Gv+ZHQKJc/r k0S0C1KI5CyQstQohnj0pPIJa4XGRIBHdx59NW+lkgrbsVEdLxKMw58biQjC3WJBJV6W dtUa7lgdqyYoLmKqfmoDtekdPVnxwW6UNkXdVIchDEoK8a0PB6OcDpKf89RtmWDvxs+D 1qwLDIMq2ccYNrUCtm/P7ofKkDemm8lvOmNv0b+VxT0nONVz7/qIuZ4S9B07n3nAJ41Q 7BMPPUN+/zUz/n6D4cDqqtGrHOJdOcPixsllZpHaA0l5nhJxdZgRYJTUhsethzfynfpG EGqA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature:arc-authentication-results; bh=S/lpYXOslbz3oLrpVvqRsj0PpO3/2wKeUEGKX8TZ8o0=; b=xC0aaebQyjf2Kr7b5RIp14Nzwzipwfyrj+lkEDuwGbH0zfhM7njZ+JItNYCed4fzfW rUD6eTutJNTFsiFqQ+OgzzqO+/rTivbtCQY8Xte0HR6hyfrm/eYZR40OY5uWEgO1F6fn IzH68RI4iEF9mbD5Dd+luInqDCNsa+5IYrGiQNwKHl1Zd3tdshb5P8+zVgLEU2w8wmM1 yhEvDJGGPR4SzlIx6kNHEsNn8YrZzraenxTXNFMA3xp9NRgSZSzqt0mPAZXEYpTIlOj0 Xd+rLJhBLa6MVCx0dmS8+NfWZOY7K40YXvOwmYosNAU6aMBNNepcSlwwCCc8T2cZFCL8 bXVQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=gQS4Uxvg; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id c21-v6si18086776pgn.355.2018.05.07.06.47.42; Mon, 07 May 2018 06:47:56 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@infradead.org header.s=bombadil.20170209 header.b=gQS4Uxvg; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752196AbeEGNrd (ORCPT + 99 others); Mon, 7 May 2018 09:47:33 -0400 Received: from bombadil.infradead.org ([198.137.202.133]:34938 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751884AbeEGNrc (ORCPT ); Mon, 7 May 2018 09:47:32 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=In-Reply-To:Content-Type:MIME-Version :References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=S/lpYXOslbz3oLrpVvqRsj0PpO3/2wKeUEGKX8TZ8o0=; b=gQS4UxvgwbtYkUCt7BlILsPb7 1g70vWgIzX4T2X7xiRxZv82Y1IWY4SOq0L62+AL0h/0Ka9PkVB0sefNv+wdlaJkclwzO/EAWyN9oB /cN12cxDax5F83CMcmytNZSGh5TZ0erTHjE7mLY4EfbG+G1FGC4BFMhTh9KAduRxrsBg9YoIVIWpa 2aEUKnO4snDuqwTcpmLuNl+UtLGO3FW60+3HMODT72IoQJoaL+bEABl0H4+3uv0ZLZmqxY/+7ELk5 vXdeGvUCQYwrHeRwwBCPgv/T3tr4pFd+eB/SFZm495igBYxPC01IzIVcAlAboEigYOTZxJwpG7MQZ IkqJu9MtQ==; Received: from willy by bombadil.infradead.org with local (Exim 4.90_1 #2 (Red Hat Linux)) id 1fFgUF-0008Fs-Gg; Mon, 07 May 2018 13:47:31 +0000 Date: Mon, 7 May 2018 06:47:31 -0700 From: Matthew Wilcox To: Jens Axboe Cc: Andrew Morton , Sebastian Andrzej Siewior , linux-kernel@vger.kernel.org, tglx@linutronix.de, Nicholas Bellinger , Shaohua Li , Kent Overstreet Subject: Re: [PATCH] percpu_ida: Use _irqsave() instead of local_irq_save() + spin_lock Message-ID: <20180507134731.GA28974@bombadil.infradead.org> References: <20180504153218.7301-1-bigeasy@linutronix.de> <20180504162216.ae91654b68eddafe38df7d7f@linux-foundation.org> <20180505035154.GB20495@bombadil.infradead.org> <60a88d5f-95eb-ba45-e59c-5a822a3d370b@kernel.dk> <20180505155202.GA29992@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180505155202.GA29992@bombadil.infradead.org> User-Agent: Mutt/1.9.2 (2017-12-15) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, May 05, 2018 at 08:52:02AM -0700, Matthew Wilcox wrote: > init and destroy seem to map to sbitmap_queue_init_node and > sbitmap_queue_free. percpu_ida_free maps to sbitmap_queue_clear. Hmm. void sbitmap_queue_clear(struct sbitmap_queue *sbq, unsigned int nr, unsigned int cpu) { sbitmap_clear_bit_unlock(&sbq->sb, nr); sbq_wake_up(sbq); if (likely(!sbq->round_robin && nr < sbq->sb.depth)) *per_cpu_ptr(sbq->alloc_hint, cpu) = nr; } EXPORT_SYMBOL_GPL(sbitmap_queue_clear); If we free a tag on a CPU other than the one it's allocated on, that seems like it's going to guarantee a cacheline pingpong. Is the alloc_hint really that valuable? I'd be tempted to maintain the alloc_hint (if it's at all valuable) as being just a hint for which word to look at first, and only update it on allocation, rather than updating it on free. Then we can drop the 'cpu' argument to sbitmap_queue_clear(), which would help this conversion because the percpu_ida users don't know what CPU their tag was allocated on.