问题标签 [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 回答
5438 浏览

cpu - echo $$ > tasks 在尝试使用 cpuset 时给出“设备上没有剩余空间”

我尝试了 cpuset(7) 手册中的示例并创建了一个 cpuset Charlie。在 Ubuntu 14.4 LTS 和 SLES 12 上,尝试将当前进程放入 cpuset 时出现以下错误:

/dev/cpuset/Charlie# echo $$ > tasks

bash: echo: write error: No space left on device

有什么帮助吗?

0 投票
1 回答
363 浏览

linux - Low latency process on single core with embedded Linux

I would like to run a single low latency task (for audio, ALSA/JACK) on a separate core with an embedded Linux system. Removing scheduler and other interrupts might be the key here.

There were several approaches I found so far, e.g. cpusets and an offline scheduler from 2009 (which unfortunately does not support user space tasks).

Is there a newer/more convenient way to achieve this?

Offline scheduler

0 投票
1 回答
270 浏览

pbs - 为作业单独的 cpuset

有没有办法限制直接运行脚本的用户的 CPU 和内存,但在作业提交时允许更多的 CPU 和内存?

我在 Ubuntu 14.04 服务器上运行扭矩/pbs,并希望允许“正常”使用 8 个 cpu 和 16GB RAM,其余的专用于集群的“妈妈”资源。正常的 cgroups/cpuset 配置也会限制正在运行的作业。

0 投票
1 回答
5775 浏览

docker - docker run --cpuset 没有任何效果

我通过将 cpuset 指定为 1 个内核来启动一个 docker 容器:

第二个通过将 cpuset 指定为 4 个核心:

我在每个容器中启动了一个加载过程,并监控了两个容器的 CPU 消耗。

加载过程如下:

我观察到两个容器之间的执行时间没有改善(没有加速)。

你知道为什么没有改进吗?具有 4 个核心的容器应该比 1 个核心容器运行得更快,对吗?

注意:将顶部用于 1core 容器

使用 top 作为 4core 容器,docker 随机选择 4 个核心之一来启动进程。有时它会影响每个核心的 30%

0 投票
1 回答
374 浏览

cpu - 如何在 cgroups 的一个目录上再挂载两个子系统?

我在大学学习计算机工程。在我的学习过程中,我遇到了一些问题。

我想在一个目录上挂载两个子系统。

我尝试如下

mount -t cgroup -o cpu,cpuset cpu_and_cpuset /cgroup/cpu_and_cpuset

此命令在 redhat 手册页中有指导。

红帽手册页链接

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/sec-Creating_a_Hierarchy_and_Attaching_Subsystems.html

在我的 linux 中发生错误。

错误信息是

mount: cpu_and_cpuset 已经挂载或 /cgroup/cpu_and_cpuset 忙

但我没有安装任何子系统。
并且 /cgroup/cpu_and_cpuset 是之前创建的。
为了进行故障排除,我尝试卸载所有 cgroups 子系统。
我重试了这个命令。但结果是一样的。

挂载单个子系统时,没有问题。
如果这些子系统挂载在每个目录,并设置适当的属性,我们可以组成一个看起来像两个子系统挂载在一个目录上的环境。
但这对我来说不是一个正确的答案。

我的命令有什么问题?
这个错误有什么解决办法吗?

0 投票
3 回答
858 浏览

linux-kernel - 打印允许运行任务的CPU?

我正在尝试打印允许在其上运行特定任务的CPU 。

struct task_struct(可以在此处找到)内部有cpumask_t cpus_allowed,据我所知,它包含我正在寻找的内容。那正确吗 ?

如果是这样,我如何提取允许的 CPU 编号?

例如,我的 comp 有 8 个逻辑核心 - 所以我希望在cpus_allowed的某个地方我可以找到这些数字(例如 - 0、2、5)

0 投票
4 回答
6210 浏览

linux - 使用 Cpuset 将内核模块隔离到特定内核

从用户空间中,我们可以使用cpuset来实际隔离系统中的特定核心,并仅对该核心执行一个特定进程。

我正在尝试对内核模块做同样的事情。所以我希望模块在一个独立的核心中执行。换句话说:我如何cpuset在内核模块中使用 's?*

在我的内核模块中使用linux/cpuset.h不起作用。所以,我有一个这样的模块:

尝试加载此模块时,我收到(输入dmesg)以下消息cpusets is enabled!。但我也收到了消息Unknown symbol cpu_init (err 0)

同样,我尝试使用sched_setaffinityfromlinux/sched.h将所有正在运行的进程移动到特定的核心,然后将我的模块运行到独立的核心。我得到了同样的错误信息:Unknown symbol sched_setaffinity (err 0)。我想我得到了“未知符号”,因为这些函数EXPORT_SYMBOL在内核中没有。所以我去尝试调用sys_sched_setaffinity 系统调用(基于这个问题)但再次得到这个消息:Unknown symbol sys_sched_setaffinity (err 0)

此外,我不是在寻找使用isolcpus在引导时设置的解决方案。我只想加载模块,然后进行隔离。

  • (更准确地说,我希望它的内核线程在隔离的内核中执行。我知道我可以使用亲和力将线程绑定到特定的内核,但这并不能保证我的内核将被运行在它们上的其他进程隔离。 )
0 投票
1 回答
247 浏览

multithreading - 无法为我的进程专门分配 CPU

我有一个简单的单线程应用程序,几乎可以进行纯处理

  1. 它使用两个相同大小的 int 缓冲区
  2. 它一个接一个地读取第一个缓冲区的所有值
    • 每个值都是第二个缓冲区中的随机索引
  3. 它读取第二个缓冲区中索引处的值
  4. 它将从第二个缓冲区获取的所有值相加
  5. 它完成了所有前面的步骤,变得越来越大
  6. 最后,我打印自愿和非自愿 CPU 上下文切换的次数

如果缓冲区的大小变得相当大,我的电脑开始变慢:为什么?我有 4 个带超线程的内核,所以剩下 3 个内核。只有一个是 100% 忙的。是因为我的进程几乎 100% 使用“RAM 总线”吗?

然后,我创建了一个专用于我的进程的 CPU 集(我的 CPU 集包含同一核心的两个 CPU 线程)

似乎我的 CPU 集上根本没有任何任务正在运行。我可以重新启动我的进程,并在它运行时启动:

PSR = 7:我的进程在预期的 CPU 线程上运行良好。我希望它是唯一一个在它上面运行的,但最后,我的进程显示:

如果我有非自愿的上下文切换,这意味着其他进程正在我的核心上运行:这怎么可能?我必须做什么才能使非自愿上下文切换次数 = 0?

最后一个问题:当我的进程运行时,如果我启动

我再次在我的 CPU 集上获得 0 个任务。但是我知道有一个进程在上面运行:好像一个任务不是一个进程?

0 投票
1 回答
1346 浏览

java - 从运行的java程序中获取CPU号

我正在运行一个 java 程序,并且想要获取该进程当前正在运行的 cpu。java中有没有标准的方法来得到这个?

我的备份计划是运行类似ps -eF为我当前进程获取 cpu 的东西,但这看起来很难看

0 投票
0 回答
637 浏览

linux - isolcpus - 绑定不起作用

抱歉,这是来自 ServerFault 的重复问题。我在这里发布这个,因为我没有得到任何回应。

问题:

我正在使用 isolcpus 来隔离核心。我想将特定线程绑定到核心,但它不起作用。绑定线程后,线程将移动到不同的核心。

核心 13、14 和 15 被隔离:

top -H -p pgrep -u prusr12 Ser-d 1 显示:5017 和 5018 应该绑定到 14 和 15,而 5014 和 5016 应该绑定到 13。

命令行是这样的:

进程中有4个线程。我希望主线程从 13 开始,因此 taskset -c 13。然后生成两个线程并将它们绑定到 14 和 15。我看到线程绑定到 14 和 15,但随后它们被移动到其他核心. pthread_setaffinity_np() 用于将线程绑定到核心。

将线程绑定到 14 和 15 后的日志: pthread_getaffinity_np() 返回的 CpuSet 包含:CPU 14 pthread_getaffinity_np() 返回的 CpuSet 包含:CPU 15

系统详情:

可能出了什么问题?谢谢你的时间。