gpt4 book ai didi

c++ - Linux - 确保专门为关键任务保留一个核心

转载 作者:太空狗 更新时间:2023-10-29 23:01:28 26 4
gpt4 key购买 nike

我有一个在基于 Linux 的机器上启动的进程,该机器恰好有两个内核。

假设我的进程是系统中唯一的进程(我将忽略其他进程甚至系统进程)。

我的流程分为两部分:

  1. 关键性能代码
  2. 低优先级代码

另外假设我的主进程在 Core 0 上启动,我想专门为关键性能代码保留 Core 1。

我想将问题分为两个:

  1. 我如何确保我的进程中的每个线程(包括我已链接我的代码的第 3 方库,可能会调用 pthread_create 等)将始终打开新线程核心 0 ?

  2. 我如何编写一个测试来验证核心 1 除了性能关键路径之外绝对没有做任何事情?

我熟悉以下 API:

pthread_setaffinity_np

可以设置特定的线程关联,但我想知道是否有更底层的方法来确保即使是第 3 方库(从进程内部)创建的线程也将固定到核心 0。

也许我可以将进程的默认亲和性设置为核心 0,并将特定线程设置为核心 1?

最佳答案

您已经描述了您想要的解决方案:

Perhaps I can set the default affinity for the process to be Core 0 and for a specific thread - pin it to Core 1?

但是,也许问题在于您不确定如何实现这一目标。

Linux 提供 sched_setaffinity设置当前进程的亲和度。

要让新创建的线程在特定内核上运行,最简单的方法是初始化一个 pthread_attr_t ,并使用 pthread_attr_setaffinity_np 设置所需的核心亲和性.

关于c++ - Linux - 确保专门为关键任务保留一个核心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31057990/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com