diff options
-rw-r--r-- | include/linux/threads.h | 9 | ||||
-rw-r--r-- | kernel/pid.c | 7 |
2 files changed, 16 insertions, 0 deletions
diff --git a/include/linux/threads.h b/include/linux/threads.h index 052b12bec8bd..383ab9592bec 100644 --- a/include/linux/threads.h +++ b/include/linux/threads.h | |||
@@ -33,4 +33,13 @@ | |||
33 | #define PID_MAX_LIMIT (CONFIG_BASE_SMALL ? PAGE_SIZE * 8 : \ | 33 | #define PID_MAX_LIMIT (CONFIG_BASE_SMALL ? PAGE_SIZE * 8 : \ |
34 | (sizeof(long) > 4 ? 4 * 1024 * 1024 : PID_MAX_DEFAULT)) | 34 | (sizeof(long) > 4 ? 4 * 1024 * 1024 : PID_MAX_DEFAULT)) |
35 | 35 | ||
36 | /* | ||
37 | * Define a minimum number of pids per cpu. Heuristically based | ||
38 | * on original pid max of 32k for 32 cpus. Also, increase the | ||
39 | * minimum settable value for pid_max on the running system based | ||
40 | * on similar defaults. See kernel/pid.c:pidmap_init() for details. | ||
41 | */ | ||
42 | #define PIDS_PER_CPU_DEFAULT 1024 | ||
43 | #define PIDS_PER_CPU_MIN 8 | ||
44 | |||
36 | #endif | 45 | #endif |
diff --git a/kernel/pid.c b/kernel/pid.c index aebb30d9c233..e9fd8c132d26 100644 --- a/kernel/pid.c +++ b/kernel/pid.c | |||
@@ -513,6 +513,13 @@ void __init pidhash_init(void) | |||
513 | 513 | ||
514 | void __init pidmap_init(void) | 514 | void __init pidmap_init(void) |
515 | { | 515 | { |
516 | /* bump default and minimum pid_max based on number of cpus */ | ||
517 | pid_max = min(pid_max_max, max_t(int, pid_max, | ||
518 | PIDS_PER_CPU_DEFAULT * num_possible_cpus())); | ||
519 | pid_max_min = max_t(int, pid_max_min, | ||
520 | PIDS_PER_CPU_MIN * num_possible_cpus()); | ||
521 | pr_info("pid_max: default: %u minimum: %u\n", pid_max, pid_max_min); | ||
522 | |||
516 | init_pid_ns.pidmap[0].page = kzalloc(PAGE_SIZE, GFP_KERNEL); | 523 | init_pid_ns.pidmap[0].page = kzalloc(PAGE_SIZE, GFP_KERNEL); |
517 | /* Reserve PID 0. We never call free_pidmap(0) */ | 524 | /* Reserve PID 0. We never call free_pidmap(0) */ |
518 | set_bit(0, init_pid_ns.pidmap[0].page); | 525 | set_bit(0, init_pid_ns.pidmap[0].page); |