內(nèi)核threads線程數(shù)是一定的凭戴,具體是跟機(jī)器內(nèi)存有關(guān)系
部分參數(shù)獲取方法
PAGE_SIZE:getconf PAGE_SIZE 單位byte
THREAD_SIZE:ulimit -s
額定具體計算如下
max_threads = mempages / (THREAD_SIZE/PAGE_SIZE) / 8
mempages計算
mempages = 物理內(nèi)存大小/PAGE_SIZE
例如:32G內(nèi)存
mempages = 32174 * 1024 * 1024/4*1024 = 8236544
max_threads = 8236544/(81024)/(41024)/8 = 514784
因為為了保證每個用戶進(jìn)程總數(shù)不至于超過一半內(nèi)存fork_init()指定:
init_task.rlim[RLIMIT_NPROC].rlim_cur = max_threads/2;
init_task.rlim[RLIMIT_NPROC].rlim_max = max_threads/2;
即物理額定線程數(shù)為514784/2=257392