mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
mm: remove reclaim and compaction retry approximations
If per-zone LRU accounting is available then there is no point approximating whether reclaim and compaction should retry based on pgdat statistics. This is effectively a revert of "mm, vmstat: remove zone and node double accounting by approximating retries" with the difference that inactive/active stats are still available. This preserves the history of why the approximation was retried and why it had to be reverted to handle OOM kills on 32-bit systems. Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Mel Gorman <[email protected]> Acked-by: Johannes Weiner <[email protected]> Acked-by: Minchan Kim <[email protected]> Cc: Michal Hocko <[email protected]> Cc: Vlastimil Babka <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
bb4cc2bea6
commit
5a1c84b404
8 changed files with 39 additions and 58 deletions
|
|
@ -2462,6 +2462,7 @@ void account_page_dirtied(struct page *page, struct address_space *mapping)
|
|||
|
||||
mem_cgroup_inc_page_stat(page, MEM_CGROUP_STAT_DIRTY);
|
||||
__inc_node_page_state(page, NR_FILE_DIRTY);
|
||||
__inc_zone_page_state(page, NR_ZONE_WRITE_PENDING);
|
||||
__inc_node_page_state(page, NR_DIRTIED);
|
||||
__inc_wb_stat(wb, WB_RECLAIMABLE);
|
||||
__inc_wb_stat(wb, WB_DIRTIED);
|
||||
|
|
@ -2483,6 +2484,7 @@ void account_page_cleaned(struct page *page, struct address_space *mapping,
|
|||
if (mapping_cap_account_dirty(mapping)) {
|
||||
mem_cgroup_dec_page_stat(page, MEM_CGROUP_STAT_DIRTY);
|
||||
dec_node_page_state(page, NR_FILE_DIRTY);
|
||||
dec_zone_page_state(page, NR_ZONE_WRITE_PENDING);
|
||||
dec_wb_stat(wb, WB_RECLAIMABLE);
|
||||
task_io_account_cancelled_write(PAGE_SIZE);
|
||||
}
|
||||
|
|
@ -2739,6 +2741,7 @@ int clear_page_dirty_for_io(struct page *page)
|
|||
if (TestClearPageDirty(page)) {
|
||||
mem_cgroup_dec_page_stat(page, MEM_CGROUP_STAT_DIRTY);
|
||||
dec_node_page_state(page, NR_FILE_DIRTY);
|
||||
dec_zone_page_state(page, NR_ZONE_WRITE_PENDING);
|
||||
dec_wb_stat(wb, WB_RECLAIMABLE);
|
||||
ret = 1;
|
||||
}
|
||||
|
|
@ -2785,6 +2788,7 @@ int test_clear_page_writeback(struct page *page)
|
|||
if (ret) {
|
||||
mem_cgroup_dec_page_stat(page, MEM_CGROUP_STAT_WRITEBACK);
|
||||
dec_node_page_state(page, NR_WRITEBACK);
|
||||
dec_zone_page_state(page, NR_ZONE_WRITE_PENDING);
|
||||
inc_node_page_state(page, NR_WRITTEN);
|
||||
}
|
||||
unlock_page_memcg(page);
|
||||
|
|
@ -2839,6 +2843,7 @@ int __test_set_page_writeback(struct page *page, bool keep_write)
|
|||
if (!ret) {
|
||||
mem_cgroup_inc_page_stat(page, MEM_CGROUP_STAT_WRITEBACK);
|
||||
inc_node_page_state(page, NR_WRITEBACK);
|
||||
inc_zone_page_state(page, NR_ZONE_WRITE_PENDING);
|
||||
}
|
||||
unlock_page_memcg(page);
|
||||
return ret;
|
||||
|
|
|
|||
Loading…
Reference in a new issue