“CPU死亡”(非硬件相关)是什么意思?

3

最近在使用Linux内核的工作队列时,我发现了一些我不确定的东西(“CPU dies”),即使我谷歌了一下也没有找到答案。

这是特定的CPU核心当前不可用还是类似的意思吗?

以下是我所询问问题的上下文(完整版本):

/**
 * queue_work - queue work on a workqueue
 * @wq: workqueue to use
 * @work: work to queue
 *
 * Returns %false if @work was already on a queue, %true otherwise.
 *
 * We queue the work to the CPU on which it was submitted, but if the CPU dies
 * it can be processed by another CPU.
 */
static inline bool queue_work(struct workqueue_struct *wq,
                  struct work_struct *work)
{
    return queue_work_on(WORK_CPU_UNBOUND, wq, work);
}

1
对于一个随机的猜测,我会认为它与热插拔CPU支持有关 - 例如,如果CPU被下线,那么... - Brendan
1个回答

2

Per-cpu工作队列通常更受欢迎,因为它们往往表现更好。

工作队列在一个CPU上提交,但如果此CPU进入空闲状态,则工作队列将移至另一个CPU。

如果其工作队列(每个工作人员一个工作队列)为空,则工作人员进入IDLE。

绑定到实际CPU的每个工作人员池通过钩入调度程序来实现并发管理。当活动工作人员唤醒或休眠时,工作人员池会收到通知,并跟踪当前可运行工作人员的数量。一般来说,不希望工作项占用CPU并消耗许多周期。这意味着仅保持足够的并发性以防止工作处理停滞应该是最优的。只要CPU上有一个或多个可运行的工作人员,工作人员池就不会启动新工作的执行,但是,当最后一个正在运行的工作人员进入睡眠状态时,它立即安排一个新工作人员,以便CPU在有待处理的工作项时不会处于空闲状态。这允许使用最少数量的工作人员而不会失去执行带宽。

请参见此处


谢谢!第二段中的“IDLE”给了我一个关键词来解决这个问题。 - Feng. Ma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接