Re: [patch 1/2] mm, oom: change type of oom_score_adj to short

2012-11-08 Thread Michal Hocko
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

2012-11-08 Thread David Rientjes
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

2012-11-08 Thread David Rientjes
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

2012-11-08 Thread Michal Hocko
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