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 6034EC27C53 for ; Wed, 19 Jun 2024 12:58:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D669E6B040E; Wed, 19 Jun 2024 08:58:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D16A16B040F; Wed, 19 Jun 2024 08:58:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C05336B0410; Wed, 19 Jun 2024 08:58:00 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id A245F6B040E for ; Wed, 19 Jun 2024 08:58:00 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 69460A11D1 for ; Wed, 19 Jun 2024 12:58:00 +0000 (UTC) X-FDA: 82247640720.02.6BC853A Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255]) by imf04.hostedemail.com (Postfix) with ESMTP id ADFE040004 for ; Wed, 19 Jun 2024 12:57:56 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf04.hostedemail.com: domain of linyunsheng@huawei.com designates 45.249.212.255 as permitted sender) smtp.mailfrom=linyunsheng@huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1718801869; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=RV0Uo5fFrQBrSEYH2HlyLScvm7pl1sfoPn+z84hMoUA=; b=aOGuD8wEh1gif4mge84jlyf1nrkftvtoKgxfmj3AfW7KA8YgdJ0G9cagyGdmrUyjEH4f4p RMfhyP2wUo6N7KNCp9/SmLQieciQVtN7Y4xSJ2tRsSlygd59OQbOr4u+Sg0SVxGgrY6L+h nYPD129UiqCspBT3DxXTjy4uF0dy9Ig= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1718801869; a=rsa-sha256; cv=none; b=X8rf0w6P3SJIKIgvgnhWqlH3AaGRwWin29Qe4S6bKb6mSkKF1WEBIWF70ZiGLPYNCtkXXQ 0l6bm+hZEQdnqNtd4h/NgT+PzSda0s3HYrwh0uPIn4qEi72W+lJ8bN/CAlWiqV7fb6QF3x +VKaj5b439awh8lj65S/Ww6mFL+Lyww= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf04.hostedemail.com: domain of linyunsheng@huawei.com designates 45.249.212.255 as permitted sender) smtp.mailfrom=linyunsheng@huawei.com Received: from mail.maildlp.com (unknown [172.19.163.48]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4W43TF3QhQz1M8v2; Wed, 19 Jun 2024 20:53:37 +0800 (CST) Received: from dggpemf200006.china.huawei.com (unknown [7.185.36.61]) by mail.maildlp.com (Postfix) with ESMTPS id 79F9118007A; Wed, 19 Jun 2024 20:57:52 +0800 (CST) Received: from [10.69.30.204] (10.69.30.204) by dggpemf200006.china.huawei.com (7.185.36.61) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Wed, 19 Jun 2024 20:57:52 +0800 Subject: Re: [PATCH net-next v7 01/15] mm: page_frag: add a test module for page_frag To: wang wei CC: , , , , , Alexander Duyck , Andrew Morton , References: <20240607123819.40694-1-linyunsheng@huawei.com> <20240607123819.40694-2-linyunsheng@huawei.com> <45a90c2.baa1.1902bcfd33a.Coremail.a929244872@163.com> From: Yunsheng Lin Message-ID: Date: Wed, 19 Jun 2024 20:57:51 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.2.0 MIME-Version: 1.0 In-Reply-To: <45a90c2.baa1.1902bcfd33a.Coremail.a929244872@163.com> Content-Type: text/plain; charset="gbk" Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [10.69.30.204] X-ClientProxiedBy: dggems706-chm.china.huawei.com (10.3.19.183) To dggpemf200006.china.huawei.com (7.185.36.61) X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: ADFE040004 X-Stat-Signature: stcwgdm9acus859eu55qn6o1zb5tdh13 X-Rspam-User: X-HE-Tag: 1718801876-220517 X-HE-Meta: U2FsdGVkX1+GIEV0ROSzed3dZoLM2LSgesCr/q3njWbkbz+nupOiXP7UFboGxV7JKrHLCJZNzOx/hufMF30M1PWDyEJfyZqMot5Li6WNzo6y4MDkZzb4qc5sdHia2HGXeWnL8X4K26Fw+RES2/XVjebDM6WUfgQIOG0dA3eGj5PnhWywgwYPPw9z+z/l7V8MspJTfE9TqYri7+bK5zks0wV9SUB7CuCVW8RI4z9kupuWgLAvQnNRYyyWhSOD9We7249278rK0afBmy0MWimKEbErJvDSt2Xt0mX2eLx20gh5OhGALxdGXiNr6uP7kjVJ43ovdl9nxe6BUdwt1uSL2rAje/oLLF68vsl+VeDpVmKqdzBprRVTQoNcQqORDbqywchf40e4r8OuHWN/UyyFJ7V1+sMy7DXSXlGA56CQ8Y17jbRaS8qW0n6Saq0/U+GsfN7riNAVL0h9T683PYt3uOK32M6dIabBKbDqtXcs8+5sN244HPSw2iKOpH5yVkIBvJWZRjlJ0bxJsW2qOF7l75hgM+VrkCP/oDuQKYYNmz9l3Xm0HidI48rZ46gkKNV9AG+uH/3xHiibmVp+ycedi1KFvhuWshbl1xjJo08EgILlwxqiuknvSPzU6MOnvYUVt+4v/5kqXdcUeUwEkK20l6MbhP5hiLKHacUPzLXkupgQ2tv38D7SQyb2XpTrWrlDLtrB1Y4XZt/UjGUppFyWLPidxLDz2vrEJ6JbTKq651EvO39A3FUnEFboA1PBKFHmXc7j231rSYa+7nkysyauQMUCATy04LHuff9dIFffgXxcdyB/ug4lKjknNTa2Wws4C20Z9icqXDc5dH0JtKDyFhzKUMprNwhv6x12q3RH2u3MHc89swQMcFrY4XvnaC2dH3n4BNCcBxbswncFzWOSwj52Zgs5V//uBxO5hRm8PYPrdPDPfHN48TgzgRNIFBGY0qtUkxzI9318cRYjN4Q v0nA4YRy VpAyvmpF2dEFXOaEkE3pcKkOFa8AeviC+nGbPUSW9ah0YSL3/ecn2/fOZXCXq7GU1IJXa5FOWTkrb/RzOme/4kKXLIRJg/wekvNsAACpfsxiG7kKs6PBu1jjzLGz0y/mNOjfeOx8phSOzfuYJnrV5zjzh9yWgA65OFfqtnN+rqhdrKIJLLi5m0VqROE9dq86A/exoCQL345PGFCzK+jucZ6715rMx/LMw3gTfLKF/aoeQVFJ9OuksL2wZVw== 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 2024/6/18 22:45, wang wei wrote: > >>+ >>+static struct objpool_head ptr_pool; >>+static int nr_objs = 512; >>+static atomic_t nthreads; >>+static struct completion wait; >>+static struct page_frag_cache test_frag; >>+ >>+static int nr_test = 5120000; >>+module_param(nr_test, int, 0600); > > > "S_IRUSR | S_IWUSR" is better than "0600". Yes, it is better. But as we do the testing in module init, it seems we could just use module_param(nr_test, int, 0) instead. > > >>+MODULE_PARM_DESC(nr_test, "number of iterations to test"); >>+ >>+static bool test_align; >>+module_param(test_align, bool, 0600); >>+MODULE_PARM_DESC(test_align, "use align API for testing"); >>+ >>+static int test_alloc_len = 2048; >>+module_param(test_alloc_len, int, 0600); >>+MODULE_PARM_DESC(test_alloc_len, "alloc len for testing"); >>+ >>+static int test_push_cpu; >>+module_param(test_push_cpu, int, 0600); >>+MODULE_PARM_DESC(test_push_cpu, "test cpu for pushing fragment"); >>+ >>+static int test_pop_cpu; >>+module_param(test_pop_cpu, int, 0600); >>+MODULE_PARM_DESC(test_pop_cpu, "test cpu for popping fragment"); >>+ >>+static int page_frag_pop_thread(void *arg) >>+{ >>+ struct objpool_head *pool = arg; >>+ int nr = nr_test; >>+ >>+ pr_info("page_frag pop test thread begins on cpu %d\n", >>+ smp_processor_id()); >>+ >>+ while (nr > 0) { >>+ void *obj = objpool_pop(pool); >>+ >>+ if (obj) { >>+ nr--; >>+ page_frag_free(obj); >>+ } else { >>+ cond_resched(); >>+ } >>+ } >>+ >>+ if (atomic_dec_and_test(&nthreads)) >>+ complete(&wait); >>+ >>+ pr_info("page_frag pop test thread exits on cpu %d\n", >>+ smp_processor_id()); >>+ >>+ return 0; >>+} >>+ >>+static int page_frag_push_thread(void *arg) >>+{ >>+ struct objpool_head *pool = arg; >>+ int nr = nr_test; >>+ >>+ pr_info("page_frag push test thread begins on cpu %d\n", >>+ smp_processor_id()); >>+ >>+ while (nr > 0) { >>+ void *va; >>+ int ret; >>+ >>+ if (test_align) >>+ va = page_frag_alloc_align(&test_frag, test_alloc_len, >>+ GFP_KERNEL, SMP_CACHE_BYTES); > > > Every page fragment max size is PAGE_FRAG_CACHE_MAX_SIZE, hence the value of test_alloc_len needs to be checked. > yes, that needs to be checked. limit the test_alloc_len to PGAE_SIZE seems better, as we may fail back to order 0 page. >