У меня есть многопоточное приложение, работающее под управлением 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
выход постоянно меняется от ~500
в ~3000
Сервис имеет только один процесс в CGroup, но также имеет некоторые другие сервисы в зависимости, такие как Requires
, Wants
а также BindsTo
, Все эти услуги имеют постоянная количество TasksCurrent
для одного из них ~3500
(и это равно количеству потоков в его процессах), для всех остальных это 1
Вопрос:
Почему количество задач службы не равно количеству потоков в единственном процессе этой службы?
Задача ещё не решена.
Других решений пока нет …