Thread (21 messages) 21 messages, 6 authors, 2006-02-08

Re: [PATCH] mm: implement swap prefetching

From: Con Kolivas <hidden>
Date: 2006-02-07 10:54:33
Also in: lkml

On Tuesday 07 February 2006 17:51, Nick Piggin wrote:
Con Kolivas wrote:
quoted
On Tue, 7 Feb 2006 04:00 pm, Nick Piggin wrote:
quoted
Con Kolivas wrote:
quoted
On Tue, 7 Feb 2006 02:08 pm, Nick Piggin wrote:
quoted
prefetch_get_page is doing funny things with zones and nodes /
zonelists (eg. 'We don't prefetch into DMA' meaning something like
'this only works on i386 and x86-64').
Hrm? It's just a generic thing to do; I'm not sure I follow why it's
i386 and x86-64 only. Every architecture has ZONE_NORMAL so it will
prefetch there.
I don't think every architecture has ZONE_NORMAL.
!ZONE_DMA they all have, no?
Don't think so. IIRC ppc64 has only ZONE_DMA although may have picked up
DMA32 now (/me boots the G5). 
/me looks around desperately for some hardware he has that Nick might not and 
sees only a VIC20 and decides this won't represent him very well in the 
underwear bulge stakes

Andrew I think I see why your G5 didn't see any benefit with swap prefetching.
quoted
quoted
Workstations can have 2 or more dual core CPUs with multiple threads or
NUMA these days. Desktops and laptops will probably eventually gain more
cores and threads too.
While I am aware of the hardware changes out there I still doubt the
scalability issues you're concerned about affect a desktop. The code cost
and complexity will increase substantially yet I'm not sure that will be
for any gain to the targetted users.
Possibly. Why wouldn't you want swap prefetching on servers though?
Especially on some kind of shell server, or other internet server
where load could be really varied.
One of the users describing benefit from the current patch runs it on a 
multiuser X server where the time taken for login is substantially reduced 
after another user has logged out. The fact that the pages are back in ram, 
be it on the wrong numa node or not, far outweighs the speed disadvantage of 
reading from swap. I don't imagine that having per pgdat sets of 
swap_prefetch data is worth it. Once we've hit swap we really bugger it all 
up anyway. I'm not even sure what exactly you want swap prefetching to do 
here instead? I could make the accounting more numa aware but the accounting 
doesn't need to be remotely accurate, just conservative.
quoted
quoted
What if you want to prefetch when there is slight activity going on
though?
I don't. I want this to not cost us anything during any activity.
So if you have say some networking running (p2p or something), then it
may not ever prefetch?
Where to draw the line could be debated to death. The difference between a p2p 
app running slowly in the background and a low bandwidth samba server would 
be indistinguishable. Avoiding swap prefetching with any activity is 
definitely going to do the least harm regardless of the workload.
quoted
quoted
What if your pagecache has filled memory with useless stuff (which would
appear to be the case with updatedb).
There is no way the vm will ever be smart enough to say "this is crap,
throw it out and prefetch some good stuff", so it doesn't matter.
It can do a lot better about throwing out updatedb type stuff.
Indeed some of the clock pro patches certainly seem to be heading that way. A 
pipe dream is to get some variant of those included and have clock pro 
swapped data to select the prefetched pages smarter than just 
most-recently-used. Clearly that can wait since even our VM doesn't have it 
yet.
Actually I had thought the point of this was to page in stuff after the
updatedb run, but it would appear that it won't do this because updatedb
will leave the pagecache full...
The most common scenario where it does help is after running some memory 
intensive hog and then stopping the memory intensive work. Opening and 
closing openoffice is a beautiful example. Another real world one that hits 
me regularly is printing a high resolution picture needs heaps of ram but 
only for a short time.  After this time most everything else is swapped out. 
I find swap prefetching helps massively here. Some people's machines seem to 
swap easily just copying an ISO image or encoding a video.
quoted
I'm open to code suggestions and appreciate any outside help.
Hopefully you have a bit to go on. 
I do and thank you for your comments.
I still see difficult problems that 
I'm not sure how can be solved.
Haha I seem to _only_ ever hack on things that you describe as having 
difficult problems :P
quoted
quoted
If it is going to be off by default, why couldn't they
echo 10 > /proc/sys/vm/swappiness rather than turning it on?
Because we still swap no matter what the sysctl setting is, which makes
it even more useful in my opinion for those who aggressively set this
tunable.
Sounds like we need to do more basic VM tuning as well.
That would be a given at any time in the past, present or future.

Cheers,
Con

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help