[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: More info: 2.1.108 page cache performance on low memory



>>>>> "ST" == Stephen C Tweedie <sct@redhat.com> writes:

ST> Hi all,
ST> OK, a bit more benchmarking is showing bad problems with page ageing.
ST> I've been running 2.1 with a big ramdisk and without, with page ageing
ST> and without.  The results for a simple compile job (make a few
ST> dependency files then compile four .c files) look like this:

ST> 	2.0.34, 6m ram:			1:22

ST> 	2.1.108, 16m ram, 10m ramdisk:
ST> 		With page cache ageing:	Not usable (swap death during boot.)
ST> 		Without cache ageing:	8:47

ST> 	2.1.108, 6m ram:
ST> 		With page cache ageing:	4:14
ST> 		Without cache ageing:	3:22

O.k. Just a few thoughts.
1) We have a minimum size for the buffer cache in percent of physical pages.
   Setting the minimum to 0% may help.

2) If we play with LRU list it may be most practical use page->next and page->prev
   fields for the list, and for truncate_inode_pages && invalidate_inode_pages
do something like:
for(i = 0; i < inode->i_size; i+= PAGE_SIZE) {
	page = find_in_page_cache(inode, i);
	if (page) 
		/* remove it */
		;
}
And remove the inode->i_pages list.  This should be roughly equivalent
to the bforgets needed by truncate anyway so should impose not large
peformance penalty.

Personally I think it is broken to set the limits of cache sizes
(buffer & page) to anthing besides: max=100% min=0% by default.

But now that we have this hand tuneing option in addition to auto
tuning we should experiment with it as well.

Eric

--
This is a majordomo managed list.  To unsubscribe, send a message with
the body 'unsubscribe linux-mm me@address' to: majordomo@kvack.org