Linux 上的默认调度程序在过去十年中一直不是O(1)调度程序,而是完全公平调度程序,即运行队列中的任务数量为O(log n) 。您必须在特定系统和工作负载上对您感兴趣的特定场景进行基准测试;可以在 Internet 上找到基准测试,每个上下文切换的数据通常约为 0.5-2 µs ,即使切换到之前未在 CPU 上安排的任务也是如此。
正如您所提到的,开销会因情况而异,包括各种缓存中的代码和数据。如今,开销还取决于内核版本和配置,特别是取决于哪些安全对策处于活动状态以及 CPU 对它们的支持程度。最近的一篇论文给出了后者的相对数据,与 4.0 基线相比,变化范围从 –14% 到 +98%。
Linux 上的默认调度程序在过去十年中一直不是O(1)调度程序,而是完全公平调度程序,即运行队列中的任务数量为O(log n) 。您必须在特定系统和工作负载上对您感兴趣的特定场景进行基准测试;可以在 Internet 上找到基准测试,每个上下文切换的数据通常约为 0.5-2 µs ,即使切换到之前未在 CPU 上安排的任务也是如此。
正如您所提到的,开销会因情况而异,包括各种缓存中的代码和数据。如今,开销还取决于内核版本和配置,特别是取决于哪些安全对策处于活动状态以及 CPU 对它们的支持程度。最近的一篇论文给出了后者的相对数据,与 4.0 基线相比,变化范围从 –14% 到 +98%。