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

时间:2019-07-19 12:04:51

标签: c linux linux-kernel

最近使用Linux内核的工作队列,我发现了一些东西(“ CPU死机”),即使我用谷歌搜索了它也不确定。

这是否意味着特定的CPU内核当前不可用或类似的东西?

以下是我要问的问题的上下文(full-version):

/**
 * 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 个答案:

答案 0 :(得分:2)

每个CPU工作队列通常是首选的,因为它们倾向于表现出更好的性能。

工作队列是在一个CPU上提交的,但是如果此 CPU进入IDLE ,则工作队列将移至另一个CPU。

如果工人的工作队列(每个工人一个工作队列)为空,则进入空闲状态。

  

绑定到实际CPU的每个工作池都通过挂接到调度程序来实现并发管理。每当活动的工人醒来或睡觉时,都会通知该工人池,并跟踪当前可运行的工人的数量。通常,不希望工作项占用CPU并消耗很多周期。这意味着保持足够的并发性以防止工作处理停滞应该是最佳的。只要CPU上有一个或多个可运行的工作程序,工作程序池就不会开始执行新工作,但是,当最后一个正在运行的工作程序进入睡眠状态时,它将立即调度一个新工作程序,以便CPU可以在有待处理的工作项目时不要闲着。这样可以使用最少数量的工作程序,而不会丢失执行带宽。

请参见here