You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
KAMEZAWA Hiroyuki
ac34a1a3c3
memcg: fix direct softlimit reclaim to be called in limit path
...
Commit d149e3b25d
("memcg: add the soft_limit reclaim in global direct
reclaim") adds a softlimit hook to shrink_zones(). By this, soft limit
is called as
try_to_free_pages()
do_try_to_free_pages()
shrink_zones()
mem_cgroup_soft_limit_reclaim()
Then, direct reclaim is memcg softlimit hint aware, now.
But, the memory cgroup's "limit" path can call softlimit shrinker.
try_to_free_mem_cgroup_pages()
do_try_to_free_pages()
shrink_zones()
mem_cgroup_soft_limit_reclaim()
This will cause a global reclaim when a memcg hits limit.
This is bug. soft_limit_reclaim() should be called when
scanning_global_lru(sc) == true.
And the commit adds a variable "total_scanned" for counting softlimit
scanned pages....it's not "total". This patch removes the variable and
update sc->nr_scanned instead of it. This will affect shrink_slab()'s
scan condition but, global LRU is scanned by softlimit and I think this
change makes sense.
TODO: avoid too much scanning of a zone when softlimit did enough work.
Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
Cc: Ying Han <yinghan@google.com>
Cc: Michal Hocko <mhocko@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
14 years ago
..
Kconfig
mm: cleancache core ops functions and config
14 years ago
Kconfig.debug
…
Makefile
mm: cleancache core ops functions and config
14 years ago
backing-dev.c
backing-dev: Kill set but not used var in bdi_debug_stats_show()
14 years ago
bootmem.c
crash_dump: export is_kdump_kernel to modules, consolidate elfcorehdr_addr, setup_elfcorehdr and saved_max_pfn
14 years ago
bounce.c
…
cleancache.c
mm: cleancache core ops functions and config
14 years ago
compaction.c
mm: compaction: abort compaction if too many pages are isolated and caller is asynchronous V2
14 years ago
debug-pagealloc.c
…
dmapool.c
…
fadvise.c
…
failslab.c
…
filemap.c
more conservative S_NOSEC handling
14 years ago
filemap_xip.c
mm: Convert i_mmap_lock to a mutex
14 years ago
fremap.c
mm: don't access vm_flags as 'int'
14 years ago
highmem.c
…
huge_memory.c
mm: remove khugepaged double thp vmstat update with CONFIG_NUMA=n
14 years ago
hugetlb.c
mm: fix negative commitlimit when gigantic hugepages are allocated
14 years ago
hwpoison-inject.c
Fix common misspellings
14 years ago
init-mm.c
mm: convert mm->cpu_vm_cpumask into cpumask_var_t
14 years ago
internal.h
mm: nommu: sort mm->mmap list properly
14 years ago
kmemcheck.c
…
kmemleak-test.c
…
kmemleak.c
kmemleak: Do not return a pointer to an object that kmemleak did not get
14 years ago
ksm.c
ksm: fix NULL pointer dereference in scan_get_next_rmap_item()
14 years ago
maccess.c
maccess,probe_kernel: Make write/read src const void *
14 years ago
madvise.c
…
memblock.c
mm/memblock: properly handle overlaps and fix error path
14 years ago
memcontrol.c
mm: move shmem prototypes to shmem_fs.h
14 years ago
memory-failure.c
mm/memory-failure.c: fix spinlock vs mutex order
14 years ago
memory.c
mm: move vmtruncate_range to truncate.c
14 years ago
memory_hotplug.c
mm, hotplug: protect zonelist building with zonelists_mutex
14 years ago
mempolicy.c
mm: proc: move show_numa_map() to fs/proc/task_mmu.c
14 years ago
mempool.c
…
migrate.c
migrate: don't account swapcache as shmem
14 years ago
mincore.c
…
mlock.c
mm: don't access vm_flags as 'int'
14 years ago
mm_init.c
…
mmap.c
mm: get rid of the most spurious find_vma_prev() users
14 years ago
mmu_context.c
…
mmu_notifier.c
…
mmzone.c
…
mprotect.c
…
mremap.c
mm: Convert i_mmap_lock to a mutex
14 years ago
msync.c
…
nobootmem.c
memblock/nobootmem: remove unneeded code from alloc_bootmem_node_high()
14 years ago
nommu.c
nommu: add page alignment to mmap
14 years ago
oom_kill.c
oom: replace PF_OOM_ORIGIN with toggling oom_score_adj
14 years ago
page-writeback.c
Merge branch 'for-2.6.39/core' of git://git.kernel.dk/linux-2.6-block
14 years ago
page_alloc.c
Revert "mm: fail GFP_DMA allocations when ZONE_DMA is not configured"
14 years ago
page_cgroup.c
memcg: fix init_page_cgroup nid with sparsemem
14 years ago
page_io.c
…
page_isolation.c
…
pagewalk.c
…
percpu-km.c
…
percpu-vm.c
…
percpu.c
Merge branch 'for-2.6.40' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu
14 years ago
pgtable-generic.c
…
prio_tree.c
sanitize <linux/prefetch.h> usage
14 years ago
quicklist.c
…
readahead.c
readahead: readahead page allocations are OK to fail
14 years ago
rmap.c
mm/memory-failure.c: fix spinlock vs mutex order
14 years ago
shmem.c
tmpfs: add shmem_read_mapping_page_gfp
14 years ago
slab.c
SLAB: Record actual last user of freed objects.
14 years ago
slob.c
…
slub.c
slub: always align cpu_slab to honor cmpxchg_double requirement
14 years ago
sparse-vmemmap.c
…
sparse.c
Fix common misspellings
14 years ago
swap.c
mm: batch activate_page() to reduce lock contention
14 years ago
swap_state.c
…
swapfile.c
mm: move shmem prototypes to shmem_fs.h
14 years ago
thrash.c
vmscan: implement swap token priority aging
14 years ago
truncate.c
mm: fix assertion mapping->nrpages == 0 in end_writeback()
14 years ago
util.c
mm: nommu: sort mm->mmap list properly
14 years ago
vmalloc.c
Merge branch 'upstream/tidy-xen-mmu-2.6.39' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen
14 years ago
vmscan.c
memcg: fix direct softlimit reclaim to be called in limit path
14 years ago
vmstat.c
mm, mem-hotplug: update pcp->stat_threshold when memory hotplug occur
14 years ago