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 1855BC004C0 for ; Mon, 23 Oct 2023 16:17:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B1F206B00EF; Mon, 23 Oct 2023 12:17:49 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id AD03E6B00F0; Mon, 23 Oct 2023 12:17:49 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9BE566B00F1; Mon, 23 Oct 2023 12:17:49 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 8D1AB6B00EF for ; Mon, 23 Oct 2023 12:17:49 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 3555C160AEB for ; Mon, 23 Oct 2023 16:17:49 +0000 (UTC) X-FDA: 81377232258.20.455B5F2 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf03.hostedemail.com (Postfix) with ESMTP id CAFB32001E for ; Mon, 23 Oct 2023 16:17:46 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=UD2TR978; spf=none (imf03.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1698077867; a=rsa-sha256; cv=none; b=CqgqMImC2wiQHu8L5AakjBfuJU/qOgsr/y9/HvO6W1Ulbs5a6pMCkc28+SVKkKdHx1rd8g NA5PBtEM1I59d4iXhEP0iOG8rJQYzslYI92qpkgc+xSEIFLhjPuQGmslaUJn3hvLUC7Yts FPYlvlPzWxYhn+fvIe1QnGvxPyPq2rg= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=UD2TR978; spf=none (imf03.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1698077867; 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=wJoeaIA6FR7cRFMOHhnvGNO3vbLc3uINcEPUKYT9ywY=; b=KMl9lIwyvit2bpasqXVEa7FGUYsNVMhZ8M9kV1ckDplY6F34z8aAdMFevxjIIorAUoNupq fHnwNFT4UMhr9Jtlj0Yl0VV9sVdZ+K8cj4jgAiEv/SSaZ5Zfqi1mBRbteuDYA2eJA5j3Os GuAxQCslfl8X6oZC+tAKi+m0449qDkw= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.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; bh=wJoeaIA6FR7cRFMOHhnvGNO3vbLc3uINcEPUKYT9ywY=; b=UD2TR978zD7OxJLI8Obx41DbyC 9Z2iRwTpFFTi4LJ3BjtvZDYzJoNqqZ7tlmPrt6tY0xbLwtr75eFzvZv+pJMWlSZgMO/lXbZ+cRznJ 7G+YTEwEO2M1tK/VH0DaObCSrYgGWPiR4+UnAVsUDxbss39LL1e5CnwaN4RmqgMYbxwVmqtmYQDmR dy4yQsPdQxBYI0UfH5VAUawaPjLKE8gQInb3q+cVzRW4SzrXZ82/XkrX+meF52HSb3J2yFBUYS8tk 4ZqWGT+c9/4ddW+4bhjbwze4neoigXzjPPF1zOPOwpL0LoZCOgmUg9OzqlKAMfq5x36Sn2A4pYhxb VebYdxig==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1quxcb-00ElHj-Jv; Mon, 23 Oct 2023 16:17:41 +0000 Date: Mon, 23 Oct 2023 17:17:41 +0100 From: Matthew Wilcox To: wang wei Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] mm/page_alloc: fix the potential memory waste in page_frag_alloc_align Message-ID: References: <20231023154216.376522-1-a929244872@163.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20231023154216.376522-1-a929244872@163.com> X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: CAFB32001E X-Stat-Signature: kf9hz6s8dihw6968jteb4rd6dngfma7f X-Rspam-User: X-HE-Tag: 1698077866-876514 X-HE-Meta: U2FsdGVkX18wjD3kMuPN0Pei38Q5H2QgVu8ffxFAwWC7SSO1PWIhU3CmiHAfbMhkX+jT7dSuf7l5feygKKu4VEtRnZXrj+oOzQTEZHEiS8vyf25coIObkGtJdjqDU5zlJEmxE4VkO+Z7jNXWPZyZ0R+T9DklfAOKoKKxG3HTuwop/rplOzAj2BWP28mrdq2XYD5m9gJEJeaA861qDxYcF6F9DIrXgePHulR2056dgtxzR4pQtmSIuzrIXyirTdEaExJ/Iia16BEUyE72yaYB1jVmbnmR4PqKbCWxEkosPSwvWCy5zXFLfDl9yIuiMMnzMUeNXPAmHFaqRPKkE3G9MaLF8yjR4nFg5wBlyTk5O4w/NfUNqaw/PDKxL12RXVrelOnwNrpkQgmUJynXl7+YpmiVQYa4K8WSc0g93GIjig56ObRia/CpTVT2O3xOYFBLRuDgGErJJerD2z4UMChSKjq8XvoQ6HB0FO/ec8DvTcedIr6leO1AEAQolA7B4XJoPB+ZYqC3VN86CMVwjSYqPJekpA5PqUnxTLpmy8LYi8APKcTMTK1hDI7YhUjyr0aaRf1+0k7BQKDVaDgmG+q4LNVzcPDnK2eemKZR3heSBck79b4BewKLqtfY92TdCrxeE2xi5DQ+NOIyYm1FsXFb04r07lMjeev/2FpqbHFuMQ1IRKjvi0QdjrkeE3Mg2iF8vSCJZBMQcg9uy4oJhJJa2SUKeRIxT1dY+JUCAnsk8VKuYTF8SmdU3GSj82zZTSF98cq8F7BExdx4dcZMRlPxre1k5elsupYrI0b+5q0fFJ1trfjIjl8DJFJtgQjvDfUfy2X6jmKYmPcXLW0uBAY6qi2QbKcvvEupB3//6DSuN6meJ42k8LYnFXo44UyCFsuSfYXpT8s+1TWelF25IGXxF5d048SNLL7KQn47/wkFMWvg2hMjAIpsBDg5tbZHFPuDvk3deFvLnhHZ7BZ98yJ yN+obdSM pFz7vYEAiqpoX2shozIFr8fhBS8AESakEL/ZWwGMWpWimpAfQ/w1MorCqd9EGboGDslj9VV5Pd9eJBolHghEAyVECdNAkndKVqaYD2kWMRzhkYe5SGlpy9DjtoodC0gX64cr2/80uP2a4Uc4b3Kt49GwKkH8cHvFin7XaG+3mj9a0lko2C5p8OFZB1A== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000003, 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 Mon, Oct 23, 2023 at 11:42:16PM +0800, wang wei wrote: > First step, allocating a memory fragment with size 1KB bytes uses > page_frag_alloc_align. It will allocate PAGE_FRAG_CACHE_MAX_SIZE > bytes by __page_frag_cache_refill, store the pointer at nc->va and > then return the last 1KB memory fragment which address is nc->va > + PAGE_FRAG_CACHE_MAX_SIZE - 1KB. The remaining PAGE_FRAG_CACHE_MAX_SIZE > - 1KB bytes of memory can Meet future memory requests. > > Second step, if the caller requests a memory fragment with size > more then PAGE_FRAG_CACHE_MAX_SIZE bytes, page_frag_alloc_align, > it will also allocate PAGE_FRAG_CACHE_MAX_SIZE bytes by > __page_frag_cache_refill, store the pointer at nc->va, and > return NULL. this behavior makes the rest of > PAGE_FRAG_CACHE_MAX_SIZE - 1KB bytes memory at First step are > wasted(allocate from buddy system but not used). We could do this, but have you ever seen this happen, or are you just reading code and looking for problems? If the latter, I think you've misunderstood how this allocator is normally used.