Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 15 Jul 2002 15:29:35 -0400 (EDT)
From:      John Baldwin <jhb@FreeBSD.org>
To:        "Alan L. Cox" <alc@imimic.com>
Cc:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org, Alan Cox <alc@FreeBSD.org>
Subject:   Re: cvs commit: src/sys/alpha/alpha pmap.c src/sys/vm vm_page.c
Message-ID:  <XFMail.20020715152935.jhb@FreeBSD.org>
In-Reply-To: <3D331F9E.3D48367B@imimic.com>

next in thread | previous in thread | raw e-mail | index | archive | help

On 15-Jul-2002 Alan L. Cox wrote:
> John Baldwin wrote:
>> 
>> On 14-Jul-2002 Alan Cox wrote:
>> > alc         2002/07/14 16:51:55 PDT
>> >
>> >   Modified files:
>> >     sys/alpha/alpha      pmap.c
>> >     sys/vm               vm_page.c
>> >   Log:
>> >    o Lock page queue accesses by vm_page_wire() that aren't
>> >      within a critical section.
>> >    o Assert that the page queues lock is held in vm_page_wire()
>> >      unless an Alpha.
>> 
>> Even in a critical section you still need the lock to ensure you
>> don't read stale data and to prevent others from writing to them
>> out from under you.
> 
> Yes, I agree.
> 
>> If the critical section in question is for pmap_growkernel(), then
>> I think you can actually remove it anyways.
> 
> It is.  The solution that I have in mind is to introduce a new flag,
> VM_ALLOC_WIRED, to vm_page_alloc() that requests allocation of a wired
> page.  Thus, the page's wired count can be initialized to 1 before the
> (spin) mutex on the free queues is released.
> 
> In addition to addressing this particular problem, VM_ALLOC_WIRED will
> find general use in replacing code that looks like:
> 
>       m = vm_page_alloc(...);
>       ...
>       vm_page_lock_queues();
>       vm_page_wire(m);
>       vm_page_unlock_queues();
> 
> Regards,
> Alan
> 
> P.S. The scattered placement of wired pages in the physical memory is
> the chief reason why large contigmalloc()s fail on long-running
> systems.  This flag could be used to help address that.

Sounds great!

-- 

John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.20020715152935.jhb>