Revision b121186ab1b12e2a96a945d88eae0735b4542158 authored by Alex Shi on 21 August 2012, 23:16:08 UTC, committed by Linus Torvalds on 21 August 2012, 23:45:03 UTC
Commit cfd19c5a9ecf ("mm: only set page->pfmemalloc when ALLOC_NO_WATERMARKS was used") tried to narrow down page->pfmemalloc setting, but it missed some places the pfmemalloc should be set. So, in __slab_alloc, the unalignment pfmemalloc and ALLOC_NO_WATERMARKS cause incorrect deactivate_slab() on our core2 server: 64.73% fio [kernel.kallsyms] [k] _raw_spin_lock | --- _raw_spin_lock | |---0.34%-- deactivate_slab | __slab_alloc | kmem_cache_alloc | | That causes our fio sync write performance to have a 40% regression. Move the checking in get_page_from_freelist() which resolves this issue. Signed-off-by: Alex Shi <alex.shi@intel.com> Acked-by: Mel Gorman <mgorman@suse.de> Cc: David Miller <davem@davemloft.net Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Tested-by: Eric Dumazet <eric.dumazet@gmail.com> Tested-by: Sage Weil <sage@inktank.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent 5ed12f1
File | Mode | Size |
---|---|---|
Kconfig | -rw-r--r-- | 473 bytes |
Makefile | -rw-r--r-- | 251 bytes |
attr.c | -rw-r--r-- | 2.6 KB |
bfind.c | -rw-r--r-- | 4.6 KB |
bitmap.c | -rw-r--r-- | 5.8 KB |
bnode.c | -rw-r--r-- | 11.3 KB |
brec.c | -rw-r--r-- | 13.5 KB |
btree.c | -rw-r--r-- | 8.8 KB |
btree.h | -rw-r--r-- | 5.4 KB |
catalog.c | -rw-r--r-- | 9.2 KB |
dir.c | -rw-r--r-- | 7.7 KB |
extent.c | -rw-r--r-- | 13.5 KB |
hfs.h | -rw-r--r-- | 9.1 KB |
hfs_fs.h | -rw-r--r-- | 8.7 KB |
inode.c | -rw-r--r-- | 18.0 KB |
mdb.c | -rw-r--r-- | 10.4 KB |
part_tbl.c | -rw-r--r-- | 2.9 KB |
string.c | -rw-r--r-- | 3.8 KB |
super.c | -rw-r--r-- | 12.0 KB |
sysdep.c | -rw-r--r-- | 1.0 KB |
trans.c | -rw-r--r-- | 3.4 KB |
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...