问题标签 [cpuset]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2756 浏览

c++ - 'cpu_set_t' 没有命名类型 C++

我正在为分配构建速率单调调度程序,我需要让所有线程在同一个处理器上运行。我不确定我做错了什么,但我不断收到同样的错误(见下图)。我一直在查看一堆 Linux 文档,试图弄清楚该怎么做,但我就是做不到。我真的很感激一些帮助。提前致谢。

错误 我的 Scheduler.cpp 文件:

0 投票
1 回答
2282 浏览

linux-kernel - 如何使 cpuset 的 cpuset.cpu_exclusive 功能正常工作

我正在尝试使用内核cpuset来隔离我的进程。为了获得这个,我按照内核文档cpusets的说明( 2.1 Basic Usage ) ,但是,它在我的环境中不起作用。

我在我的 centos7 服务器和我的 ubuntu16.04 工作电脑上都试过了,但都没有工作。

  1. centos内核版本:
  1. ubuntu 内核版本:

我尝试过的如下。

它只是打印了错误bash: echo: write error: Invalid argument。谷歌它,但是,我无法得到正确的答案。

正如我上面粘贴的,在我操作之前,我确认cpuset根路径已经启用了 cpu_exclusive 功能,并且所有的 cpu 都没有被其他子 cpuset 排除。

通过使用ps -o pid,psr,comm -p $PID,我可以确认如果我不在乎,可以将 cpus 分配给某个进程cpu_exclusive。但是我也证明了,如果cpu_exclusive不设置,同样的cpu也可以分配给另一个进程。

我不知道是不是因为错过了一些预先设置。

我所期望的是“使用cpuset获得cpus的独占使用”。任何男孩都可以提供任何线索吗?

非常感谢。

0 投票
0 回答
36 浏览

c - 我们有什么方法可以检索在 ubuntu 中处于可运行状态(非运行状态)的进程和线程列表?

我的要求是在实时操作系统(比如带有 RT linux 补丁的 ubuntu)场景中,根据可运行线程(但不运行等待 CPU 可用性的线程)的队列长度在 C 程序中进行动态 cpu 屏蔽。例如,我们可以考虑为系统配置了 SCHED_FIFO 策略。

我找不到任何命令来检索处于等待状态、运行状态、可运行状态等的进程数。

任何帮助深表感谢。

命令“PS -T au”将所有“可运行”和“正在运行”线程的状态显示为“R”。

下面是我从上面的命令得到的结果。在这个 ThreadID-16841 中,16842 和 16843 是由主进程 16840 创建的线程。上面创建的所有线程都显示为 R 状态,表示可运行或正在运行。

相反,我想要一个 linux 命令或 C API 来检索处于可运行状态但未运行的进程数。

0 投票
1 回答
546 浏览

linux - 内核创建的线程的亲和性可以由“cpuset”设置吗?

用户进程的亲和性可以通过设置cpuset(7)

内核创建的线程的亲和性可以通过cpuset(7)?

我发现一些kthreads的affinity可以通过cpuset确实([rcu_sched],[rcu_bh])设置,一些kthreads不能([nvme-delete-wq],[kthreadd],我得到了错误:“ echo: write错误:无效的参数”)。

如果您有更好的解决方案,请告诉我。

0 投票
1 回答
80 浏览

linux - Why some processes(even they are user processes) could not be migrated to a certain cpu by `cpuset(7)`?

Why some processes could not be migrated to a certain cpu by cpuset(7) while some processes could?

I found that these processes could not be really migrated to a certain cpu(Though when you check the cpuset filesystem,it seems ok.But if check the affinity of these processes by top or htop, you could find the cpuset does not work for these processes indeed.):

0 投票
1 回答
824 浏览

docker - docker-compose 使用不同的 cpuset 进行缩放

如何cpuset使用 docker-compose 扩展服务但在每个实例上应用不同的服务?

例如:我有 4 个 cpu,我想要 4 个实例,每个实例使用 1 个唯一的 cpu。

0 投票
1 回答
188 浏览

