Port-amd64 archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Merge of rmind-uvmplock branch
Mindaugas, thank you very much for your hard work!!
On Tue, Jun 07, 2011 at 03:16:06AM +0000, YAMAMOTO Takashi wrote:
> the idea is to protect pv chains with object lock, right?
That was the initial driver for me anyway.
Now that this work is in, there are some changes that can be built upon it
to realise the full value -- and hopefully make exit() etc. very cheap.
Looking at this from an x86 perspective but some of the ideas will apply
to other ports:
- My initial idea was to kill the global PV hash and associated locks. To
replace this we would embed a list head in each uvm_map_entry (or wherever
else a mapping is managed). This would be supplied by the caller on each
relevant pmap call - pmap_enter() and so on. PV entries would be added to
and removed from this structure by the pmap module. An initial
implementation could get away with a dumb linked list I think.
- So then PV entries tracked with the mapping instead of globally. Once
pmap_remove_all() has been called pmap_remove() could switch to a
"shortcut" mode and become very quick. From memory I believe all it would
need to do is tear down the software PV entries, and not touch any page or
pmap state. Tearing down pmap state would be deferred to pmap_destroy().
At that point we can then clear out the pmap's uvm_objects and free all
pmap pages in bulk. This would avoid potentially thousands of expensive
scans and atomic updates to the hardware paging structures, which account
for the bulk of expense during exit() etc. If the system is short on
memory we might want a mechanism to switch CPUs away from this pmap if
they are hanging onto it as pmap_kernel - i.e. preventing pmap_destroy()
from being called.
- In the x86 pmap, we have a number retryable sequences when we operate in
the P->V direction. pmap_page_remove() for instance. I think these can
now be simplified as there are fewer concurrency issues, no need for
retryable sequences. Yamamoto-san can you confirm?
Home |
Main Index |
Thread Index |
Old Index