我的多线程应用程序在systemd服务下运行。
当它在没有工作负载的情况下运行时/proc/<Main PID>/status
和systemctl的输出中的线程数是相同的
systemctl show -p TasksCurrent <ServiceName>
TasksCurrent=287
cat /proc/<Main PID>/status | grep Threads
Threads: 287
在某些情况下,当工作负载增加时,Threads
中/proc/<pid>/status
的数量从287
变为295
(这是正常的,在工作流程中创建了其他线程)但数量TasksCurrent
输出中systemctl
的{{1}}不断变化,从~500
到~3000
Service在CGroup中只有一个进程,但在Requires
,Wants
和BindsTo
之类的依赖项中也有一些其他服务。所有这些服务的 常量 数量为TasksCurrent
,其中一个是~3500
(它等于其进程中的线程数) ),对于所有其他人,它是1
问题: 为什么服务的任务数量不等于此服务唯一进程中的线程数?