问题标签 [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.
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
有什么帮助吗?
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?
pbs - 为作业单独的 cpuset
有没有办法限制直接运行脚本的用户的 CPU 和内存,但在作业提交时允许更多的 CPU 和内存?
我在 Ubuntu 14.04 服务器上运行扭矩/pbs,并希望允许“正常”使用 8 个 cpu 和 16GB RAM,其余的专用于集群的“妈妈”资源。正常的 cgroups/cpuset 配置也会限制正在运行的作业。
docker - docker run --cpuset 没有任何效果
我通过将 cpuset 指定为 1 个内核来启动一个 docker 容器:
第二个通过将 cpuset 指定为 4 个核心:
我在每个容器中启动了一个加载过程,并监控了两个容器的 CPU 消耗。
加载过程如下:
我观察到两个容器之间的执行时间没有改善(没有加速)。
你知道为什么没有改进吗?具有 4 个核心的容器应该比 1 个核心容器运行得更快,对吗?
注意:将顶部用于 1core 容器
使用 top 作为 4core 容器,docker 随机选择 4 个核心之一来启动进程。有时它会影响每个核心的 30%
cpu - 如何在 cgroups 的一个目录上再挂载两个子系统?
我在大学学习计算机工程。在我的学习过程中,我遇到了一些问题。
我想在一个目录上挂载两个子系统。
我尝试如下
mount -t cgroup -o cpu,cpuset cpu_and_cpuset /cgroup/cpu_and_cpuset
此命令在 redhat 手册页中有指导。
红帽手册页链接
在我的 linux 中发生错误。
错误信息是
mount: cpu_and_cpuset 已经挂载或 /cgroup/cpu_and_cpuset 忙
但我没有安装任何子系统。
并且 /cgroup/cpu_and_cpuset 是之前创建的。
为了进行故障排除,我尝试卸载所有 cgroups 子系统。
我重试了这个命令。但结果是一样的。
挂载单个子系统时,没有问题。
如果这些子系统挂载在每个目录,并设置适当的属性,我们可以组成一个看起来像两个子系统挂载在一个目录上的环境。
但这对我来说不是一个正确的答案。
我的命令有什么问题?
这个错误有什么解决办法吗?
linux-kernel - 打印允许运行任务的CPU?
我正在尝试打印允许在其上运行特定任务的CPU 。
在struct task_struct(可以在此处找到)内部有cpumask_t cpus_allowed,据我所知,它包含我正在寻找的内容。那正确吗 ?
如果是这样,我如何提取允许的 CPU 编号?
例如,我的 comp 有 8 个逻辑核心 - 所以我希望在cpus_allowed的某个地方我可以找到这些数字(例如 - 0、2、5)
linux - 使用 Cpuset 将内核模块隔离到特定内核
从用户空间中,我们可以使用cpuset来实际隔离系统中的特定核心,并仅对该核心执行一个特定进程。
我正在尝试对内核模块做同样的事情。所以我希望模块在一个独立的核心中执行。换句话说:我如何cpuset
在内核模块中使用 's?*
在我的内核模块中使用linux/cpuset.h不起作用。所以,我有一个这样的模块:
尝试加载此模块时,我收到(输入dmesg
)以下消息cpusets is enabled!
。但我也收到了消息Unknown symbol cpu_init (err 0)
。
同样,我尝试使用sched_setaffinity
fromlinux/sched.h
将所有正在运行的进程移动到特定的核心,然后将我的模块运行到独立的核心。我得到了同样的错误信息:Unknown symbol sched_setaffinity (err 0)
。我想我得到了“未知符号”,因为这些函数EXPORT_SYMBOL
在内核中没有。所以我去尝试调用sys_sched_setaffinity
系统调用(基于这个问题)但再次得到这个消息:Unknown symbol sys_sched_setaffinity (err 0)
!
此外,我不是在寻找使用isolcpus
在引导时设置的解决方案。我只想加载模块,然后进行隔离。
- (更准确地说,我希望它的内核线程在隔离的内核中执行。我知道我可以使用亲和力将线程绑定到特定的内核,但这并不能保证我的内核将被运行在它们上的其他进程隔离。 )
multithreading - 无法为我的进程专门分配 CPU
我有一个简单的单线程应用程序,几乎可以进行纯处理
- 它使用两个相同大小的 int 缓冲区
- 它一个接一个地读取第一个缓冲区的所有值
- 每个值都是第二个缓冲区中的随机索引
- 它读取第二个缓冲区中索引处的值
- 它将从第二个缓冲区获取的所有值相加
- 它完成了所有前面的步骤,变得越来越大
- 最后,我打印自愿和非自愿 CPU 上下文切换的次数
如果缓冲区的大小变得相当大,我的电脑开始变慢:为什么?我有 4 个带超线程的内核,所以剩下 3 个内核。只有一个是 100% 忙的。是因为我的进程几乎 100% 使用“RAM 总线”吗?
然后,我创建了一个专用于我的进程的 CPU 集(我的 CPU 集包含同一核心的两个 CPU 线程)
似乎我的 CPU 集上根本没有任何任务正在运行。我可以重新启动我的进程,并在它运行时启动:
PSR = 7:我的进程在预期的 CPU 线程上运行良好。我希望它是唯一一个在它上面运行的,但最后,我的进程显示:
如果我有非自愿的上下文切换,这意味着其他进程正在我的核心上运行:这怎么可能?我必须做什么才能使非自愿上下文切换次数 = 0?
最后一个问题:当我的进程运行时,如果我启动
我再次在我的 CPU 集上获得 0 个任务。但是我知道有一个进程在上面运行:好像一个任务不是一个进程?
java - 从运行的java程序中获取CPU号
我正在运行一个 java 程序,并且想要获取该进程当前正在运行的 cpu。java中有没有标准的方法来得到这个?
我的备份计划是运行类似ps -eF
为我当前进程获取 cpu 的东西,但这看起来很难看
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
系统详情:
可能出了什么问题?谢谢你的时间。