内核threads线程数是一定的,具体是跟机器内存有关系
部分参数获取方法
PAGE_SIZE:getconf PAGE_SIZE 单位byte
THREAD_SIZE:ulimit -s
额定具体计算如下
max_threads = mempages / (THREAD_SIZE/PAGE_SIZE) / 8
mempages计算
mempages = 物理内存大小/PAGE_SIZE
例如:32G内存
mempages = 32174 * 1024 * 1024/4*1024 = 8236544
max_threads = 8236544/(81024)/(41024)/8 = 514784
因为为了保证每个用户进程总数不至于超过一半内存fork_init()指定:
init_task.rlim[RLIMIT_NPROC].rlim_cur = max_threads/2;
init_task.rlim[RLIMIT_NPROC].rlim_max = max_threads/2;
即物理额定线程数为514784/2=257392
网友评论