什么是CPU上下文切换?css

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

文章参考:

霸爷和周忱的博客

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

  1. 压力测试衡量CPU的三个指标:CPU Utilization、Load Average和Context Switch Rate

    上篇讲如何用LoadRunner监控Linux的性能指标 ,但是关于CPU的几个指标没有搞清楚,下面就详细说说. CPU Utilization 好理解,就是CPU的利用率,75%以上就比较高了(也有 ...

  2. 衡量CPU的三个指标:CPU Utilization、Load Average和Context Switch Rate

    CPU Utilization 好理解,就是CPU的利用率,75%以上就比较高了(也有说法是80%或者更高).除了这个指标外,还要结合Load Average和Context Switch Rate来 ...

  3. 【linux性能优化】CPU上下文切换

    进程在竞争CPU的时候并没有真正运行,为什么还会导致系统的负载升高呢?其实CPU上下文切换就是罪魁祸首 一.上下文切换 Linux 是一个多任务操作系统,它支持远大于 CPU 数量的任务同时运行.当 ...

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

    上一节,我给你讲了要怎么理解平均负载( Load Average),并用三个案例展示了不同场景下平均负载升高的分析方法.这其中,多个进程竞争 CPU 就是一个经常被我们忽视的问题. 我想你一定很好奇, ...

  5. 2.1 CPU 上下文切换(上)

    cpu上下文与切换 进程在竞争 CPU 的时候并没有真正运行,为什么还会导致系统的负载升高呢?CPU 上下文切换就是罪魁祸首. 我们都知道,Linux 是一个多任务操作系统,它支持远大于 CPU 数量 ...

  6. 经常说的 CPU 上下文切换是什么意思?

    本文是通过学习倪朋飞老师的<Linux性能优化实战>:经常说的 CPU 上下文切换是什么意思 CPU 上下文切换 什么是CPU上下文切换 进程上下文切换 线程上下文切换 中断上下文切换 怎 ...

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

    经常说的CPU上下文切换是什么意思?(上) 学习倪鹏飞老师linux性能优化实践的笔记,文中大量内容来源于老师的文档材料,如果喜欢请移步文末截图中的二维码支持老师的课程: 有时候看系统的资源利用率,我 ...

  8. 深入理解CPU上下文切换

    我们都知道,Linux 是一个多任务操作系统,它支持远大于 CPU 数量的任务同时运行.当然,这些任务实际上并不是真的在同时运行,而是因为系统在很短的时间内,将 CPU 轮流分配给它们,造成多任务同时 ...

  9. linux cpu上下文切换 简介

    目录 什么是CPU上下文 什么是CPU上下文切换 进程上下文切换 线程上下文切换 中断上下文切换 linux的上下文切换查看 上下文切换次数多少合理? 什么是CPU上下文 Linux是一个多任务操作系 ...

最新文章

  1. Python常用模块之hashlib模块
  2. 专栏 | 基于 Jupyter 的特征工程手册:数据预处理(三)
  3. 4.windows和Linux下创建oracle用户名表空间,表,插入数据,用户管理表等操作
  4. AUTOSAR从入门到精通100讲(四十七)-车载以太网 SOME/IP-SOME/IP的概念
  5. sqli-lab————Writeup(18~20)各种头部注入
  6. 1.10 编程基础之简单排序 04 奖学金 7分 python
  7. Android 时间维护服务 TimeService(针对于特殊定制设备)
  8. STM32中的串口通信
  9. 数据库表TreeView树的快速生成
  10. 堡垒机原生ssh登陆解决方案
  11. 刷新iframe内容
  12. 互联网技术(java框架、分布式、集群)干货视频大全,不看后悔!(免费下载)
  13. Linux下创建和删除软、硬链接(ln)
  14. 将pandas中object类型转换为int类型
  15. Unity 自由视角的惯性旋转
  16. DTM测试里无线Modem应该选哪种MCU?
  17. Linux磁盘挂载和共享
  18. 景点门票销售管理系统 基于 python实现gui界面 之 笔记
  19. 身材要凹凸有致,感情要风清云淡
  20. java 考证资料_Java认证考试资料(ATA)

热门文章

  1. 混凝土P-M相互作用曲线计算
  2. 解决springboot项目方案, Failed to load property source from location ‘classpath:/application.yml‘
  3. WordAnyTime 1.0.0发布
  4. mac下搭建PHP开发环境
  5. Udacity利用深度学习玩赛车小游戏
  6. c3p0之DEBUG -- CLOSE BY CLIENT STACK TRACE
  7. [附源码]java+ssm计算机毕业设计家电维修服务平台771x3(源码+程序+数据库+部署)
  8. 大数据分析技术在新型智慧能源建设中的应用
  9. AI照骗恐怖如斯!美女刷屏真假难辨,网友:AI网恋诈骗时代开启
  10. OLED液晶屏幕(0)自动获取12ic地址液晶屏幕