当前位置: 技术问答>linux和unix
linux 能开的 最大 线程 和 进程 数 和什么有关?
来源: 互联网 发布时间:2017-03-25
本文导语: linux 能开的 最大 线程 和 进程 数 和什么有关?核的数量 内存 操作系统 还是别的什么 有 什么样的 关系 呢!!???? | linux内核的话,这个去看内核源码就好了。 linux-2.6.34的话定义在中...
linux 能开的 最大 线程 和 进程 数 和什么有关?核的数量 内存 操作系统 还是别的什么
有 什么样的 关系 呢!!????
有 什么样的 关系 呢!!????
|
linux内核的话,这个去看内核源码就好了。
linux-2.6.34的话定义在中,其中有一段是这样的
这个就是默认的PID大小,
默认是32768,也就是一个进程的最大的进程ID,那么这个值可以增加到几百万,
linux-2.6.34的话定义在中,其中有一段是这样的
/*
* This controls the default maximum pid allocated to a process
*/
#define PID_MAX_DEFAULT (CONFIG_BASE_SMALL ? 0x1000 : 0x8000)
这个就是默认的PID大小,
默认是32768,也就是一个进程的最大的进程ID,那么这个值可以增加到几百万,
|
fork_init里有一段代码:
默认最大线程数是当线程结构只占1/8的内存页(注释有问题,还是一半)
而最大进程数则是线程数的一半
当然,这个max_threads可以通过/proc/sys/kernel/threads-max来手动修改
* The default maximum number of threads is set to a safe
* value: the thread structures can take up at most half
* of memory.
*/
max_threads = mempages / (8 * THREAD_SIZE / PAGE_SIZE);
/*
* we need to allow at least 20 threads to boot a system
*/
if(max_threads rlim[RLIMIT_NPROC].rlim_cur = max_threads/2;
init_task.signal->rlim[RLIMIT_NPROC].rlim_max = max_threads/2;
默认最大线程数是当线程结构只占1/8的内存页(注释有问题,还是一半)
而最大进程数则是线程数的一半
当然,这个max_threads可以通过/proc/sys/kernel/threads-max来手动修改
* The default maximum number of threads is set to a safe
* value: the thread structures can take up at most half
* of memory.
*/
max_threads = mempages / (8 * THREAD_SIZE / PAGE_SIZE);
/*
* we need to allow at least 20 threads to boot a system
*/
if(max_threads rlim[RLIMIT_NPROC].rlim_cur = max_threads/2;
init_task.signal->rlim[RLIMIT_NPROC].rlim_max = max_threads/2;