上下文切换会导致 CPU 高吗[关闭]

2023-12-31

我们正在分析一个性能问题,我们可能最多有500个工作线程,CPU使用率不是很高。 上下文切换会导致CPU占用率过高吗?换句话说,由于CPU占用率不高,所以上下文切换(500个线程)在这里不是问题。


仅当编程强制进行过多的上下文切换时。仅当操作系统的调度程序认为这样做对性能有利时才会执行上下文切换。调度程序非常智能,如果可能的话,它会限制上下文切换的数量,以避免对性能产生负面影响。

但是,如果糟糕的编程阻止调度程序执行此操作,那么您可能会遇到过多的上下文切换。

例如,假设我有 1 个核心和 500 个线程。如果这 500 个线程中的每一个都尝试执行大量工作,调度程序将让每个线程运行合理的时间,这样上下文切换的总开销就不会太高。其中一些线程可能会出现非常高的延迟,但每个线程都会运行足够长的时间,上下文切换不会影响性能。

但是假设调度程序调度了第一个线程,然后,仅仅几条指令之后,该线程就不再准备运行。现在调度程序别无选择,只能切换上下文。如果下一个线程再次只运行很短的时间,然后不再准备运行,您将强制进行另一次上下文切换。这会降低性能。

强制上下文切换是不好的。调度程序选择执行的上下文切换是好的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

上下文切换会导致 CPU 高吗[关闭] 的相关文章

随机推荐