Re: [RFC] high system time & lock contention running large mixed workload
From: Larry Woodman <hidden>
Date: 2009-12-03 22:11:42
Also in:
lkml
On Tue, 2009-12-01 at 21:20 -0500, Rik van Riel wrote:
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.
The attached patch addresses this issue by changing page_check_address() to return -1 if the spin_trylock() fails and page_referenced_one() to return 1 in that path so the page gets moved back to the active list. Also, BTW, check this out: an 8-CPU/16GB system running AIM 7 Compute has 196491 isolated_anon pages. This means that ~6140 processes are somewhere down in try_to_free_pages() since we only isolate 32 pages at a time, this is out of 9000 processes... --------------------------------------------------------------------- active_anon:2140361 inactive_anon:453356 isolated_anon:196491 active_file:3438 inactive_file:1100 isolated_file:0 unevictable:2802 dirty:153 writeback:0 unstable:0 free:578920 slab_reclaimable:49214 slab_unreclaimable:93268 mapped:1105 shmem:0 pagetables:139100 bounce:0 Node 0 Normal free:1647892kB min:12500kB low:15624kB high:18748kB active_anon:7835452kB inactive_anon:785764kB active_file:13672kB inactive_file:4352kB unevictable:11208kB isolated(anon):785964kB isolated(file):0kB present:12410880kB mlocked:11208kB dirty:604kB writeback:0kB mapped:4344kB shmem:0kB slab_reclaimable:177792kB slab_unreclaimable:368676kB kernel_stack:73256kB pagetables:489972kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 202895 total pagecache pages 197629 pages in swap cache Swap cache stats: add 6954838, delete 6757209, find 1251447/2095005 Free swap = 65881196kB Total swap = 67354616kB 3997696 pages RAM 207046 pages reserved 1688629 pages shared 3016248 pages non-shared
Attachments
- page_referenced.patch [text/x-patch] 7402 bytes · preview