Re: Why active list and inactive list?

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

 



Christoph Lameter wrote:
On Tue, 23 Jan 2007, Balbir Singh wrote:

When you unmap or map, you need to touch the pte entries and know the
pages involved, so shouldn't be equivalent to a list_del and list_add
for each page impacted by the map/unmap operation?

When you unmap and map you must currently get exclusive access to the
cachelines of the pte and the cacheline of the page struct. If we use a
list_move on page->lru then we have would have to update pointers in up
to 4 other page structs. Thus we need exclusive access to 4 additional
cachelines. This triples the number of cachelines touched. Instead of 2
cachelines we need 6.



Yes, good point, I see what you mean in terms of impact. But the trade
off could come from shrink_active_list() which does

list_del(&page->lru)
if (!reclaim_mapped && other_conditions)
	list_add(&page->lru, &l_active);
...

In the case mentioned above, we would triple the cachlines when an area
is mapped/unmapped (which might be acceptable since it is a state change
for the page ;) ). In the trade-off I mentioned, it would happen
everytime reclaim is invoked and it has nothing to do with a page changing
state.

Did I miss something?

--
	Balbir Singh
	Linux Technology Center
	IBM, ISTL
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux