Subject: Re: kernel map entry merging and PR 24039
To: YAMAMOTO Takashi <yamt@mwd.biglobe.ne.jp>
From: Andrew Brown <atatat@atatdot.net>
List: tech-kern
Date: 12/03/2004 20:18:57
On Fri, Dec 03, 2004 at 02:38:48PM +0900, YAMAMOTO Takashi wrote:
>> >and of course, regardless of what pmap(1) shows, you always have
>> >>=1000 reserved entries.
>> 
>> i do?  where?
>
>see MAX_KMAPENT.

ah, in this clause:

	if (map->flags & VM_MAP_INTRSAFE || cold) {
		...
		if (__predict_false(me == NULL)) {
			panic("uvm_mapent_alloc: out of static map entries, "
			    "check MAX_KMAPENT (currently %d)",
			    MAX_KMAPENT);
		}
		...

VM_MAP_INTRSAFE is only set for (afaict) the kmem_map submap and
mb_map submap, and cold is only true until clocks are started.

>> the main point is that whether you merge or not, you can *always* get
>> into a situation where you need to allocate in order to de-allocate.
>> 
>> there's nothing stopping me from allocating three contiguous pages
>> (covered by one map entry) and then freeing the middle one when
>> there's no free memory left.  not merging map entries when possible
>> simply makes this more likely, afaict.
>
>we're talking about pool(9) and its friends, which never do such a thing.

so pools never deallocate?  or they only deallocate contiguous chunks
that won't split a map entry.

i'm sorry, but i'm becoming a tad confused.  where's the pr for this
again?  i need to go review the background a little.

-- 
|-----< "CODE WARRIOR" >-----|
codewarrior@daemon.org             * "ah!  i see you have the internet
twofsonet@graffiti.com (Andrew Brown)                that goes *ping*!"
werdna@squooshy.com       * "information is power -- share the wealth."