我有一个父进程,用于生成一系列子进程,每个子进程依次运行自己的程序。这些程序中的每一个都会随着时间的推移而改变一个文件,我想从这个文件中读取数据,看看它在每个程序运行时是如何变化的。
我需要两组数据才能起作用,文件在某个时间间隔上的值(我还没有决定时间间隔),以及每个程序运行所需的时间,还有其他的变量可以影响这些程序的执行时间,我也想看看。
因此,我认为,为了获得更准确的子进程的时间,同时仍然从一个文件,我可以运行他们在不同的核心。我有8个核心,我想运行父进程在0-3,然后叉子运行4-7。我不确定这在C中是否可行,而且搜索也没有得到任何答案,这使我认为它不是。
在Linux中,在程序之外,我可以使用taskset来完成这个任务。
我计划使用内核参数isolcpus()留出4个核心。在运行子程序时,我要尽可能少的噪音。
发布于 2016-02-10 20:40:12
要求内核将CPU内核与线程或进程相关联也称为设置内核与进程/线程之间的“亲缘关系”。
在linux下,存在一组提供此功能的函数。看看其中一个函数的手册页 .
man pthread_setaffinity_np这一系列API调用可能会为您提供所需的服务。该手册页有一个“请参阅”部分,链接到这个家族中的其他函数。
通常有这样的特性来处理内核进程和线程调度,这完全取决于内核当时的情绪是满足还是忽略您的请求。您的里程可能很大程度上取决于系统负载或可用内核的数量。即使一个系统有16个内核,这些特性也可能在内核编译设置中被禁用(比如虚拟机)。同样,您可能会发现有一些额外的选项可以添加到内核中,以获得比缺省值更好的结果。
https://stackoverflow.com/questions/35314871
复制相似问题