On Tue, 18 May 2010 23:11:42 +0200, Daniel Vetter daniel.vet...@ffwll.ch
wrote:
Hi all,
This patch series implements the fair-lru eviction Chris Wilson already
posted with a twist. It's essentially the same idea algorithm.
Differnences versus his patch:
- Doesn't do any allocations while scanning.
- Implemented in drm_mm.c
In other words, this should also be usable by ttm. The idea is simple:
Scan through the lru, marking objects as evictable until there is a
large area of memory free/free-able. Then walk through all the scanned
objects in reverse, checking which ones fall into this hole. Finally
evicting them.
Comments, ideas highly welcome.
The next adaptation I did was to clean up evict_something to add objects
from the inactive, active!pinned!write, flushing!pinned,
active!pinnedwrite lists. This reduces the logic in evict_something to
a single scan over the available objects in LRU order.
We still need the move-to-inactive-tail upon access by the CPU, and I
think it is acceptable to maintain our preference of the GPU over the CPU.
Recovering memory from the CPU is comparatively cheap.
Comparing 'while :; do yes /tmp/yes; done cairo-perf-trace', there is
no significant delta between the fair LRU and current. I'll rebase my
evict_something() on top of your drm_mm, and rerun the tests.
--
Chris Wilson, Intel Open Source Technology Centre
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx