为什么选择KernelStack> ThreadCount * 16k

时间:2018-12-31 10:28:52

标签: linux memory stack kernel

为什么要使用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操作中,因此我认为它应该等于线程数

但实际上它们并不相等,为什么?

0 个答案:

没有答案