linux 上下文切换时间,CPU上下文切换的次数和时间(context switch)

什么是CPU上下文切换?css

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

b3e84cd1edd84acea74a37b8.html

​    ​如何得到上下文切换的次数?java

vmstat直接运行便可,在最后几列,有CPU的context switch次数。 这个是系统层面的,加入想看特定进程的状况,可使用pidstat。     linux

​     ​执行pidstat,将输出系统启动后全部活动进程的cpu统计信息:       ​    缓存

​    ​

​    ​​上下文切换的性能消耗在哪里呢?bash

​    ​context switch太高,会致使CPU像个搬运工,频繁在寄存器和运行队列直接奔波  ,更多的时间花在了线程切换,而不是真正工做的线程上。直接的消耗包括CPU寄存器须要保存和加载,系统调度器的代码须要执行。间接消耗在于多核cache之间的共享数据。 ide

​    ​引发上下文切换的缘由有哪些?工具

​    ​对于抢占式操做系统而言, 大致有几种:性能

​    ​一、当前任务的时间片用完以后,系统CPU正常调度下一个任务;测试

​    ​二、当前任务碰到IO阻塞,调度线程将挂起此任务,继续下一个任务;

​    ​三、多个任务抢占锁资源,当前任务没有抢到,被调度器挂起,继续下一个任务;

​    ​四、用户代码挂起当前任务,让出CPU时间;

​    ​五、硬件中断;

​   ​

​    ​如何测试上下文切换的时间消耗?

LMbench,知道这个工具,是在霸爷的博客上面(http://blog.yufeng.info/archives/753),而后就开始在测试环境下搞了一把,一会就出结果了。而后就搞了台线上机器安装这个工具,而后测试,后面在测试Memory的时候,直接致使Load飙升,还好没人发现,机器java进程重启就行了。这方面纯粹是业务选手。霸爷说分析的结果对于高性能C的开发同窗来讲,是须要熟记的,没办法,咱是搞java的,只能每一个指标逐个看一下了。

​    ​LMbench的简单介绍?

​    首先看英文介绍:LMbench -Tools for Performance Analysis,微观性能分析工具。

​    ​LMbench​主要能干啥?

​主要是带宽(读取缓存文件、内存拷贝、读写内存、管道等)和反应时间(上下文切换、网路、进程建立等)的评测工具。

​    ​ LMbench ​安装?

​中间遇到一个问题,就是报错,在CSDN上面找到了答案,这这里贴一下。

​    ​ LMbench关于结果解释(此次主要关注线程切换信息)

在网上找了半天,信息不多,只能看doc下面的英文解释了。

测试上下文切换的时间,一个上下文切换,包括保存一个进程状态的保存和恢复另一个进程的时间。

典型的上下文切换性能,仅仅是测量最小的线程切换时间。仅仅是作进程切换,任何实质的任务都不作。

LMbench是如何来测量进程切换的时间的?

文章参考:

霸爷和周忱的博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值