android_kernel_samsung_msm8976/mm
Michal Hocko ae5ffa6b56 vmstat: do not use deferrable delayed work for vmstat_update
Vinayak Menon has reported that an excessive number of tasks was throttled
in the direct reclaim inside too_many_isolated() because NR_ISOLATED_FILE
was relatively high compared to NR_INACTIVE_FILE.  However it turned out
that the real number of NR_ISOLATED_FILE was 0 and the per-cpu
vm_stat_diff wasn't transferred into the global counter.

vmstat_work which is responsible for the sync is defined as deferrable
delayed work which means that the defined timeout doesn't wake up an idle
CPU.  A CPU might stay in an idle state for a long time and general effort
is to keep such a CPU in this state as long as possible which might lead
to all sorts of troubles for vmstat consumers as can be seen with the
excessive direct reclaim throttling.

This patch basically reverts 39bf6270f5 ("VM statistics: Make timer
deferrable") but it shouldn't cause any problems for idle CPUs because
only CPUs with an active per-cpu drift are woken up since 7cc36bbddde5
("vmstat: on-demand vmstat workers v8") and CPUs which are idle for a
longer time shouldn't have per-cpu drift.

Fixes: 39bf6270f5 (VM statistics: Make timer deferrable)
Signed-off-by: Michal Hocko <mhocko@suse.cz>
Reported-by: Vinayak Menon <vinmenon@codeaurora.org>
Acked-by: Christoph Lameter <cl@linux.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Vladimir Davydov <vdavydov@parallels.com>
Cc: Mel Gorman <mgorman@suse.de>
Cc: Minchan Kim <minchan@kernel.org>
Cc: David Rientjes <rientjes@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Git-commit: ba4877b9ca51f80b5d30f304a46762f0509e1635
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
CRs-Fixed: 802343
Change-Id: I4cb34a859b7cba307268fa529964fd729e833ef3
Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org>
2015-03-11 11:18:13 +05:30
..
backing-dev.c arch: Mass conversion of smp_mb__*() 2014-08-15 11:45:28 -07:00
balloon_compaction.c
bootmem.c mm: concentrate modification of totalram_pages into the mm core 2014-02-07 13:49:40 -08:00
bounce.c mm/bounce.c: fix a regression where MS_SNAP_STABLE (stable pages snapshotting) was ignored 2013-10-13 16:08:33 -07:00
cleancache.c
compaction.c mm/compaction: make isolate_freepages start at pageblock boundary 2014-06-16 13:42:53 -07:00
debug-pagealloc.c mm: Mark free pages as read only 2014-04-18 14:51:25 -07:00
dmapool.c
early_ioremap.c mm: create generic early_ioremap() support 2014-08-15 11:45:23 -07:00
fadvise.c
failslab.c
filemap.c arch: Mass conversion of smp_mb__*() 2014-08-15 11:45:28 -07:00
filemap_xip.c
fremap.c mm: fix use-after-free in sys_remap_file_pages 2014-01-09 12:24:24 -08:00
frontswap.c
highmem.c
huge_memory.c thp: fix copy_page_rep GPF by testing is_huge_zero_pmd once only 2014-01-25 08:27:12 -08:00
hugetlb.c hugetlb: fix copy_hugetlb_page_range() to handle migration/hwpoisoned entry 2014-07-09 11:14:03 -07:00
hugetlb_cgroup.c
hwpoison-inject.c
init-mm.c
internal.h Merge "mm/page_alloc: restrict max order of merging on isolated pageblock Current pageblock isolation logic could isolate each pageblock individually. This causes freepage accounting problem if freepage with pageblock order on isolate pageblock is merged with other freepage on normal pageblock. We can prevent merging by restricting max order of merging to pageblock order if freepage is on isolate pageblock." 2014-12-18 14:23:16 -08:00
interval_tree.c
Kconfig mm: vmscan: support setting of kswapd cpu affinity 2014-11-26 13:04:02 -08:00
Kconfig.debug defconfig: 8994: enable CONFIG_DEBUG_SLUB_PANIC_ON 2014-10-21 14:00:18 -07:00
kmemcheck.c
kmemleak-test.c
kmemleak.c kmemleak : Make kmemleak_stack_scan optional using config 2015-02-04 18:38:40 +05:30
ksm.c ksm: Add showmem notifier 2014-10-06 09:53:55 -07:00
maccess.c
madvise.c mm: add a field to store names for private anonymous memory 2014-06-13 12:05:14 -07:00
Makefile mm: Add notifier framework for showing memory 2014-10-06 09:47:49 -07:00
memblock.c mm/memblock: add memblock_get_current_limit 2014-04-08 09:51:10 -07:00
memcontrol.c memcg: Allow non-root users permission to control memory 2014-12-15 13:13:02 +05:30
memory-failure.c mm/memory-failure.c: don't let collect_procs() skip over processes for MF_ACTION_REQUIRED 2014-06-30 20:09:42 -07:00
memory.c mm: swap: don't delay swap free for fast swap devices 2015-02-27 14:51:32 +05:30
memory_hotplug.c
mempolicy.c Merge upstream tag 'v3.10.49' into msm-3.10 2014-08-20 13:23:09 -07:00
mempool.c
migrate.c Merge upstream linux-stable v3.10.28 into msm-3.10 2014-03-24 14:28:34 -07:00
mincore.c
mlock.c Merge upstream tag 'v3.10.40' into msm-3.10 2014-06-18 13:10:54 -07:00
mm_init.c
mmap.c mm: add a field to store names for private anonymous memory 2014-06-13 12:05:14 -07:00
mmu_context.c
mmu_notifier.c
mmzone.c
mprotect.c mm: add a field to store names for private anonymous memory 2014-06-13 12:05:14 -07:00
mremap.c mm, thp: close race between mremap() and split_huge_page() 2014-06-07 13:25:31 -07:00
msync.c
nobootmem.c mm/nobootmem.c: Drop __init annotation from free_bootmem_late 2014-04-21 15:28:38 -07:00
nommu.c mm: remove free_area_cache 2014-02-07 13:49:41 -08:00
oom_kill.c mm, oom: make dump_tasks public 2014-06-03 13:33:18 -07:00
page-writeback.c mm/page-writeback.c: fix divide by zero in bdi_dirty_limits() 2014-11-25 21:00:10 -08:00
page_alloc.c vmstat: create separate function to fold per cpu diffs into local counters 2015-03-11 11:17:08 +05:30
page_cgroup.c
page_io.c mm: swap: Rate limit swap write errors 2013-11-14 09:27:11 -08:00
page_isolation.c mm/page_alloc: restrict max order of merging on isolated pageblock 2014-12-17 11:51:09 -08:00
pageowner.c debugging: keep track of page owners 2014-03-28 13:33:08 -07:00
pagewalk.c mm: pagewalk: call pte_hole() for VM_PFNMAP during walk_page_range 2015-01-20 16:10:02 +05:30
percpu-km.c
percpu-vm.c
percpu.c percpu: make pcpu_alloc_chunk() use pcpu_mem_free() instead of kfree() 2014-06-07 13:25:37 -07:00
pgtable-generic.c mm: fix TLB flush race between migration, and change_protection_range 2014-01-09 12:24:23 -08:00
process_vm_access.c
quicklist.c
readahead.c
rmap.c mm: rmap: fix use-after-free in __put_anon_vma 2014-07-30 18:41:12 +05:30
shmem.c cope with potentially long ->d_dname() output for shmem/hugetlb 2014-01-09 16:35:41 -08:00
showmem.c mm: Add notifier framework for showing memory 2014-10-06 09:47:49 -07:00
slab.c
slab.h memcg: check that kmem_cache has memcg_params before accessing it 2013-09-07 22:09:58 -07:00
slab_common.c
slob.c
slub.c mm: slub: panic for object and slab errors 2014-10-22 11:16:52 -07:00
sparse-vmemmap.c
sparse.c
swap.c mm: close PageTail race 2014-04-03 12:01:05 -07:00
swap_state.c mm: swap: don't delay swap free for fast swap devices 2015-02-27 14:51:32 +05:30
swapfile.c mm: swap: don't delay swap free for fast swap devices 2015-02-27 14:51:32 +05:30
truncate.c
util.c nick kvfree() from apparmor 2014-09-23 10:37:57 -06:00
vmalloc.c Merge "Merge upstream linux-stable v3.10.28 into msm-3.10" 2014-03-26 23:36:07 -07:00
vmpressure.c
vmscan.c mm: swap: don't delay swap free for fast swap devices 2015-02-27 14:51:32 +05:30
vmstat.c vmstat: do not use deferrable delayed work for vmstat_update 2015-03-11 11:18:13 +05:30
zbud.c zbud: add to mm/ 2013-10-18 18:24:55 -07:00
zswap.c mm, zswap: Fix CPU hotplug callback registration 2014-07-03 09:55:28 -07:00