为什么要使用KernelStack> ThreadCount * 16k
每个线程都有一个大小为16k的KernelStack,因此我尝试使用
来计算系统中的线程数round()
并通过
从/ proc / meminfo获取KernelStack[root@docker31 ~]# ps -eT | wc -l
714
如果一个线程具有16k内核堆栈
内核堆栈的总大小应为714 * 16k = 11424k
但是/ proc / meminfo中的KernelStack是1216K(76 * 16k),比线程数还要多
什么是1216K?是每个CPU的中断堆栈吗?
我搜索了3.10.0-975.el7的源代码,发现/ proc / meminfo的KernelStack已计入do_fork-> copy_process-> dup_task_struct-> account_kernel_stack操作中,因此我认为它应该等于线程数
但实际上它们并不相等,为什么?