有没有办法阻止后代线程自动进入其祖先线程的cgroup?

问题描述 投票:0回答:1

我将应用程序的一些线程写入由我明确创建的 Linux

cpu
cgroup(让我们现在讨论 v1,但如果您知道 v2 的方法,那就太好了)。

但是,我看到后代线程(由父线程调用

pthread_create()
创建,显式写入 cgroup 或在其父线程之后再次写入)也出现在 cgroup 中,而无需我直接写入它们。

这对应用程序的影响不是很好。某些线程意外到达 cgroup。您需要始终注意这一警告并小心,例如使用线程池等

请问有什么办法可以解决这个问题吗?例如,也许有办法禁止后代线程自动进入其父级的 cgroup 吗?任何帮助表示赞赏。

linux multithreading pthreads cgroups
1个回答
0
投票

请问有什么办法可以解决这个问题吗?例如,也许有一种方法可以禁止后代线程自动进入其父级的 cgroup?

虽然我没有发现具体记录,但新线程应该继承创建它们的线程的 cgroup 正是我所期望的。如果不是这样,那么就不清楚他们最初应该拥有什么 cgroup。请注意,由于 pthread 中没有线程层次结构——同一进程的所有线程都是对等的,因此如果新线程没有从创建它的线程继承,那么它会从哪个线程继承? 而且,不,我不知道也没有找到任何建立不同行为的机制。 因此,如果您希望新线程进入与其创建时继承的 cgroup 不同的 cgroup,则需要在创建后将其移至那里。就像(我推测)您将创建者线程分配给其 cgroup 所做的那样。如果您想避免新线程在给定的 cgroup 中短暂出现,那么该 cgroup 中的线程必须避免创建新线程。

© www.soinside.com 2019 - 2024. All rights reserved.