Linux CPU上下文切换性能监测

本文详细介绍了Linux系统中CPU上下文切换的四种类型:系统调用、进程、线程和中断上下文切换,强调了频繁切换对性能的影响,并提到了使用vmstat命令监控及sysbench工具进行性能测试的方法。
摘要由CSDN通过智能技术生成

上下文切换

简而言之,就是将上一个任务的寄存器和程序计数器的资源保存起来,然后加载下一个任务的寄存器和程序计数器等,最后跳转到新任务的地址运行。

CPU的上下文切换情况可分为:

  • 系统调用上下文切换
  • 进程上下文切换
  • 线程上下文切换
  • 中断上下文切换

1 系统调用上下文切换

进程可通过系统调用从用户态进入到内核态,这个过程存在用户空间和内核空间之间的上下文切换。并且在系统调用结束后需要切换回用户态,因此这样就会存在两次上下文切换。这个过程并没有发生进程的切换,也被称为“特权模式切换”。

2 进程上下文切换

进程的调度由内核完成,因此进程上下文切换只存在内核空间,需要切换的资源包括虚拟内存、栈、全局变量等用户空间的资源以及内核堆栈、寄存器等内核空间资源。

虚拟内存的切换必然涉及到 MMU 中 TLB 快表的操作,这会影响内存访问速度。频繁的进程上下文切换可能耗费大量CPU时间在资源的保护和恢复上,影响CPU使用率。

3 线程上下文切换

一个进程内的所有线程共享虚拟内存和全局变量等资源,因此同一个进程内的两个线程之间发生上下文切换时只需要切换自己的私有数据,如栈和寄存器。但如果切换的两个线程不在同一进程内,则其上下文切换与进程上下文切换是一样的。

4 中断上下文切换

当硬件中断信号产生时,正在运行的进程将被打断而进入内核态的中断处理程序,此时中断处理程序无权操作当前用户态进程的用户空间内存,因此此时的上下文切换也不涉及用户空间的资源切换,

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值