-
-
Notifications
You must be signed in to change notification settings - Fork 28
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
mm: vmpressure: Fix rampant inaccuracies caused by stale data usage
After a period of intense memory pressure is over, it's common for vmpressure to still have old reclaim efficiency data accumulated from this time. When memory pressure starts to rise again, this stale data will factor into vmpressure's calculations, and can cause vmpressure to report an erroneously high pressure. The reverse is possible, too: vmpressure may report pressures that are erroneously low due to stale data that's been stored. Furthermore, since kswapd can still be performing reclaim when there are no failed memory allocations stuck in the page allocator's slow path, vmpressure may still report pressures when there aren't any memory allocations to satisfy. This can cause last-resort memory reclaimers to kill processes to free memory when it's not needed. To fix the rampant stale data, keep track of when there are processes utilizing reclaim in the page allocator's slow path, and reset the accumulated data in vmpressure when a new period of elevated memory pressure begins. Extra measures are taken for the kswapd issue mentioned above by ignoring all reclaim efficiency data reported by kswapd when there aren't any failed memory allocations in the page allocator which utilize reclaim. Note that since sr_lock can now be used from IRQ context, IRQs must be disabled whenever sr_lock is used to prevent deadlocks. Signed-off-by: Sultan Alsawaf <[email protected]> Signed-off-by: Adam W. Willis <[email protected]> Signed-off-by: Carlos Ayrton Lopez Arroyo <[email protected]>
- Loading branch information
1 parent
bba0aa8
commit bb79d2d
Showing
3 changed files
with
75 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters