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 |
---|---|---|
AUTHORS | -rw-r--r-- | 2.6 KB |
CHANGES | -rw-r--r-- | 46.2 KB |
Kconfig | -rw-r--r-- | 7.2 KB |
Makefile | -rw-r--r-- | 614 bytes |
README | -rw-r--r-- | 38.3 KB |
TODO | -rw-r--r-- | 5.2 KB |
asn1.c | -rw-r--r-- | 14.9 KB |
cache.c | -rw-r--r-- | 7.9 KB |
cifs_debug.c | -rw-r--r-- | 17.2 KB |
cifs_debug.h | -rw-r--r-- | 2.4 KB |
cifs_dfs_ref.c | -rw-r--r-- | 9.5 KB |
cifs_fs_sb.h | -rw-r--r-- | 3.1 KB |
cifs_spnego.c | -rw-r--r-- | 4.8 KB |
cifs_spnego.h | -rw-r--r-- | 1.6 KB |
cifs_unicode.c | -rw-r--r-- | 10.5 KB |
cifs_unicode.h | -rw-r--r-- | 9.1 KB |
cifs_uniupr.h | -rw-r--r-- | 12.6 KB |
cifsacl.c | -rw-r--r-- | 35.8 KB |
cifsacl.h | -rw-r--r-- | 2.9 KB |
cifsencrypt.c | -rw-r--r-- | 20.7 KB |
cifsfs.c | -rw-r--r-- | 32.2 KB |
cifsfs.h | -rw-r--r-- | 5.7 KB |
cifsglob.h | -rw-r--r-- | 39.9 KB |
cifspdu.h | -rw-r--r-- | 80.8 KB |
cifsproto.h | -rw-r--r-- | 21.8 KB |
cifssmb.c | -rw-r--r-- | 189.1 KB |
connect.c | -rw-r--r-- | 111.1 KB |
dir.c | -rw-r--r-- | 20.7 KB |
dns_resolve.c | -rw-r--r-- | 2.8 KB |
dns_resolve.h | -rw-r--r-- | 1.2 KB |
export.c | -rw-r--r-- | 2.4 KB |
file.c | -rw-r--r-- | 87.4 KB |
fscache.c | -rw-r--r-- | 6.4 KB |
fscache.h | -rw-r--r-- | 4.5 KB |
inode.c | -rw-r--r-- | 58.6 KB |
ioctl.c | -rw-r--r-- | 3.0 KB |
link.c | -rw-r--r-- | 14.7 KB |
misc.c | -rw-r--r-- | 15.9 KB |
netmisc.c | -rw-r--r-- | 39.2 KB |
nterr.c | -rw-r--r-- | 33.5 KB |
nterr.h | -rw-r--r-- | 30.0 KB |
ntlmssp.h | -rw-r--r-- | 5.7 KB |
readdir.c | -rw-r--r-- | 23.5 KB |
rfc1002pdu.h | -rw-r--r-- | 2.8 KB |
sess.c | -rw-r--r-- | 28.6 KB |
smb1ops.c | -rw-r--r-- | 19.6 KB |
smb2glob.h | -rw-r--r-- | 1.4 KB |
smb2inode.c | -rw-r--r-- | 4.5 KB |
smb2maperror.c | -rw-r--r-- | 126.7 KB |
smb2misc.c | -rw-r--r-- | 10.5 KB |
smb2ops.c | -rw-r--r-- | 9.5 KB |
smb2pdu.c | -rw-r--r-- | 29.6 KB |
smb2pdu.h | -rw-r--r-- | 19.1 KB |
smb2proto.h | -rw-r--r-- | 3.8 KB |
smb2status.h | -rw-r--r-- | 125.2 KB |
smb2transport.c | -rw-r--r-- | 4.7 KB |
smbencrypt.c | -rw-r--r-- | 6.0 KB |
smberr.h | -rw-r--r-- | 7.5 KB |
smbfsctl.h | -rw-r--r-- | 4.7 KB |
transport.c | -rw-r--r-- | 23.2 KB |
xattr.c | -rw-r--r-- | 11.7 KB |
Computing file changes ...