kernel_optimize_test/fs
David Rientjes a7f638f999 mm, oom: normalize oom scores to oom_score_adj scale only for userspace
The oom_score_adj scale ranges from -1000 to 1000 and represents the
proportion of memory available to the process at allocation time.  This
means an oom_score_adj value of 300, for example, will bias a process as
though it was using an extra 30.0% of available memory and a value of
-350 will discount 35.0% of available memory from its usage.

The oom killer badness heuristic also uses this scale to report the oom
score for each eligible process in determining the "best" process to
kill.  Thus, it can only differentiate each process's memory usage by
0.1% of system RAM.

On large systems, this can end up being a large amount of memory: 256MB
on 256GB systems, for example.

This can be fixed by having the badness heuristic to use the actual
memory usage in scoring threads and then normalizing it to the
oom_score_adj scale for userspace.  This results in better comparison
between eligible threads for kill and no change from the userspace
perspective.

Suggested-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Tested-by: Dave Jones <davej@redhat.com>
Signed-off-by: David Rientjes <rientjes@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-05-29 16:22:24 -07:00
..
9p
adfs
affs
afs
autofs4 avoid iput() from flusher thread 2012-05-28 09:54:45 -07:00
befs
bfs
btrfs avoid iput() from flusher thread 2012-05-28 09:54:45 -07:00
cachefiles
ceph
cifs avoid iput() from flusher thread 2012-05-28 09:54:45 -07:00
coda
configfs
cramfs
debugfs
devpts userns: Convert devpts to use kuid/kgid where appropriate 2012-05-15 14:59:26 -07:00
dlm dlm: NULL dereference on failure in kmem_cache_create() 2012-05-15 10:39:28 -05:00
ecryptfs avoid iput() from flusher thread 2012-05-28 09:54:45 -07:00
efs
exofs Merge branch 'for-linus' of git://git.open-osd.org/linux-open-osd 2012-05-28 13:10:41 -07:00
exportfs
ext2 avoid iput() from flusher thread 2012-05-28 09:54:45 -07:00
ext3 avoid iput() from flusher thread 2012-05-28 09:54:45 -07:00
ext4 avoid iput() from flusher thread 2012-05-28 09:54:45 -07:00
fat
freevxfs
fscache
fuse avoid iput() from flusher thread 2012-05-28 09:54:45 -07:00
gfs2 avoid iput() from flusher thread 2012-05-28 09:54:45 -07:00
hfs
hfsplus avoid iput() from flusher thread 2012-05-28 09:54:45 -07:00
hostfs
hpfs
hppfs
hugetlbfs avoid iput() from flusher thread 2012-05-28 09:54:45 -07:00
isofs
jbd jbd: Write journal superblock with WRITE_FUA after checkpointing 2012-05-15 23:34:37 +02:00
jbd2
jffs2 avoid iput() from flusher thread 2012-05-28 09:54:45 -07:00
jfs
lockd
logfs
minix
ncpfs
nfs NFS client updates for Linux 3.5 2012-05-29 10:43:51 -07:00
nfs_common
nfsd Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace 2012-05-23 17:42:39 -07:00
nilfs2 avoid iput() from flusher thread 2012-05-28 09:54:45 -07:00
nls
notify
ntfs
ocfs2 avoid iput() from flusher thread 2012-05-28 09:54:45 -07:00
omfs
openpromfs
proc mm, oom: normalize oom scores to oom_score_adj scale only for userspace 2012-05-29 16:22:24 -07:00
pstore avoid iput() from flusher thread 2012-05-28 09:54:45 -07:00
qnx4
qnx6
quota quota: Get rid of nested I_MUTEX_QUOTA locking subclass 2012-05-15 23:34:39 +02:00
ramfs
reiserfs avoid iput() from flusher thread 2012-05-28 09:54:45 -07:00
romfs
squashfs
sysfs avoid iput() from flusher thread 2012-05-28 09:54:45 -07:00
sysv
ubifs avoid iput() from flusher thread 2012-05-28 09:54:45 -07:00
udf avoid iput() from flusher thread 2012-05-28 09:54:45 -07:00
ufs avoid iput() from flusher thread 2012-05-28 09:54:45 -07:00
xfs avoid iput() from flusher thread 2012-05-28 09:54:45 -07:00
aio.c vfs: make AIO use the proper rw_verify_area() area helpers 2012-05-21 16:06:20 -07:00
anon_inodes.c
attr.c
bad_inode.c mm/fs: remove truncate_range 2012-05-29 16:22:23 -07:00
binfmt_aout.c
binfmt_elf_fdpic.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace 2012-05-23 17:42:39 -07:00
binfmt_elf.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace 2012-05-23 17:42:39 -07:00
binfmt_em86.c
binfmt_flat.c
binfmt_misc.c
binfmt_script.c
binfmt_som.c
bio-integrity.c
bio.c bio allocation failure due to bio_get_nr_vecs() 2012-05-11 16:45:12 +02:00
block_dev.c avoid iput() from flusher thread 2012-05-28 09:54:45 -07:00
buffer.c block: don't mark buffers beyond end of disk as mapped 2012-05-11 16:42:14 +02:00
char_dev.c
compat_binfmt_elf.c
compat_ioctl.c
compat.c userns: Convert stat to return values mapped from kuids and kgids 2012-05-15 14:08:35 -07:00
dcache.c mm: add a low limit to alloc_large_system_hash 2012-05-24 00:28:21 -04:00
dcookies.c
direct-io.c
drop_caches.c
eventfd.c
eventpoll.c epoll: Fix user space breakage related to EPOLLWAKEUP 2012-05-22 20:57:06 +02:00
exec.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace 2012-05-23 17:42:39 -07:00
fcntl.c
fhandle.c
fifo.c
file_table.c
file.c
filesystems.c
fs_struct.c
fs-writeback.c writeback: Avoid iput() from flusher thread 2012-05-06 13:43:41 +08:00
generic_acl.c
inode.c avoid iput() from flusher thread 2012-05-28 09:54:45 -07:00
internal.h
ioctl.c
ioprio.c
Kconfig
Kconfig.binfmt C6X: add support to build with BINFMT_ELF_FDPIC 2012-05-15 09:17:34 -04:00
libfs.c vfs: make it possible to access the dentry hash/len as one 64-bit entry 2012-05-10 19:54:35 -07:00
locks.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace 2012-05-23 17:42:39 -07:00
Makefile
mbcache.c
mount.h
mpage.c
namei.c word-at-a-time: make the interfaces truly generic 2012-05-26 11:33:40 -07:00
namespace.c
no-block.c
open.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace 2012-05-23 17:42:39 -07:00
pipe.c
pnode.c
pnode.h
posix_acl.c
proc_namespace.c
read_write.c
read_write.h
readdir.c
select.c
seq_file.c
signalfd.c
splice.c
stack.c
stat.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace 2012-05-23 17:42:39 -07:00
statfs.c
super.c
sync.c
timerfd.c
utimes.c
xattr_acl.c
xattr.c