Почему KernelStack> ThreadCount * 16k - PullRequest
       6

Почему KernelStack> ThreadCount * 16k

0 голосов
/ 31 декабря 2018

Почему KernelStack> ThreadCount * 16k

Каждый поток имеет KernelStack размером 16k, поэтому я попытался подсчитать количество потоков в системе с помощью

[root@docker31 ~]# ps -eT | wc -l
714

и получилKernelStack из / proc / meminfo с

[root@docker31 ~]# cat /proc/meminfo | grep KernelStack
KernelStack:       12640 kB

Если в одном потоке имеется 16k стека ядра

, то общий размер стека ядра должен составлять 714 * 16k = 11424k

, но KernelStack из /proc / meminfo - 1216K (76 * 16k), больше чем количество потоков

Что такое 1216K?Это стек прерываний на процессор?

Я искал исходный код 3.10.0-975.el7 и обнаружил, что KernelStack из / proc / meminfo подсчитывается в do_fork-> copy_process-> dup_task_struct-> account_kernel_stack oprerion, поэтомуя думаю, что он должен быть равен числу потоков

, но на самом деле они не равны, почему?

...