Re: [patch 1/2] mm, oom: change type of oom_score_adj to short
On Thu 08-11-12 01:26:57, David Rientjes wrote: > The maximum oom_score_adj is 1000 and the minimum oom_score_adj is -1000, > so this range can be represented by the signed short type with no > functional change. The extra space this frees up in struct signal_struct > will be used for per-thread oom kill flags in the next patch. > > Signed-off-by: David Rientjes Reviewed-by: Michal Hocko > --- > drivers/staging/android/lowmemorykiller.c | 16 > fs/proc/base.c| 10 +- > include/linux/oom.h |4 ++-- > include/linux/sched.h |6 +++--- > include/trace/events/oom.h|4 ++-- > include/trace/events/task.h |8 > mm/ksm.c |2 +- > mm/oom_kill.c | 10 +- > mm/swapfile.c |2 +- > 9 files changed, 31 insertions(+), 31 deletions(-) > > diff --git a/drivers/staging/android/lowmemorykiller.c > b/drivers/staging/android/lowmemorykiller.c > --- a/drivers/staging/android/lowmemorykiller.c > +++ b/drivers/staging/android/lowmemorykiller.c > @@ -40,7 +40,7 @@ > #include > > static uint32_t lowmem_debug_level = 2; > -static int lowmem_adj[6] = { > +static short lowmem_adj[6] = { > 0, > 1, > 6, > @@ -70,9 +70,9 @@ static int lowmem_shrink(struct shrinker *s, struct > shrink_control *sc) > int rem = 0; > int tasksize; > int i; > - int min_score_adj = OOM_SCORE_ADJ_MAX + 1; > + short min_score_adj = OOM_SCORE_ADJ_MAX + 1; > int selected_tasksize = 0; > - int selected_oom_score_adj; > + short selected_oom_score_adj; > int array_size = ARRAY_SIZE(lowmem_adj); > int other_free = global_page_state(NR_FREE_PAGES); > int other_file = global_page_state(NR_FILE_PAGES) - > @@ -90,7 +90,7 @@ static int lowmem_shrink(struct shrinker *s, struct > shrink_control *sc) > } > } > if (sc->nr_to_scan > 0) > - lowmem_print(3, "lowmem_shrink %lu, %x, ofree %d %d, ma %d\n", > + lowmem_print(3, "lowmem_shrink %lu, %x, ofree %d %d, ma %hd\n", > sc->nr_to_scan, sc->gfp_mask, other_free, > other_file, min_score_adj); > rem = global_page_state(NR_ACTIVE_ANON) + > @@ -107,7 +107,7 @@ static int lowmem_shrink(struct shrinker *s, struct > shrink_control *sc) > rcu_read_lock(); > for_each_process(tsk) { > struct task_struct *p; > - int oom_score_adj; > + short oom_score_adj; > > if (tsk->flags & PF_KTHREAD) > continue; > @@ -141,11 +141,11 @@ static int lowmem_shrink(struct shrinker *s, struct > shrink_control *sc) > selected = p; > selected_tasksize = tasksize; > selected_oom_score_adj = oom_score_adj; > - lowmem_print(2, "select %d (%s), adj %d, size %d, to kill\n", > + lowmem_print(2, "select %d (%s), adj %hd, size %d, to kill\n", >p->pid, p->comm, oom_score_adj, tasksize); > } > if (selected) { > - lowmem_print(1, "send sigkill to %d (%s), adj %d, size %d\n", > + lowmem_print(1, "send sigkill to %d (%s), adj %hd, size %d\n", >selected->pid, selected->comm, >selected_oom_score_adj, selected_tasksize); > lowmem_deathpending_timeout = jiffies + HZ; > @@ -176,7 +176,7 @@ static void __exit lowmem_exit(void) > } > > module_param_named(cost, lowmem_shrinker.seeks, int, S_IRUGO | S_IWUSR); > -module_param_array_named(adj, lowmem_adj, int, _adj_size, > +module_param_array_named(adj, lowmem_adj, short, _adj_size, >S_IRUGO | S_IWUSR); > module_param_array_named(minfree, lowmem_minfree, uint, _minfree_size, >S_IRUGO | S_IWUSR); > diff --git a/fs/proc/base.c b/fs/proc/base.c > --- a/fs/proc/base.c > +++ b/fs/proc/base.c > @@ -878,7 +878,7 @@ static ssize_t oom_score_adj_read(struct file *file, char > __user *buf, > { > struct task_struct *task = get_proc_task(file->f_path.dentry->d_inode); > char buffer[PROC_NUMBUF]; > - int oom_score_adj = OOM_SCORE_ADJ_MIN; > + short oom_score_adj = OOM_SCORE_ADJ_MIN; > unsigned long flags; > size_t len; > > @@ -889,7 +889,7 @@ static ssize_t oom_score_adj_read(struct file *file, char > __user *buf, > unlock_task_sighand(task, ); > } > put_task_struct(task); > - len = snprintf(buffer, sizeof(buffer), "%d\n", oom_score_adj); > + len = snprintf(buffer, sizeof(buffer), "%hd\n", oom_score_adj); > return simple_read_from_buffer(buf, count, ppos, buffer, len); > } > > @@ -936,15 +936,15 @@ static ssize_t oom_score_adj_write(struct file *file, > const char __user
[patch 1/2] mm, oom: change type of oom_score_adj to short
The maximum oom_score_adj is 1000 and the minimum oom_score_adj is -1000, so this range can be represented by the signed short type with no functional change. The extra space this frees up in struct signal_struct will be used for per-thread oom kill flags in the next patch. Signed-off-by: David Rientjes --- drivers/staging/android/lowmemorykiller.c | 16 fs/proc/base.c| 10 +- include/linux/oom.h |4 ++-- include/linux/sched.h |6 +++--- include/trace/events/oom.h|4 ++-- include/trace/events/task.h |8 mm/ksm.c |2 +- mm/oom_kill.c | 10 +- mm/swapfile.c |2 +- 9 files changed, 31 insertions(+), 31 deletions(-) diff --git a/drivers/staging/android/lowmemorykiller.c b/drivers/staging/android/lowmemorykiller.c --- a/drivers/staging/android/lowmemorykiller.c +++ b/drivers/staging/android/lowmemorykiller.c @@ -40,7 +40,7 @@ #include static uint32_t lowmem_debug_level = 2; -static int lowmem_adj[6] = { +static short lowmem_adj[6] = { 0, 1, 6, @@ -70,9 +70,9 @@ static int lowmem_shrink(struct shrinker *s, struct shrink_control *sc) int rem = 0; int tasksize; int i; - int min_score_adj = OOM_SCORE_ADJ_MAX + 1; + short min_score_adj = OOM_SCORE_ADJ_MAX + 1; int selected_tasksize = 0; - int selected_oom_score_adj; + short selected_oom_score_adj; int array_size = ARRAY_SIZE(lowmem_adj); int other_free = global_page_state(NR_FREE_PAGES); int other_file = global_page_state(NR_FILE_PAGES) - @@ -90,7 +90,7 @@ static int lowmem_shrink(struct shrinker *s, struct shrink_control *sc) } } if (sc->nr_to_scan > 0) - lowmem_print(3, "lowmem_shrink %lu, %x, ofree %d %d, ma %d\n", + lowmem_print(3, "lowmem_shrink %lu, %x, ofree %d %d, ma %hd\n", sc->nr_to_scan, sc->gfp_mask, other_free, other_file, min_score_adj); rem = global_page_state(NR_ACTIVE_ANON) + @@ -107,7 +107,7 @@ static int lowmem_shrink(struct shrinker *s, struct shrink_control *sc) rcu_read_lock(); for_each_process(tsk) { struct task_struct *p; - int oom_score_adj; + short oom_score_adj; if (tsk->flags & PF_KTHREAD) continue; @@ -141,11 +141,11 @@ static int lowmem_shrink(struct shrinker *s, struct shrink_control *sc) selected = p; selected_tasksize = tasksize; selected_oom_score_adj = oom_score_adj; - lowmem_print(2, "select %d (%s), adj %d, size %d, to kill\n", + lowmem_print(2, "select %d (%s), adj %hd, size %d, to kill\n", p->pid, p->comm, oom_score_adj, tasksize); } if (selected) { - lowmem_print(1, "send sigkill to %d (%s), adj %d, size %d\n", + lowmem_print(1, "send sigkill to %d (%s), adj %hd, size %d\n", selected->pid, selected->comm, selected_oom_score_adj, selected_tasksize); lowmem_deathpending_timeout = jiffies + HZ; @@ -176,7 +176,7 @@ static void __exit lowmem_exit(void) } module_param_named(cost, lowmem_shrinker.seeks, int, S_IRUGO | S_IWUSR); -module_param_array_named(adj, lowmem_adj, int, _adj_size, +module_param_array_named(adj, lowmem_adj, short, _adj_size, S_IRUGO | S_IWUSR); module_param_array_named(minfree, lowmem_minfree, uint, _minfree_size, S_IRUGO | S_IWUSR); diff --git a/fs/proc/base.c b/fs/proc/base.c --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -878,7 +878,7 @@ static ssize_t oom_score_adj_read(struct file *file, char __user *buf, { struct task_struct *task = get_proc_task(file->f_path.dentry->d_inode); char buffer[PROC_NUMBUF]; - int oom_score_adj = OOM_SCORE_ADJ_MIN; + short oom_score_adj = OOM_SCORE_ADJ_MIN; unsigned long flags; size_t len; @@ -889,7 +889,7 @@ static ssize_t oom_score_adj_read(struct file *file, char __user *buf, unlock_task_sighand(task, ); } put_task_struct(task); - len = snprintf(buffer, sizeof(buffer), "%d\n", oom_score_adj); + len = snprintf(buffer, sizeof(buffer), "%hd\n", oom_score_adj); return simple_read_from_buffer(buf, count, ppos, buffer, len); } @@ -936,15 +936,15 @@ static ssize_t oom_score_adj_write(struct file *file, const char __user *buf, goto err_task_lock; } - if (oom_score_adj < task->signal->oom_score_adj_min && + if ((short)oom_score_adj < task->signal->oom_score_adj_min &&
[patch 1/2] mm, oom: change type of oom_score_adj to short
The maximum oom_score_adj is 1000 and the minimum oom_score_adj is -1000, so this range can be represented by the signed short type with no functional change. The extra space this frees up in struct signal_struct will be used for per-thread oom kill flags in the next patch. Signed-off-by: David Rientjes rient...@google.com --- drivers/staging/android/lowmemorykiller.c | 16 fs/proc/base.c| 10 +- include/linux/oom.h |4 ++-- include/linux/sched.h |6 +++--- include/trace/events/oom.h|4 ++-- include/trace/events/task.h |8 mm/ksm.c |2 +- mm/oom_kill.c | 10 +- mm/swapfile.c |2 +- 9 files changed, 31 insertions(+), 31 deletions(-) diff --git a/drivers/staging/android/lowmemorykiller.c b/drivers/staging/android/lowmemorykiller.c --- a/drivers/staging/android/lowmemorykiller.c +++ b/drivers/staging/android/lowmemorykiller.c @@ -40,7 +40,7 @@ #include linux/notifier.h static uint32_t lowmem_debug_level = 2; -static int lowmem_adj[6] = { +static short lowmem_adj[6] = { 0, 1, 6, @@ -70,9 +70,9 @@ static int lowmem_shrink(struct shrinker *s, struct shrink_control *sc) int rem = 0; int tasksize; int i; - int min_score_adj = OOM_SCORE_ADJ_MAX + 1; + short min_score_adj = OOM_SCORE_ADJ_MAX + 1; int selected_tasksize = 0; - int selected_oom_score_adj; + short selected_oom_score_adj; int array_size = ARRAY_SIZE(lowmem_adj); int other_free = global_page_state(NR_FREE_PAGES); int other_file = global_page_state(NR_FILE_PAGES) - @@ -90,7 +90,7 @@ static int lowmem_shrink(struct shrinker *s, struct shrink_control *sc) } } if (sc-nr_to_scan 0) - lowmem_print(3, lowmem_shrink %lu, %x, ofree %d %d, ma %d\n, + lowmem_print(3, lowmem_shrink %lu, %x, ofree %d %d, ma %hd\n, sc-nr_to_scan, sc-gfp_mask, other_free, other_file, min_score_adj); rem = global_page_state(NR_ACTIVE_ANON) + @@ -107,7 +107,7 @@ static int lowmem_shrink(struct shrinker *s, struct shrink_control *sc) rcu_read_lock(); for_each_process(tsk) { struct task_struct *p; - int oom_score_adj; + short oom_score_adj; if (tsk-flags PF_KTHREAD) continue; @@ -141,11 +141,11 @@ static int lowmem_shrink(struct shrinker *s, struct shrink_control *sc) selected = p; selected_tasksize = tasksize; selected_oom_score_adj = oom_score_adj; - lowmem_print(2, select %d (%s), adj %d, size %d, to kill\n, + lowmem_print(2, select %d (%s), adj %hd, size %d, to kill\n, p-pid, p-comm, oom_score_adj, tasksize); } if (selected) { - lowmem_print(1, send sigkill to %d (%s), adj %d, size %d\n, + lowmem_print(1, send sigkill to %d (%s), adj %hd, size %d\n, selected-pid, selected-comm, selected_oom_score_adj, selected_tasksize); lowmem_deathpending_timeout = jiffies + HZ; @@ -176,7 +176,7 @@ static void __exit lowmem_exit(void) } module_param_named(cost, lowmem_shrinker.seeks, int, S_IRUGO | S_IWUSR); -module_param_array_named(adj, lowmem_adj, int, lowmem_adj_size, +module_param_array_named(adj, lowmem_adj, short, lowmem_adj_size, S_IRUGO | S_IWUSR); module_param_array_named(minfree, lowmem_minfree, uint, lowmem_minfree_size, S_IRUGO | S_IWUSR); diff --git a/fs/proc/base.c b/fs/proc/base.c --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -878,7 +878,7 @@ static ssize_t oom_score_adj_read(struct file *file, char __user *buf, { struct task_struct *task = get_proc_task(file-f_path.dentry-d_inode); char buffer[PROC_NUMBUF]; - int oom_score_adj = OOM_SCORE_ADJ_MIN; + short oom_score_adj = OOM_SCORE_ADJ_MIN; unsigned long flags; size_t len; @@ -889,7 +889,7 @@ static ssize_t oom_score_adj_read(struct file *file, char __user *buf, unlock_task_sighand(task, flags); } put_task_struct(task); - len = snprintf(buffer, sizeof(buffer), %d\n, oom_score_adj); + len = snprintf(buffer, sizeof(buffer), %hd\n, oom_score_adj); return simple_read_from_buffer(buf, count, ppos, buffer, len); } @@ -936,15 +936,15 @@ static ssize_t oom_score_adj_write(struct file *file, const char __user *buf, goto err_task_lock; } - if (oom_score_adj task-signal-oom_score_adj_min + if ((short)oom_score_adj
Re: [patch 1/2] mm, oom: change type of oom_score_adj to short
On Thu 08-11-12 01:26:57, David Rientjes wrote: The maximum oom_score_adj is 1000 and the minimum oom_score_adj is -1000, so this range can be represented by the signed short type with no functional change. The extra space this frees up in struct signal_struct will be used for per-thread oom kill flags in the next patch. Signed-off-by: David Rientjes rient...@google.com Reviewed-by: Michal Hocko mho...@suse.cz --- drivers/staging/android/lowmemorykiller.c | 16 fs/proc/base.c| 10 +- include/linux/oom.h |4 ++-- include/linux/sched.h |6 +++--- include/trace/events/oom.h|4 ++-- include/trace/events/task.h |8 mm/ksm.c |2 +- mm/oom_kill.c | 10 +- mm/swapfile.c |2 +- 9 files changed, 31 insertions(+), 31 deletions(-) diff --git a/drivers/staging/android/lowmemorykiller.c b/drivers/staging/android/lowmemorykiller.c --- a/drivers/staging/android/lowmemorykiller.c +++ b/drivers/staging/android/lowmemorykiller.c @@ -40,7 +40,7 @@ #include linux/notifier.h static uint32_t lowmem_debug_level = 2; -static int lowmem_adj[6] = { +static short lowmem_adj[6] = { 0, 1, 6, @@ -70,9 +70,9 @@ static int lowmem_shrink(struct shrinker *s, struct shrink_control *sc) int rem = 0; int tasksize; int i; - int min_score_adj = OOM_SCORE_ADJ_MAX + 1; + short min_score_adj = OOM_SCORE_ADJ_MAX + 1; int selected_tasksize = 0; - int selected_oom_score_adj; + short selected_oom_score_adj; int array_size = ARRAY_SIZE(lowmem_adj); int other_free = global_page_state(NR_FREE_PAGES); int other_file = global_page_state(NR_FILE_PAGES) - @@ -90,7 +90,7 @@ static int lowmem_shrink(struct shrinker *s, struct shrink_control *sc) } } if (sc-nr_to_scan 0) - lowmem_print(3, lowmem_shrink %lu, %x, ofree %d %d, ma %d\n, + lowmem_print(3, lowmem_shrink %lu, %x, ofree %d %d, ma %hd\n, sc-nr_to_scan, sc-gfp_mask, other_free, other_file, min_score_adj); rem = global_page_state(NR_ACTIVE_ANON) + @@ -107,7 +107,7 @@ static int lowmem_shrink(struct shrinker *s, struct shrink_control *sc) rcu_read_lock(); for_each_process(tsk) { struct task_struct *p; - int oom_score_adj; + short oom_score_adj; if (tsk-flags PF_KTHREAD) continue; @@ -141,11 +141,11 @@ static int lowmem_shrink(struct shrinker *s, struct shrink_control *sc) selected = p; selected_tasksize = tasksize; selected_oom_score_adj = oom_score_adj; - lowmem_print(2, select %d (%s), adj %d, size %d, to kill\n, + lowmem_print(2, select %d (%s), adj %hd, size %d, to kill\n, p-pid, p-comm, oom_score_adj, tasksize); } if (selected) { - lowmem_print(1, send sigkill to %d (%s), adj %d, size %d\n, + lowmem_print(1, send sigkill to %d (%s), adj %hd, size %d\n, selected-pid, selected-comm, selected_oom_score_adj, selected_tasksize); lowmem_deathpending_timeout = jiffies + HZ; @@ -176,7 +176,7 @@ static void __exit lowmem_exit(void) } module_param_named(cost, lowmem_shrinker.seeks, int, S_IRUGO | S_IWUSR); -module_param_array_named(adj, lowmem_adj, int, lowmem_adj_size, +module_param_array_named(adj, lowmem_adj, short, lowmem_adj_size, S_IRUGO | S_IWUSR); module_param_array_named(minfree, lowmem_minfree, uint, lowmem_minfree_size, S_IRUGO | S_IWUSR); diff --git a/fs/proc/base.c b/fs/proc/base.c --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -878,7 +878,7 @@ static ssize_t oom_score_adj_read(struct file *file, char __user *buf, { struct task_struct *task = get_proc_task(file-f_path.dentry-d_inode); char buffer[PROC_NUMBUF]; - int oom_score_adj = OOM_SCORE_ADJ_MIN; + short oom_score_adj = OOM_SCORE_ADJ_MIN; unsigned long flags; size_t len; @@ -889,7 +889,7 @@ static ssize_t oom_score_adj_read(struct file *file, char __user *buf, unlock_task_sighand(task, flags); } put_task_struct(task); - len = snprintf(buffer, sizeof(buffer), %d\n, oom_score_adj); + len = snprintf(buffer, sizeof(buffer), %hd\n, oom_score_adj); return simple_read_from_buffer(buf, count, ppos, buffer, len); } @@ -936,15 +936,15 @@ static ssize_t oom_score_adj_write(struct file *file, const char __user *buf, goto err_task_lock; } - if