问题标签 [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.
c++ - 'cpu_set_t' 没有命名类型 C++
我正在为分配构建速率单调调度程序,我需要让所有线程在同一个处理器上运行。我不确定我做错了什么,但我不断收到同样的错误(见下图)。我一直在查看一堆 Linux 文档,试图弄清楚该怎么做,但我就是做不到。我真的很感激一些帮助。提前致谢。
我的 Scheduler.cpp 文件:
linux-kernel - 如何使 cpuset 的 cpuset.cpu_exclusive 功能正常工作
我正在尝试使用内核cpuset
来隔离我的进程。为了获得这个,我按照内核文档cpusets的说明( 2.1 Basic Usage ) ,但是,它在我的环境中不起作用。
我在我的 centos7 服务器和我的 ubuntu16.04 工作电脑上都试过了,但都没有工作。
- centos内核版本:
- 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的独占使用”。任何男孩都可以提供任何线索吗?
非常感谢。
c - 我们有什么方法可以检索在 ubuntu 中处于可运行状态(非运行状态)的进程和线程列表?
我的要求是在实时操作系统(比如带有 RT linux 补丁的 ubuntu)场景中,根据可运行线程(但不运行等待 CPU 可用性的线程)的队列长度在 C 程序中进行动态 cpu 屏蔽。例如,我们可以考虑为系统配置了 SCHED_FIFO 策略。
我找不到任何命令来检索处于等待状态、运行状态、可运行状态等的进程数。
任何帮助深表感谢。
命令“PS -T au”将所有“可运行”和“正在运行”线程的状态显示为“R”。
下面是我从上面的命令得到的结果。在这个 ThreadID-16841 中,16842 和 16843 是由主进程 16840 创建的线程。上面创建的所有线程都显示为 R 状态,表示可运行或正在运行。
相反,我想要一个 linux 命令或 C API 来检索处于可运行状态但未运行的进程数。
linux - 内核创建的线程的亲和性可以由“cpuset”设置吗?
用户进程的亲和性可以通过设置cpuset(7)
。
内核创建的线程的亲和性可以通过cpuset(7)
?
我发现一些kthreads的affinity可以通过cpuset
确实([rcu_sched],[rcu_bh])设置,一些kthreads不能([nvme-delete-wq],[kthreadd],我得到了错误:“ echo: write错误:无效的参数”)。
如果您有更好的解决方案,请告诉我。
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.):
docker - docker-compose 使用不同的 cpuset 进行缩放
如何cpuset
使用 docker-compose 扩展服务但在每个实例上应用不同的服务?
例如:我有 4 个 cpu,我想要 4 个实例,每个实例使用 1 个唯一的 cpu。
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 的利用率。就像是 ..
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,它似乎也有同样的限制。
谢谢,
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."
前缀的伪文件。我在 Ubuntu 16.04 上使用 strace 执行了相同的程序,它可以正常工作,并得到以下输出(突出显示的行):
基于此,我有以下问题:
- 为什么在 Ubuntu 16.04 上
cpuset_create
打开创建 cpuset 的路径/sys/fs/cgroup/cpuset/
,而在 Ubuntu 20.04 上却试图在 Ubuntu 上创建它/dev/cpuset/
? - 为什么 Ubuntu 20.04
openat
的 strace 输出使用 Ubuntu 16.04 的 strace 输出open
- 为什么在 Ubuntu 20.04 上创建伪文件时
cpuset_create
省略前缀?"cpuset."
任何帮助是极大的赞赏。提前致谢。
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,但找不到如何使用。
任何意见或建议将不胜感激。