Messages in this thread | | | Date | Thu, 25 Sep 2008 02:18:56 +0200 | From | Nick Piggin <> | Subject | Re: [patch] mm: pageable memory allocator (for DRM-GEM?) |
| |
On Tue, Sep 23, 2008 at 12:21:26PM +0200, Thomas Hellström wrote: > Nick, > From my point of view, this is exactly what's needed, although there > might be some different opinions among the > DRM developers. A question: > > Sometimes it's desirable to indicate that a page / object is "cleaned", > which would mean data has moved and is backed by device memory. In that > case one could either free the object or indicate to it that it can > release it's pages. Is freeing / recreating such an object an expensive > operation? Would it, in that case, be possible to add an object / page > "cleaned" function?
Ah, interesting... freeing/recreating isn't _too_ expensive, but it is going to have to allocate a lot of pages (for a big object) and copy a lot of memory. It's strange to say "cleaned", in a sense, because the allocator itself doesn't know it is being used as a writeback cache ;) (and it might get confusing with the shmem implementation because your cleaned != shmem cleaned!).
I understand the operation you need, but it's tricky to make it work in the existing shmem / vm infrastructure I think. Let's call it "dontneed", and I'll add a hook in there we can play with later to see if it helps?
What I could imagine is to have a second backing store (not shmem), which "dontneed" pages go onto, and they simply get discarded rather than swapped out (eg. via the ->shrinker() memory pressure indicator). You could then also register a callback to recreate these parts of memory if they have been discarded then become used again. It wouldn't be terribly difficult come to think of it... would that be useful?
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |