1
在Linux内核中,有许多函数,例如on_each_cpu_mask,它们有文档警告,不会传入长时间运行的回调,因为在回调期间中断和/或抢占将被禁用。目前还不清楚回调“必须”是否很短,因为它太长会导致糟糕的系统性能,或者长时间运行的回调实际上会以某种方式破坏系统的正确性。长期禁用中断/抢占有什么后果?
显然,当中断和抢占被禁用时,繁忙核心无法做任何其他工作,并且可以通过让两个CPU相互等待来调整可能导致死锁的情况。但为了争论,回调只是做了一大堆纯粹的计算,花费了大量的时间然后返回。这可以以某种方式破坏内核吗?如果那么多久太久了?或者在计算完成之前性能会受损?