linux 性能优化之路: 深入了解几种linux上下文切换

Posted 李昊轩的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 性能优化之路: 深入了解几种linux上下文切换相关的知识,希望对你有一定的参考价值。

上下文切换是什么?

上下文切换是对任务当前运行状态的暂存和恢复

CPU为什么要进行上下文切换?

当多个进程竞争CPU的时候,CPU为了保证每个进程能公平被调度运行,采取了处理任务时间分片的机制,轮流处理多个进程,由于CPU处理速度非常快,在人类的感官上认为是并行处理,实际是"伪"并行,同一时间只有一个任务在运行处理。

上下文切换主要消耗什么资源,为什么说上下文切换次数过多不可取?

根据 Tsuna 的测试报告,每次上下文切换都需要几十纳秒到到微秒的CPU时间,这些时间对CPU来说,就好比人类对1分钟或10分钟的感觉概念。在分秒必争的计算机处理环境下,浪费太多时间在切换上,只能会降低真正处理任务的时间,表象上导致延时、排队、卡顿现象发生。

上下文切换分几种?

  • 进程上下文切换
  • 线程上下文切换
  • 中断上下文切换

什么情况下会触发上下文切换?

  • 系统调用
  • 进程状态转换(运行、就绪、阻塞)
  • 时间片耗尽
  • 系统资源不足
  • sleep
  • 优先级调度
  • 硬件中断等

线程上下文切换和进程上下文切换的最大区别?

线程是调度的基本单位,进程是资源拥有的基本单位,同属一个进程的线程,发生上下文切换,只切换线程的私有数据,共享数据不变,因此速度非常快。

中断上下文切换,如何理解?

为了快速响应硬件的事件(如USB接入),中断处理会打断进程的正常调度和执行,转而调用中断处理程序,响应设备事件。而打断其它进程执行时,需要进行上下文切换。中断事件过多,会无谓的消耗CPU资源,导致进程处理时间延长。

有哪些减少上下文切换的技术用例?

数据库连接池(复用连接)、合理设置应用的最大进程,线程数、直接内存访问DMA、零拷贝技术

以上是关于linux 性能优化之路: 深入了解几种linux上下文切换的主要内容,如果未能解决你的问题,请参考以下文章

linux 性能优化之路: 了解CPU软中断和硬中断

linux 性能优化之路: 了解CPU软中断和硬中断

深入理解 Linux 内存子系统

深入理解 Linux 内存子系统

详述Linux系统中Apache网页深入优化

嵌入式操作系统的内存,你了解多少?