[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200906142645.GA1976319@kernel.org>
Date: Sun, 6 Sep 2020 17:26:45 +0300
From: Mike Rapoport <rppt@...nel.org>
To: mateusznosek0@...il.com
Cc: linux-mm@...ck.org, linux-kernel@...r.kernel.org,
akpm@...ux-foundation.org
Subject: Re: [PATCH] mm/mmu_notifier.c: micro-optimization substitute kzalloc
with kmalloc
Hi,
On Sun, Sep 06, 2020 at 01:43:21PM +0200, mateusznosek0@...il.com wrote:
> From: Mateusz Nosek <mateusznosek0@...il.com>
>
> Most fields in struct pointed by 'subscriptions' are initialized explicitly
> after the allocation. By changing kzalloc to kmalloc the call to memset
> is avoided. As the only new code consists of 2 simple memory accesses,
> the performance is increased.
Is there a measurable performance increase?
The __mmu_notifier_register() is not used that frequently to trade off
robustness of kzalloc() for slight (if visible at all) performance gain.
> Signed-off-by: Mateusz Nosek <mateusznosek0@...il.com>
> ---
> mm/mmu_notifier.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/mm/mmu_notifier.c b/mm/mmu_notifier.c
> index 4fc918163dd3..190e198dc5be 100644
> --- a/mm/mmu_notifier.c
> +++ b/mm/mmu_notifier.c
> @@ -625,7 +625,7 @@ int __mmu_notifier_register(struct mmu_notifier *subscription,
> * know that mm->notifier_subscriptions can't change while we
> * hold the write side of the mmap_lock.
> */
> - subscriptions = kzalloc(
> + subscriptions = kmalloc(
> sizeof(struct mmu_notifier_subscriptions), GFP_KERNEL);
> if (!subscriptions)
> return -ENOMEM;
> @@ -636,6 +636,8 @@ int __mmu_notifier_register(struct mmu_notifier *subscription,
> subscriptions->itree = RB_ROOT_CACHED;
> init_waitqueue_head(&subscriptions->wq);
> INIT_HLIST_HEAD(&subscriptions->deferred_list);
> + subscriptions->active_invalidate_ranges = 0;
> + subscriptions->has_itree = false;
> }
>
> ret = mm_take_all_locks(mm);
> --
> 2.20.1
>
>
--
Sincerely yours,
Mike.
Powered by blists - more mailing lists