mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Christoph Lameter <clameter@sgi.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>,
	Pawel Staszewski <pstaszewski@artcom.pl>,
	LKML <linux-kernel@vger.kernel.org>,
	Adrian Bunk <bunk@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Natalie Protasevich <protasnb@gmail.com>
Subject: Re: 2.6.25-rc7-git2: Reported regressions from 2.6.24
Date: Mon, 31 Mar 2008 11:45:20 -0700 (PDT)	[thread overview]
Message-ID: <Pine.LNX.4.64.0803311123180.6510@schroedinger.engr.sgi.com> (raw)
In-Reply-To: <alpine.LFD.1.00.0803291422160.14670@woody.linux-foundation.org>

On Sat, 29 Mar 2008, Linus Torvalds wrote:

> 
> You don't have a f*cking clue about this cocde that you're supposed to be 
> maintaining, do you?
> 
> See "slab_alloc()". See the code:
> 
> 	if (unlikely((gfpflags & __GFP_ZERO) && object))
> 		memset(object, 0, c->objsize);
> 
> and see how it does it regardless of anything else.

Yes I am very aware of that.

> In short, if *any* code-path calls down to any allocator from that routine 
> with GFP_ZERO set, it's a bug. No ifs, buts or maybes about it. It 
> shouldn't do that, because the actual memset() is done by slab_alloc(), 
> and should not be done ANYWHERE ELSE.
> 
> It has *nothing* to do with "object is too big" or anything else.

It has to do how large objects are allocated through kmalloc_large().
kmalloc_large() is elsewhere called with unfiltered gfpflags and relies 
on zeroing being handled by the page allocator. It can take unfiltered gfp 
flags.

The filtering of __GFP_ZERO that you added avoids the double zeroing for 
the fallback path (which is only called if all the partial lists are empty 
and after the page allocator went through reclaim and did not get the 
large sized memory we wanted). So okay the patch could be a performance 
enhancement. But then it adds the filtering to the hot path instead of the 
code path that containts the kmalloc_large that is executed once in a blue 
moon. The hot path should only filter when we actually decide that we need 
to allocate a new slab from the page allocator.

It seemed to me that the reason for inserting the filtering of __GFP_ZERO 
there was the belief that the page allocator cannot take __GFP_ZERO 
through kmalloc_large() if we are in an interrupt.

The use of kmalloc_large() in __slab_alloc() is a bit strange at this 
point. The cleanup work in 2.6.26 will make this all nice again.

  parent reply	other threads:[~2008-03-31 18:47 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-27 22:53 Rafael J. Wysocki
2008-03-28  0:18 ` Carlos R. Mafra
2008-03-28  0:23   ` Rafael J. Wysocki
2008-03-28  2:30 ` Linus Torvalds
2008-03-28  3:24   ` Christoph Lameter
2008-03-28  4:00     ` Linus Torvalds
2008-03-28 10:48       ` Paweł Staszewski
2008-03-28 17:46         ` Andrew Morton
2008-03-28 21:57           ` Rafael J. Wysocki
2008-03-28 17:15       ` Pekka Enberg
2008-03-28 17:27         ` Linus Torvalds
2008-03-28 18:08           ` Pekka Enberg
2008-03-28 18:20             ` Linus Torvalds
2008-03-28 18:38               ` Christoph Lameter
2008-03-28 18:47               ` Andrew Morton
2008-03-28 18:53                 ` Christoph Lameter
2008-03-28 19:37                 ` Linus Torvalds
2008-03-28 19:59                   ` Linus Torvalds
2008-03-28 19:59               ` Pekka Enberg
2008-03-28 20:24                 ` Linus Torvalds
2008-03-28 18:37           ` Christoph Lameter
2008-03-28 19:32             ` Linus Torvalds
2008-03-28 18:33       ` Christoph Lameter
2008-03-28 19:25         ` Linus Torvalds
2008-03-29 20:42           ` Christoph Lameter
2008-03-29 21:29             ` Linus Torvalds
2008-03-29 23:52               ` Pekka Enberg
2008-03-31 18:56                 ` Christoph Lameter
2008-03-31 18:45               ` Christoph Lameter [this message]
2008-03-28  3:31   ` Yinghai Lu
2008-03-31 10:14     ` Kamalesh Babulal
2008-03-31 12:10       ` Rafael J. Wysocki
2008-03-28 11:29   ` Haavard Skinnemoen
2008-03-28 16:11     ` Rafael J. Wysocki
2008-03-28 16:10   ` Rafael J. Wysocki
2008-03-28 16:47     ` Linus Torvalds
2008-03-28 17:36       ` Adrian Bunk
2008-03-28 20:33         ` Ingo Molnar
2008-03-28 22:28       ` Rafael J. Wysocki
2008-03-31 13:34         ` Ingo Molnar
2008-03-28 10:24 ` Thomas Gleixner
2008-03-28 10:58   ` Thomas Gleixner
2008-03-28 11:00     ` Peter Zijlstra
2008-03-28 11:13       ` Adrian Bunk
2008-03-28 11:16         ` Thomas Gleixner
2008-03-28 11:31           ` Adrian Bunk
2008-03-28 16:17             ` Rafael J. Wysocki
2008-03-28 17:06               ` Adrian Bunk
2008-03-28 20:42               ` Ingo Molnar
2008-03-28 22:33                 ` Rafael J. Wysocki
2008-03-28 11:44         ` Peter Zijlstra
2008-03-28 16:12   ` Rafael J. Wysocki
2008-03-28 16:18     ` Thomas Gleixner
2008-03-28 18:57 ` Mark Lord
2008-03-28 22:37   ` Rafael J. Wysocki

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=Pine.LNX.4.64.0803311123180.6510@schroedinger.engr.sgi.com \
    --to=clameter@sgi.com \
    --cc=akpm@linux-foundation.org \
    --cc=bunk@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=protasnb@gmail.com \
    --cc=pstaszewski@artcom.pl \
    --cc=rjw@sisk.pl \
    --cc=torvalds@linux-foundation.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®