docker - docker 容器没有在分配的 cpu 之间平均分配负载

我有一个容器化的微服务(即运行 docker 容器),我已为其分配了 8 个 cpu 核心作为 docker 桌面上的资源(请参见附图)。但是我怀疑所有的 cpu (0,1,2...7) 不能均匀地共享负载,因此我测试的微服务的响应时间没有像预期的那样减少。我也尝试通过 command 分配 cpu docker run --cpuset-cpus="0-7" -p 8081:8080 myimage-docker。对于 cpuset 中的每个 cpu,我想以 cpu 使用率百分比查看它的利用率统计信息。是否有一个 docker 命令可以让我在 docker 容器运行期间一次查看所有 8 个 cpu 的利用率。就像是 ..

泊坞窗桌面图像

0 投票
1 回答
595 浏览

docker - 有一种方法可以将 --cpus-cpuset 和 --cpuset-mems 传递给 docker swarm

我正在查看文档,似乎不可能将 Docker swarm 中的进程隔离到特定核心,例如使用 numactl 或 cpuset--cpus 时。在docker run你这样做(16 cpu 机器,在 8-15 的第二个套接字上使用 8 cpu):

而且我可以确认这些进程不会从一个核心跳到另一个核心,而是固定在 CPUS 8-15 上。他们还将使用来自套接字 1 的内存。

从“创建服务”文档中,我看到最接近的是“--reserve-cpu”和--reserve-memory',但这只是为了控制容器放置。

Docker Swarm 是否禁止这种级别的控制?我也在看 K8s,它似乎也有同样的限制。

谢谢,

0 投票
0 回答
27 浏览

c - cpuset_create 来自Ubuntu 20.04 和 16.04 之间的库实现差异

我正在尝试将用 C 编写的项目从 Ubuntu 16.04 移植到 Ubuntu 20.04。该项目严重依赖<cpuset.h>共享库。当我尝试cpuset_create在 Ubuntu 20.04 上使用时出现问题。

该函数cpuset_create在其中创建一个/dev/cpuset/具有指定名称的新目录。该目录包含cpuset 的相关伪文件,所有这些伪文件都以前缀'cpuset.' 开头。以下代码段显示了cpuset_create在 Ubuntu 16.04 上使用创建 cpuset后的目录内容AFF_1000

但是,当我尝试在 Ubuntu 20.04 上使用相同的功能时,它会失败并返回错误代码-1. 我使用strace调试代码,发现如下问题(高亮行):

cpuset_create 错误

似乎cpuset_create正在尝试制作没有"cpuset."前缀的伪文件。我在 Ubuntu 16.04 上使用 strace 执行了相同的程序,它可以正常工作,并得到以下输出(突出显示的行): 正确的输出

基于此,我有以下问题:

  1. 为什么在 Ubuntu 16.04 上cpuset_create打开创建 cpuset 的路径/sys/fs/cgroup/cpuset/,而在 Ubuntu 20.04 上却试图在 Ubuntu 上创建它/dev/cpuset/
  2. 为什么 Ubuntu 20.04openat的 strace 输出使用 Ubuntu 16.04 的 strace 输出open
  3. 为什么在 Ubuntu 20.04 上创建伪文件时cpuset_create省略前缀?"cpuset."

任何帮助是极大的赞赏。提前致谢。

0 投票
1 回答
123 浏览

docker - 如何配置 dockerd 不使用某些特定的 cpu?

全部。

我想为实时任务保留一些 CPU。我尝试使用cset实用程序(https://github.com/lpechacek/cpuset/blob/master/doc/tutorial.txt),但由于dockerd将所有可用的cpu保留给它自己的cpuset而失败。

cset shield --cpus 0-10然后,我在启动 dockerd 之前使用命令保留了 cpus 0~11 。但它也没有奏效。cpus 被屏蔽,dockerd 启动但无法启动容器:

结果cset显示 cpuset 发生冲突:

我想我需要告诉 dockerd 不要将保留的 cpus 用于其 cpuset,但找不到如何使用。

任何意见或建议将不胜感激。