小编Tom*_*Tom的帖子

chrt():“无法在一台机器上设置 pid XXX 的策略”,但在其他机器上没有

我有几台 Linux 机器,它们都运行相同的内核(Ubuntu 12.04,3.5.0-45-generic)。其中之一,我chrt根本无法使用。如果我尝试在新进程中使用它,则会收到以下错误:

$ sudo chrt -f 1 ls
chrt: failed to set pid 0's policy: Operation not permitted
Run Code Online (Sandbox Code Playgroud)

如果我尝试在现有进程中使用它,我会收到类似的错误:

$ stress -c 1 &
[1] 3929
$ sudo chrt -f -p 1 3929
chrt: failed to set pid 3929's policy: Operation not permitted
Run Code Online (Sandbox Code Playgroud)

我作为超级用户操作,所以我应该有CAP_SYS_NICE,而且我确实能够nicerenice一个过程;我只是无法调整其实时属性。

这种行为是这台机器独有的;通过重新启动并在剥离的环境 ( env -i bash --noprofile --norc) 中启动新 shell,该行为仍然存在。

如果我尝试在任何其他机器(所有相同的发行版,但有些具有不同的硬件)上运行此命令,它会按预期成功。

最接近我发现的解释是这个 Google 组的帖子,其中有人断言同样的问题是因为使用了 cpuset。我找不到任何详细说明。我之前在这台机器上做过一些线程亲和性 ( pthread_setaffinity_np())、taskset、cpusets、isolcpus 等工作。但是,我不知道这些中的任何一个仍然会导致这种行为,因为我没有明确设置任何优先级, 和 egtaskset …

scheduling ubuntu

5
推荐指数
2
解决办法
8653
查看次数

标签 统计

scheduling ×1

ubuntu ×1