2002-10-06 17:26:08

by Alan Cox

[permalink] [raw]
Subject: PATCH: 2.5.40 sane minimum proc count

Again from UCLinux merge but relevant on its own for any embedded tiny box

diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.2.5.40/kernel/fork.c linux.2.5.40-ac5/kernel/fork.c
--- linux.2.5.40/kernel/fork.c 2002-10-02 21:34:06.000000000 +0100
+++ linux.2.5.40-ac5/kernel/fork.c 2002-10-05 23:51:20.000000000 +0100
@@ -166,8 +166,11 @@
*/
max_threads = mempages / (THREAD_SIZE/PAGE_SIZE) / 8;

- init_task.rlim[RLIMIT_NPROC].rlim_cur = max_threads/2;
- init_task.rlim[RLIMIT_NPROC].rlim_max = max_threads/2;
+ /*
+ * we need to allow at least 10 threads to boot a system
+ */
+ init_task.rlim[RLIMIT_NPROC].rlim_cur = max(10, max_threads/2);
+ init_task.rlim[RLIMIT_NPROC].rlim_max = max(10, max_threads/2);
}

static struct task_struct *dup_task_struct(struct task_struct *orig)


2002-10-07 13:21:22

by Matthew Wilcox

[permalink] [raw]
Subject: Re: PATCH: 2.5.40 sane minimum proc count


max_threads = mempages / (THREAD_SIZE/PAGE_SIZE) / 8;

- init_task.rlim[RLIMIT_NPROC].rlim_cur = max_threads/2;
- init_task.rlim[RLIMIT_NPROC].rlim_max = max_threads/2;
+ /*
+ * we need to allow at least 10 threads to boot a system
+ */
+ init_task.rlim[RLIMIT_NPROC].rlim_cur = max(10, max_threads/2);
+ init_task.rlim[RLIMIT_NPROC].rlim_max = max(10, max_threads/2);

why not simply:

max_threads = mempages / (THREAD_SIZE/PAGE_SIZE) / 8;

+ /* we need to allow at least 20 threads to boot a system */
+ if (max_threads < 20)
+ max_threads = 20;
+
init_task.rlim[RLIMIT_NPROC].rlim_cur = max_threads/2;
init_task.rlim[RLIMIT_NPROC].rlim_max = max_threads/2;

i think we're going to see more kernel threads with 2.5 than we did with 2.4;
let's be safer.

--
Revolutions do not require corporate support.

2002-10-07 13:30:02

by Alan Cox

[permalink] [raw]
Subject: Re: PATCH: 2.5.40 sane minimum proc count

On Mon, 2002-10-07 at 14:27, Matthew Wilcox wrote:
> why not simply:
>
> max_threads = mempages / (THREAD_SIZE/PAGE_SIZE) / 8;
>
> + /* we need to allow at least 20 threads to boot a system */
> + if (max_threads < 20)
> + max_threads = 20;
> +
> init_task.rlim[RLIMIT_NPROC].rlim_cur = max_threads/2;
> init_task.rlim[RLIMIT_NPROC].rlim_max = max_threads/2;
>
> i think we're going to see more kernel threads with 2.5 than we did with 2.4;
> let's be safer.

Much better, will switch