进程/线程上下文切换会用掉你多少CPU?
进程
进程是操作系统的问题大发明之一,对应用程序屏蔽了CPU调度、内存管理等硬件细节,而抽象出一个进程的概念,让应用程序专心于实现自己的业务逻辑即可,而且在有限的CPU上可以并发执行许多个任务。但是它为用户带来方便的同事,也引入了一些额外的开销-进程上下文切换的开销。
上下文切换
在两个进程切换的过程中,先保存A进程的上下文,以便于等A恢复运行的时候,能够直到A进程的下一条指令是啥。然后将要运行的B进程的上下文恢复到寄存器中。这个过程叫做上下文切换。上下文切换开销在进程不多、切换不频繁的应用场景下问题不大。但是现在Linux操作系统被用到了高并发的网络程序后端服务器。在单机支持成千上万个用户请求的时候,这个开销就得拿出来说道说道了。因为用户进程在请求Redis、Mysql数据等网络IO阻塞掉的时候,或者在进程时间片到了,都会引发上下文切换。
一个简单的进程上下文切换开销测试实验
大佬做了个实验测试到底一次上下文切换需要多长的CPU时间!