From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 11BAFC433EF for ; Fri, 29 Apr 2022 01:41:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 797656B0071; Thu, 28 Apr 2022 21:41:08 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 720006B0073; Thu, 28 Apr 2022 21:41:08 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5C2076B0074; Thu, 28 Apr 2022 21:41:08 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (relay.hostedemail.com [64.99.140.26]) by kanga.kvack.org (Postfix) with ESMTP id 46FE56B0071 for ; Thu, 28 Apr 2022 21:41:08 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 1345326E07 for ; Fri, 29 Apr 2022 01:41:08 +0000 (UTC) X-FDA: 79408213416.28.81900D9 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf24.hostedemail.com (Postfix) with ESMTP id 8DD42180070 for ; Fri, 29 Apr 2022 01:41:03 +0000 (UTC) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id E1D7362209; Fri, 29 Apr 2022 01:41:06 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5F5BCC385AC; Fri, 29 Apr 2022 01:41:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1651196466; bh=QaiGLwnV4ie7NhguJL5G5yOfx2MqdqKnJRaCmm3yGmc=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=VqyGSyfwAWMJPosrNjo78l7QttkzKimLp5uEz2Z1f4ZdZ8kQZokKGtHZHhICNHK/t u9xiipupnG/DRSra8Gn0kq0EN8MHaev+9Bu5wqjjzUcbzrY0YCbNFWabCipzNHg7Ym 7tvu0nshPqWb8w6UVZnF/tpAiqu5hUIR3Fe59FnQmfwbVG2a/sIjUtxY1so1Bbg1dY oNW3Er5zKsWxSMAkQUcME3VHVqxVZb6dZ/T97k8NTlGvN6HxzSOo45aABmEFhibkZF kI8+2HyG9BfDaf3qP+/WHMdlxjxNXSo1aeyT8K+tVzx9tRG13FVGbhfL0uuuzTaI32 s6Cxxt3dNsr3w== Date: Thu, 28 Apr 2022 19:41:03 -0600 From: Keith Busch To: Matthew Wilcox Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, kernel-team@fb.com Subject: Re: [PATCH 1/2] mm/dmapool: replace linked list with xarray Message-ID: References: <20220428202714.17630-1-kbusch@kernel.org> <20220428202714.17630-2-kbusch@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspam-User: X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 8DD42180070 X-Stat-Signature: xng53urrcyouexhs3ehx8uxdegbd43z9 Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=VqyGSyfw; spf=pass (imf24.hostedemail.com: domain of kbusch@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=kbusch@kernel.org; dmarc=pass (policy=none) header.from=kernel.org X-HE-Tag: 1651196463-484807 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Thu, Apr 28, 2022 at 10:59:49PM +0100, Matthew Wilcox wrote: > On Thu, Apr 28, 2022 at 02:27:13PM -0600, kbusch@kernel.org wrote: > > @@ -316,13 +316,14 @@ void *dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags, > > { > > unsigned long flags; > > struct dma_page *page; > > + unsigned long i; > > size_t offset; > > void *retval; > > > > might_alloc(mem_flags); > > > > spin_lock_irqsave(&pool->lock, flags); > > - list_for_each_entry(page, &pool->page_list, page_list) { > > + xa_for_each(&pool->pages, i, page) { > > if (page->offset < pool->allocation) > > goto ready; > > } > > A further optimisation you could do is use xarray search marks to > search for only pages which have free entries. That's an interesting idea. I didn't consider setting marks since patch 2 replaces this search with essentially a stack pop. If a marked entry can be returned in a similar time, though, I could drop patch 2. I can't tell from the xarray code if that operation time is in the same ballpark, though, so I'll just rerun the the benchmark. :)