lru_add_drain query
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>
Quoted 9 lines · Ray Bryant
The deferred
lru_addoperations (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'slru_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>