Messages in this thread | | | From | KOSAKI Motohiro <> | Subject | Re: [RFC] high system time & lock contention running large mixed workload | Date | Wed, 2 Dec 2009 11:41:55 +0900 (JST) |
| |
> On 12/01/2009 11:41 AM, Larry Woodman wrote: > > > > Agreed. The attached updated patch only does a trylock in the > > page_referenced() call from shrink_inactive_list() and only for > > anonymous pages when the priority is either 10, 11 or > > 12(DEF_PRIORITY-2). I have never seen a problem like this with active > > pagecache pages and it does not alter the existing shrink_page_list > > behavior. What do you think about this??? > This is reasonable, except for the fact that pages that are moved > to the inactive list without having the referenced bit cleared are > guaranteed to be moved back to the active list. > > You'll be better off without that excess list movement, by simply > moving pages directly back onto the active list if the trylock > fails. > > Yes, this means that page_referenced can now return 3 different > return values (not accessed, accessed, lock contended), which > should probably be an enum so we can test for the values > symbolically in the calling functions. > > That way only pages where we did manage to clear the referenced bit > will be moved onto the inactive list. This not only reduces the > amount of excess list movement, it also makes sure that the pages > which do get onto the inactive list get a fair chance at being > referenced again, instead of potentially being flooded out by pages > where the trylock failed.
Agreed.
> A minor nitpick: maybe it would be good to rename the "try" parameter > to "noblock". That more closely matches the requested behaviour.
Another minor nit: probably we have to rename page_referenced(). it imply test reference bit. but we use it for clear reference bit in shrink_active_list.
| |