Skip to contentSkip to conversation

lru_add_drain query

DISCUSSION Ray Bryant 2 participants 2 messages Feb 3, 2005 Memory management

lore
Share & tools
lore

Ray Bryant

author
#0 lore raw

The deferred lru_add operations (e. g. lru_cache_add_active()) defer the
actual addition of a page to the lru list until a batch of such additions
are available. lru_cache_add_active() uses a per cpu variable (lru_add_active_pvecs) to hold the deferred pages.

So, to get the deferred adds to complete (so that the lru list is in a consistent state and we can scan lru list to do some processing) one calls lru_add_drain(). But AFAI can tell, this just drains the local cpu's deferred add queue. Right?

So, here's my question: Why is it that I don't need to call lru_add_drain() on each CPU in the system before I go scan/manipulate the lru list? (i. e. what about deferred adds in other CPU's lru_add_active_pvecs?)

What peice of magic am I missing here?

Thanks,

Signature · 13 lines
-----------------------------------------------
Ray Bryant
512-453-9679 (work)         512-507-7807 (cell)
[email protected]             [email protected]
The box said: "Requires Windows 98 or better",
	 so I installed Linux.
-----------------------------------------------

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
#1 lore raw
Quoted 9 lines · Ray Bryant

The deferred lru_add operations (e. g. lru_cache_add_active()) defer the
actual addition of a page to the lru list until a batch of such additions
are available. lru_cache_add_active() uses a per cpu variable (lru_add_active_pvecs) to hold the deferred pages.

So, to get the deferred adds to complete (so that the lru list is in a consistent state and we can scan lru list to do some processing) one calls lru_add_drain(). But AFAI can tell, this just drains the local cpu's deferred add queue. Right?

Quoted 6 lines

So, here's my question: Why is it that I don't need to call lru_add_drain() on each CPU in the system before I go scan/manipulate the lru list? (i. e. what about deferred adds in other CPU's lru_add_active_pvecs?)

What peice of magic am I missing here?

I don't think you're missing anything. See lru_drain_cache for when you really need to drain another CPU's cache (ie cpu hotplug).

I think the idea is that it doesn't _really_ matter to have a few pages not visible to the LRU lists at any point in time.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>