上下文切换耗时是否会被计入某一进程的系统CPU时间?
上下文切换的CPU耗时归属
关于上下文切换的CPU耗时计入哪个进程配额,得分两种核心情况来看:
- 自愿上下文切换:如果是进程主动调用
sleep()、wait()这类系统调用主动让出CPU,那么切换的耗时会被计入发起切换的进程的%Sys时间里——毕竟是这个进程触发内核执行了切换操作。 - 非自愿上下文切换:比如进程时间片用完被调度器强制换下,或者被更高优先级的进程抢占CPU,这种切换的耗时不会计入任何单个用户进程的配额,而是被归类为系统整体开销。你在
top这类工具里看到的系统总%sys占比会包含这部分,但单个进程的%sys字段不会体现这部分开销。
额外提一句,像perf这类专业性能分析工具会单独统计上下文切换的开销,但常规的进程CPU统计逻辑里,非自愿切换的成本不会摊到某个特定进程头上,因为这是内核调度器主动发起的操作,并非由某个进程请求触发。
内容的提问来源于stack exchange,提问作者Frontier_Setter
相关产品推荐
相关产品推荐

