gpt4 book ai didi

Linux 线程和进程 - CPU 亲和性

转载 作者:太空狗 更新时间:2023-10-29 11:29:37 24 4
gpt4 key购买 nike

我很少有与线程和进程调度相关的问题。

  1. 当我的进程进入休眠状态并唤醒时,它是否总是会被调度到之前调度的同一个 CPU 上?
  2. 当我从进程中创建一个线程时,它是否也总是在同一个 CPU 上执行?即使其他 CPU 空闲并处于休眠状态。

我想具体了解下linux的机制。我也通过 pthread 库创建线程。我面临一个随机挂断问题,该问题始终无法重现。需要此信息才能朝着正确的方向前进。

最佳答案

在单处理器/核心系统上

在多处理器/核心系统上

  1. 没有。
  2. 没有。

使用taskset在多核系统上检索或设置进程的 CPU 亲和性。将 CPU 亲和性设置为特定处理器/内核会将答案更改为

也适用于多核系统。

您可以在应用程序中使用 sched_setaffinity and/or sched_getaffinity调整 CPU 亲和性。


编辑:关于如何/何时管理 CPU 交换以应对缓存缺点的其他详细信息:

The Linux/SMP Scheduler : “......为了获得良好的系统性能,Linux/SMP(2.4 内核)采用经验法则来解决困境......” 阅读链接引用中的详细信息,部分 Linux/SMP 调度器

对于较新的 CFS(完全公平调度程序),您可以查看 sched_migration_cost“...如果任务的实际运行时间小于此参数的值,则调度程序会假定它仍在缓存中并尝试避免在负载平衡过程中将任务移动到另一个 CPU .. ”(例如:Completely Fair Scheduler and its tuning)。

关于Linux 线程和进程 - CPU 亲和性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18779947/

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