美文网首页
什么是CPU上下文切换?

什么是CPU上下文切换?

作者: oleryu | 来源:发表于2016-12-20 13:59 被阅读0次

现在linux是大多基于抢占式,CPU给每个任务一定的服务时间,当时间片轮转的时候,需要把当前状态保存下来,同时加载下一个任务,这个过程叫做上下文切换。时间片轮转的方式,使得多个任务利用一个CPU执行成为可能,但是保存现场和加载现场,也带来了性能消耗。  那线程上下文切换的次数和时间以及性能消耗如何看呢?

上下文切换的性能消耗在哪里呢?
context switch过高,会导致CPU像个搬运工,频繁在寄存器和运行队列直接奔波  ,更多的时间花在了线程切换,而不是真正工作的线程上。直接的消耗包括CPU寄存器需要保存和加载,系统调度器的代码需要执行。间接消耗在于多核cache之间的共享数据。

引起上下文切换的原因有哪些?
对于抢占式操作系统而言, 大体有几种:
1、当前任务的时间片用完之后,系统CPU正常调度下一个任务;
2、当前任务碰到IO阻塞,调度线程将挂起此任务,继续下一个任务;
3、多个任务抢占锁资源,当前任务没有抢到,被调度器挂起,继续下一个任务;
4、用户代码挂起当前任务,让出CPU时间;
5、硬件中断;

监测Linux的应用的时候,当CPU的利用率非常高,但是系统的性能却上不去的时候,不妨监控一下线程/进程的切换,看看是不是context switching导致的overhead过高。
常用命令: pidstat vmstat

参考:
1. latencytop深度了解你的Linux系统的延迟

相关文章

  • CPU性能分析--上下文切换

    内容提要 CPU上下文切换都做了哪些事? CPU上下文切换都有哪些场景? 系统调用上下文切换都做了哪些事? 进程上...

  • 监控CPU

    CPU 上下文切换 根据任务的不同,CPU 的上下文切换就可以分为几个不同的场景,也就是进程上下文切换、线程上下文...

  • 多线程上下文切换

    一、CPU时间片 CPU时间片即CPU分配给每个线程的执行时间段,称作它的时间片。 二、什么是上下文切换 CPU通...

  • 04 | 基础篇:经常说的 CPU 上下文切换是什么意思?(下)

    上一节,我给你讲了 CPU 上下文切换的工作原理。简单回顾一下,CPU 上下文切换是保证 Linux 系统正常工作...

  • 计算机基础知识 | cpu 上下文切换

    上下文切换是什么 cpu上下文是指cpu在运行任何任务之前都要依赖的环境。cpu上下文包括两个部分,cpu寄存器和...

  • 经常说的 CPU 上下文切换是什么意思?(下)

    CPU 上下文切换的工作原理。简单回顾一下,CPU 上下文切换是保证 Linux 系统正常工作的一个核心功能,按照...

  • CPU上下文切换

    什么是CPU上下文切换 问题:一台单核linux主机,进程竞争CPU,竞争时候并没有运行进程,为什么会导致平均负载...

  • 并发编程的挑战

    上下文切换 上下文切换发生于计算机CPU从一个进程或线程切换到不同的进程或线程。 上下文切换允许一个CPU处理多个...

  • CPU上下文切换

    上下文切换分类 多个进程在竞争CPU时也会导致负载升高,罪魁祸首就在于CPU的上下文切换。CPU上下文的定义:每个...

  • 什么是CPU上下文切换?

    现在linux是大多基于抢占式,CPU给每个任务一定的服务时间,当时间片轮转的时候,需要把当前状态保存下来,同时加...

网友评论

      本文标题:什么是CPU上下文切换?

      本文链接:https://www.haomeiwen.com/subject/qanxvttx.html