mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Jinyu Tang <tjytimi@163.com>
To: rppt@kernel.org
Cc: akpm@linux-foundation.org, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org, Jinyu Tang <tjytimi@163.com>
Subject: [PATCH v2] memblock: avoid some repeat when add new range
Date: Wed, 15 Jun 2022 17:40:15 +0800	[thread overview]
Message-ID: <20220615094015.3672-1-tjytimi@163.com> (raw)

The worst case is that the new memory range overlaps all existing
regions,which need type->cnt + 1 free area of struct memblock_region.
So if type->cnt + 1 + type->cnt is less than type->max,we can insert
regions directly.And becase of merge operation in the end of function,
tpye->cnt increase slowly for many cases.So this patch can avoid
unnecessary repeat for many cases when add new memory range.

Signed-off-by: Jinyu Tang <tjytimi@163.com>
---
V1 -> V2: 1.Change the code as reviewer suggestions
           2.Add comment in the code
           3.Move the code above the repeat lable, because if reapeat
           code executed twice, insert is already true and don't need
           to test

 mm/memblock.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/mm/memblock.c b/mm/memblock.c
index e4f03a6e8..e94661fd3 100644
--- a/mm/memblock.c
+++ b/mm/memblock.c
@@ -593,6 +593,17 @@ static int __init_memblock memblock_add_range(struct memblock_type *type,
 		type->total_size = size;
 		return 0;
 	}
+
+	/*
+	 * The max free regions needed is when new range overlaps all existing
+	 * regions, which will cost type->cnt + 1 free regions. So if
+	 * type->cnt * 2 + 1 is less than type->max, We can confirmed
+	 * that there is enough number of regions, and we can insert
+	 * regions directly.
+	 */
+	if (type->cnt * 2 + 1 < type->max)
+		insert = true;
+
 repeat:
 	/*
 	 * The following is executed twice.  Once with %false @insert and
-- 
2.30.2


             reply	other threads:[~2022-06-15  9:40 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-15  9:40 Jinyu Tang [this message]
2022-06-26 14:05 ` Mike Rapoport

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220615094015.3672-1-tjytimi@163.com \
    --to=tjytimi@163.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=rppt@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®