From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1161365Ab2GLS2K (ORCPT ); Thu, 12 Jul 2012 14:28:10 -0400 Received: from mx1.redhat.com ([209.132.183.28]:26942 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932849Ab2GLS2H (ORCPT ); Thu, 12 Jul 2012 14:28:07 -0400 Date: Thu, 12 Jul 2012 20:27:28 +0200 From: Andrea Arcangeli To: Rik van Riel Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, Hillf Danton , Dan Smith , Peter Zijlstra , Linus Torvalds , Andrew Morton , Thomas Gleixner , Ingo Molnar , Paul Turner , Suresh Siddha , Mike Galbraith , "Paul E. McKenney" , Lai Jiangshan , Bharata B Rao , Lee Schermerhorn , Johannes Weiner , Srivatsa Vaddagiri , Christoph Lameter , Alex Shi , Mauricio Faria de Oliveira , Konrad Rzeszutek Wilk , Don Morris , Benjamin Herrenschmidt Subject: Re: [PATCH 20/40] autonuma: alloc/free/init mm_autonuma Message-ID: <20120712182728.GM20382@redhat.com> References: <1340888180-15355-1-git-send-email-aarcange@redhat.com> <1340888180-15355-21-git-send-email-aarcange@redhat.com> <4FF06DBD.6020901@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4FF06DBD.6020901@redhat.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Rik, On Sun, Jul 01, 2012 at 11:33:17AM -0400, Rik van Riel wrote: > On 06/28/2012 08:56 AM, Andrea Arcangeli wrote: > > > diff --git a/kernel/fork.c b/kernel/fork.c > > index 0adbe09..3e5a0d9 100644 > > --- a/kernel/fork.c > > +++ b/kernel/fork.c > > @@ -527,6 +527,8 @@ static void mm_init_aio(struct mm_struct *mm) > > > > static struct mm_struct *mm_init(struct mm_struct *mm, struct task_struct *p) > > { > > + if (unlikely(alloc_mm_autonuma(mm))) > > + goto out_free_mm; > > atomic_set(&mm->mm_users, 1); > > atomic_set(&mm->mm_count, 1); > > init_rwsem(&mm->mmap_sem); > > I wonder if it would be possible to defer the allocation > of the mm_autonuma struct to knuma_scand, so short lived > processes never have to allocate and free the mm_autonuma > structure. > > That way we only have a function call at exit time, and > the branch inside kfree that checks for a null pointer. It would be possible to convert them to prepare_mm/task_autonuma (the mm side especially would be a branch once in a while) but it would then become impossible to inherit the mm/task stats across fork/clone. Right now the default is to reset them, but two sysfs switches control that, and I wouldn't drop those until I've the time to experiment how large kernel builds are affected by enabling the stats inheritance. Right now kernel builds are unaffected because of the default stat-resetting behavior and gcc too quick to be measured.