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 31531C4345F for ; Fri, 12 Apr 2024 13:52:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9B9216B0098; Fri, 12 Apr 2024 09:52:04 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 969636B0099; Fri, 12 Apr 2024 09:52:04 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8306C6B009A; Fri, 12 Apr 2024 09:52:04 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 651686B0098 for ; Fri, 12 Apr 2024 09:52:04 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 1A67AC07A7 for ; Fri, 12 Apr 2024 13:52:04 +0000 (UTC) X-FDA: 82001018568.21.85EF950 Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf05.hostedemail.com (Postfix) with ESMTP id 14B4B100013 for ; Fri, 12 Apr 2024 13:52:01 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=C6MJz8cN; spf=pass (imf05.hostedemail.com: domain of horms@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=horms@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1712929922; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=PPHpnUpDojtGfVq83NlTHcL0h5UUuJu7GDi6einUv7k=; b=d3LTD771UDzQJc2xzxNWPd0MG40FF8eVMtivv9uv3XWKy2tI/l/VDYRmDO65Oni+5WMeeS S1vjRI2ntt4tzIZo3vAO7myNu1aRWYJk/bNAMGYGOZ01gdt+t5VnE1y1U5HR1j0Bm3y4Af Nvi4XocE++sm90hcOx2JpTF31wpkzSY= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1712929922; a=rsa-sha256; cv=none; b=Oe9Io+IgchY7RskwNi8VHGD0R0KPRMBmYimzHa8UqH8ijqHgo1xIY+Y0uuUiQ3MjwymYqQ t7lXVIX3DUNxmSlzxgbhVey0dtxWGxF9WorbOL39K1X6/1QoKd0cJJtmp0Cvjf7lOi6AC0 Zpof9OHDAgnUvHlxwZ9tC39nH3//jTI= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=C6MJz8cN; spf=pass (imf05.hostedemail.com: domain of horms@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=horms@kernel.org; dmarc=pass (policy=none) header.from=kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 65629CE3914; Fri, 12 Apr 2024 13:51:58 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id BB845C113CC; Fri, 12 Apr 2024 13:51:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1712929917; bh=uO3kNffPt8k6Rw16SW5d5r2nyLGqqfTi0dbeoGQYHb0=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=C6MJz8cNAjnyoHwQDegU15ad3V+cn/IzLHefnStqNB8OABQKrb+zcESQ/EENBPeHz iscHoBx1l6hGSfwv3g21ZWMOExNMi2rPgMDz3Z0JK4cPh9QnCq9R6wEd7OT7sbPxGf I1xlx3M9CEHaJ93aAmFdr6wrIPmFof8c4EDZGWmQUlupVxHvbHKbyY/rXQgqCITXD0 UGuH0/va4PurxwDcuB8pJ/t3Y3krObZxB2/1sJZcFXP6wNtIYJ2Q6SgDr5j+JHxjm4 bBQwYxhkCIc//HLBM/apynk9cA0zzT3/xtt4SI+JbUYiiGKVx5fyv+t7UK0v2Emxci tZvKeDnLBsLrA== Date: Fri, 12 Apr 2024 14:50:23 +0100 From: Simon Horman To: Yunsheng Lin Cc: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Andrew Morton , linux-mm@kvack.org Subject: Re: [PATCH net-next v1 11/12] mm: page_frag: add a test module for page_frag Message-ID: <20240412135023.GS514426@kernel.org> References: <20240407130850.19625-1-linyunsheng@huawei.com> <20240407130850.19625-12-linyunsheng@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240407130850.19625-12-linyunsheng@huawei.com> X-Rspamd-Queue-Id: 14B4B100013 X-Rspam-User: X-Stat-Signature: 6db377r1nd5ir6uhzmsqhjgm7mkfks4y X-Rspamd-Server: rspam03 X-HE-Tag: 1712929921-628097 X-HE-Meta: U2FsdGVkX1+0SN/WEyP1YzZ2zChOaIyqdX60GQ7iz8hj/+7b/GDcDdqYjuktvuuB7PUcm2R4k3SKiU2viS+Qdw/GRmj51j7Sr+fIFMEgQuNIRjC5C6ZyH8l01q5F4OwWiZ885fkFmLb8RklR/KF5+M2m5UwBp2ofkh2Vsds9Mhkwk2j/t6CGfHkWjaj+hbkePwgnx3OmLW5C1YoaG5uFXhErrkbkk+mIq0hg3sC8PhSfpBfWfUetcVb7n4LR1uDvl8jcZkZyXvmwfSl8UkT7ERfa/xdro51p+0v06IWPqOeZ7uv7dez45/rakihVpbOR62NFnT4amE2XuS030bwi28Q+e/5yf5vHnHia4AGSX73Rawass56cn35F1vdoA9ejBqd9az0rsdPMW8y79LG19chV6WJ67AIi1icQMp5SgvwtjgcZJ3hKyMbi3WchZVPTMXCa+fHRa9Ve2ZXgUycKAiBujsQkVSVEImEr/dZ6K3RjW5EcOaOagsJP7dIwRi1yKy1w7pL4GfIMi6k4n7hsh/WTdPymNBH6/GxZRvCQTbxpXcWXNGJtbrVHb1+GGcqrj82lNtyB+o5U2czil+ZDgpjWpfUY0NPhsHqNU7rw9wqM9xR3wm6wVoklLk+fSsgN8XGrloJkJopOxdQsNeKD+Kbgmx6JpySq52yfZ1rgXDZ7uNzzgV9MIUY1zS8gF8SSkBuw9wjR/PlFiJUdhBsfRNEAyeTX57zOPJihT9VDwI0lkKBjGjw+LWFvLBI9KIt5qRhjduJEuOJGEZdZjvU7PcxCy3IUDa+hnre4LANKH4IBHvmD+ELEXdUPB0QHmS5lAnH7BHKiDA87kwRRh6FS8RdP7ZjMVpdJHxcqkcuqoDxwtALpSI03xs2rKOfZK8dAPsKE/npMEIoaYo+jWjh6bGKyQ1ygNvQysLsBDJtM8XxdLFPj8evsNYiz8fa7g2TERQNlb2OafvPmyqFXMO/ K8DtYx7s ugYYiQZumCCDaq1sRcm3GTsLdkckfjPbi8rUC/LTp+ujCTwl6qw06+kcmNHAUJh4CC+mUGnTcCwD8WUEiOW0ZymIOOC32i904i0aIqfV1oTE0GRYPywiGwgvVH4D+EBTKqeN7dpulbMxZHP2ZEtGDBRbu8pHt/OgLG1H3CI7l16PkHsd0fXgbXnCBcnH8cmgUh5vZNc0sG+X2EhIUVQRo5G6nrqztmu40TVG8fQ4mR0z4QreuaDMc5+lWHPjYSya1E4rW 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: List-Subscribe: List-Unsubscribe: On Sun, Apr 07, 2024 at 09:08:48PM +0800, Yunsheng Lin wrote: > Basing on the lib/objpool.c, change it to something like a > ptrpool, so that we can utilize that to test the correctness > and performance of the page_frag. > > The testing is done by ensuring that the fragments allocated > from a frag_frag_cache instance is pushed into a ptrpool > instance in a kthread binded to the first cpu, and a kthread > binded to the current node will pop the fragmemt from the > ptrpool and call page_frag_alloc_va() to free the fragmemt. > > We may refactor out the common part between objpool and ptrpool > if this ptrpool thing turns out to be helpful for other place. > > Signed-off-by: Yunsheng Lin ... > diff --git a/mm/page_frag_test.c b/mm/page_frag_test.c ... > +/* allocate and initialize percpu slots */ > +static int objpool_init_percpu_slots(struct objpool_head *pool, > + int nr_objs, gfp_t gfp) > +{ > + int i; > + > + for (i = 0; i < pool->nr_cpus; i++) { > + struct objpool_slot *slot; > + int size; > + > + /* skip the cpu node which could never be present */ > + if (!cpu_possible(i)) > + continue; > + > + size = struct_size(slot, entries, pool->capacity); > + > + /* > + * here we allocate percpu-slot & objs together in a single > + * allocation to make it more compact, taking advantage of > + * warm caches and TLB hits. in default vmalloc is used to > + * reduce the pressure of kernel slab system. as we know, > + * mimimal size of vmalloc is one page since vmalloc would nit: minimal > + * always align the requested size to page size > + */ > + if (gfp & GFP_ATOMIC) > + slot = kmalloc_node(size, gfp, cpu_to_node(i)); > + else > + slot = __vmalloc_node(size, sizeof(void *), gfp, > + cpu_to_node(i), > + __builtin_return_address(0)); > + if (!slot) > + return -ENOMEM; > + > + memset(slot, 0, size); > + pool->cpu_slots[i] = slot; > + > + objpool_init_percpu_slot(pool, slot); > + } > + > + return 0; > +} ... > +static struct objpool_head ptr_pool; > +static int nr_objs = 512; > +static int nr_test = 5120000; > +static atomic_t nthreads; > +static struct completion wait; > +struct page_frag_cache test_frag; nit: Is test_frag used outside of this file? If not, should it be static? ...