Sample Header Ad - 728x90

Why does Linux needs both pid_max and threads-max?

3 votes
1 answer
1196 views
I understand the difference between /proc/sys/kernel/pid_max and /proc/sys/kernel/threads-max. There's a good explanation at the answer to [Understanding the differences between pid_max, ulimit -u and thread_max](https://unix.stackexchange.com/a/345052/273579) : > /proc/sys/kernel/pid_max has nothing to do with the maximum number > of processes that can be run at any given time. It is, in fact, the > maximum numerical PROCESS IDENTIFIER than can be assigned by the > kernel. > > In the Linux kernel, a process and a thread are one and the same. > They're handled the same way by the kernel. They both occupy a slot > in the task_struct data structure. A thread, by common terminology, > is in Linux a process that shares resources with another process (they > will also share a thread group ID). A thread in the Linux kernel is > largely a conceptual construct as far as the scheduler is concerned. > > Now that you understand that the kernel largely does not differentiate > between a thread and a process, it should make more sense that > /proc/sys/kernel/threads-max is actually the maximum number of > elements contained in the data structure task_struct. Which is the > data structure that contains the list of processes, or as they can be > called, tasks. However, effectively, both limit the maximum number of concurrent threads on a host. This number will be - to my understanding - the minimum of pid_max and threads-max. So why are both needed? I understand that the default value pid_max is [based on the number of possible CPUs](https://stackoverflow.com/a/39631072/8529284) of the machine while the default of threads-max is derived from the [number of pages](https://stackoverflow.com/a/21926745/8529284) . But since both have the same effect, couldn't Linux just have one value that would be the minimum of both?
Asked by aviro (6925 rep)
Sep 11, 2023, 12:47 PM
Last activity: Sep 11, 2023, 01:00 PM