All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vlastimil Babka <vbabka@suse.cz>
To: Roman Gushchin <guro@fb.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	linux-api@vger.kernel.org, Michal Hocko <mhocko@kernel.org>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Christoph Lameter <cl@linux.com>,
	David Rientjes <rientjes@google.com>,
	Joonsoo Kim <iamjoonsoo.kim@lge.com>,
	Mel Gorman <mgorman@techsingularity.net>,
	Matthew Wilcox <willy@infradead.org>
Subject: Re: [PATCH v3 2/7] mm, slab/slub: introduce kmalloc-reclaimable caches
Date: Fri, 20 Jul 2018 11:35:04 +0200	[thread overview]
Message-ID: <32c05b49-6703-08c2-bacf-ee070082d5ae@suse.cz> (raw)
In-Reply-To: <20180719181613.GA26595@castle.DHCP.thefacebook.com>

On 07/19/2018 08:16 PM, Roman Gushchin wrote:
>>  	is_dma = !!(flags & __GFP_DMA);
>>  #endif
>>  
>> -	return is_dma;
>> +	is_reclaimable = !!(flags & __GFP_RECLAIMABLE);
>> +
>> +	/*
>> +	 * If an allocation is botth __GFP_DMA and __GFP_RECLAIMABLE, return
>                                  ^^
> 			       typo
>> +	 * KMALLOC_DMA and effectively ignore __GFP_RECLAIMABLE
>> +	 */
>> +	return (is_dma * 2) + (is_reclaimable & !is_dma);
> 
> Maybe
> is_dma * KMALLOC_DMA + (is_reclaimable && !is_dma) * KMALLOC_RECLAIM
> looks better?

I think I meant to do that but forgot, thanks.

>>  }
>>  
>>  /*
>> diff --git a/mm/slab_common.c b/mm/slab_common.c
>> index 4614248ca381..614fb7ab8312 100644
>> --- a/mm/slab_common.c
>> +++ b/mm/slab_common.c
>> @@ -1107,10 +1107,21 @@ void __init setup_kmalloc_cache_index_table(void)
>>  	}
>>  }
>>  
>> -static void __init new_kmalloc_cache(int idx, slab_flags_t flags)
>> +static void __init
>> +new_kmalloc_cache(int idx, int type, slab_flags_t flags)
>>  {
>> -	kmalloc_caches[KMALLOC_NORMAL][idx] = create_kmalloc_cache(
>> -					kmalloc_info[idx].name,
>> +	const char *name;
>> +
>> +	if (type == KMALLOC_RECLAIM) {
>> +		flags |= SLAB_RECLAIM_ACCOUNT;
>> +		name = kasprintf(GFP_NOWAIT, "kmalloc-rcl-%u",
>> +						kmalloc_info[idx].size);
>> +		BUG_ON(!name);
> 
> I'd replace this with WARN_ON() and falling back to kmalloc_info[idx].name.

It's basically a copy/paste of the dma-kmalloc code. If that triggers,
it means somebody was changing the code and introduced a wrong order (as
Mel said). A system that genuinely has no memory for that printf at this
point, would not get very far anyway...

>> +	} else {
>> +		name = kmalloc_info[idx].name;
>> +	}
>> +
>> +	kmalloc_caches[type][idx] = create_kmalloc_cache(name,
>>  					kmalloc_info[idx].size, flags, 0,
>>  					kmalloc_info[idx].size);
>>  }


  reply	other threads:[~2018-07-20  9:37 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-18 13:36 [PATCH v3 0/7] kmalloc-reclaimable caches Vlastimil Babka
2018-07-18 13:36 ` [PATCH v3 1/7] mm, slab: combine kmalloc_caches and kmalloc_dma_caches Vlastimil Babka
2018-07-19  8:10   ` Mel Gorman
2018-07-20  9:30     ` Vlastimil Babka
2018-07-30 15:38   ` Christopher Lameter
2018-07-18 13:36 ` [PATCH v3 2/7] mm, slab/slub: introduce kmalloc-reclaimable caches Vlastimil Babka
2018-07-19  8:23   ` Mel Gorman
2018-07-20  9:32     ` Vlastimil Babka
2018-07-19 18:16   ` Roman Gushchin
2018-07-19 18:16     ` Roman Gushchin
2018-07-20  9:35     ` Vlastimil Babka [this message]
2018-07-30 15:41   ` Christopher Lameter
2018-07-18 13:36 ` [PATCH v3 3/7] mm, slab: allocate off-slab freelists as reclaimable when appropriate Vlastimil Babka
2018-07-19  8:35   ` Mel Gorman
2018-07-20  9:37     ` Vlastimil Babka
2018-07-30 15:45   ` Christopher Lameter
2018-07-18 13:36 ` [PATCH v3 4/7] dcache: allocate external names from reclaimable kmalloc caches Vlastimil Babka
2018-07-19  8:42   ` Mel Gorman
2018-07-18 13:36 ` [PATCH v3 5/7] mm: rename and change semantics of nr_indirectly_reclaimable_bytes Vlastimil Babka
2018-07-30 15:46   ` Christopher Lameter
2018-07-18 13:36 ` [PATCH v3 6/7] mm, proc: add KReclaimable to /proc/meminfo Vlastimil Babka
2018-07-18 13:36 ` [PATCH v3 7/7] mm, slab: shorten kmalloc cache names for large sizes Vlastimil Babka
2018-07-19  8:46   ` Mel Gorman
2018-07-30 15:48   ` Christopher Lameter
2018-07-31  8:55     ` Vlastimil Babka
2018-07-19 19:53 ` [PATCH v3 0/7] kmalloc-reclaimable caches Roman Gushchin
2018-07-19 19:53   ` Roman Gushchin
2018-07-20  9:45   ` Vlastimil Babka

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=32c05b49-6703-08c2-bacf-ee070082d5ae@suse.cz \
    --to=vbabka@suse.cz \
    --cc=akpm@linux-foundation.org \
    --cc=cl@linux.com \
    --cc=guro@fb.com \
    --cc=hannes@cmpxchg.org \
    --cc=iamjoonsoo.kim@lge.com \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mgorman@techsingularity.net \
    --cc=mhocko@kernel.org \
    --cc=rientjes@google.com \
    --cc=willy@infradead.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.