首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >叉子()在特定的CPU集合上运行

叉子()在特定的CPU集合上运行
EN

Stack Overflow用户
提问于 2016-02-10 12:09:42
回答 1查看 1.9K关注 0票数 1

我有一个父进程,用于生成一系列子进程,每个子进程依次运行自己的程序。这些程序中的每一个都会随着时间的推移而改变一个文件,我想从这个文件中读取数据,看看它在每个程序运行时是如何变化的。

我需要两组数据才能起作用,文件在某个时间间隔上的值(我还没有决定时间间隔),以及每个程序运行所需的时间,还有其他的变量可以影响这些程序的执行时间,我也想看看。

因此,我认为,为了获得更准确的子进程的时间,同时仍然从一个文件,我可以运行他们在不同的核心。我有8个核心,我想运行父进程在0-3,然后叉子运行4-7。我不确定这在C中是否可行,而且搜索也没有得到任何答案,这使我认为它不是。

在Linux中,在程序之外,我可以使用taskset来完成这个任务。

我计划使用内核参数isolcpus()留出4个核心。在运行子程序时,我要尽可能少的噪音。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-10 20:40:12

要求内核将CPU内核与线程或进程相关联也称为设置内核与进程/线程之间的“亲缘关系”。

在linux下,存在一组提供此功能的函数。看看其中一个函数的手册页 .

代码语言:javascript
运行
复制
man pthread_setaffinity_np

这一系列API调用可能会为您提供所需的服务。该手册页有一个“请参阅”部分,链接到这个家族中的其他函数。

通常有这样的特性来处理内核进程和线程调度,这完全取决于内核当时的情绪是满足还是忽略您的请求。您的里程可能很大程度上取决于系统负载或可用内核的数量。即使一个系统有16个内核,这些特性也可能在内核编译设置中被禁用(比如虚拟机)。同样,您可能会发现有一些额外的选项可以添加到内核中,以获得比缺省值更好的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35314871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档