前言

上下文切换这个词一直不理解,看了无数遍就忘了无数遍,知道看到《操作系统导论》这本书,终于有了略微的理解。这也证明了我的方向是没错的,一直认为做运维还是得理解底层的知识,不理解很多东西只是搬运工而已,比如监控做了无数遍,但是具体的监控指标理解吗,这个监控指标如何衡量系统的性能。
 

官方理解

1)操作系统要做的就是为当前正在执行的进程保存一些寄存器的值,并为即将执行的进程恢复一些寄存器的值,这样一来,操作系统就可以确保最后执行从陷阱返回指令时,不是返回到之前运行的进程而是继续执行另一个进程。
2)现在linux是基于抢占式,CPU给每个任务一定的服务时间,当时间片轮转的时候,需要把当前的状态保存下来,同时加载下一个任务,这个过程叫做上下文切换。时间片轮转的方式,使得多个任务利用一个CPU执行成为可能,但是保存现场和加载现场,也带来了性能消耗。
 

相关知识

1)虚拟化

     为了虚拟化CPU,操作系统需要以某种方式让许多任务共享物理CPU,在他们看起来像是同时运行。基本的思路:运行一个进程一段时间,然后运行另一个进程,如此轮换,通过以这种方式时分共享CPU,实现了虚拟化。
 
2)时钟中断
     时钟中断的目的是让CPU重新获取CPU的控制权,然后停止当前的进程,运行另一个进程。
 
因此,停止当前进程运行另一个进程时,需要保留当前进程的相关信息,并读取接下来将要运行的进程的相关信息,这样系统才知道需要运行哪一个进程,这种保存当前进程信息,以及读取下一个进程的相关信息叫做上下文切换。
 

自己理解

 
1)通俗易懂的讲法:每秒钟进程的切换次数
2)单位:ksps(千次每秒)
3)指标类型:性能指标
4)zabbix上的监控项:system.cpu.switches       每秒进程切换次数
     相关监控项:           system.cpu.intr                每秒时钟中断次数
 
 
 
时间中断的目的是为了进行进程切换,因此这两个监控线一般放在一起,时钟中断就是为了进程切换,但是每一次时钟中断不一定会切换进程
 

测试系统的上下文

1)工具lmbench

 wget http://www.bitmover.com/lmbench/lmbench3.tar.gz
tar -zxvf lmbench3.tar.gz
cd src/
make results

2)可能会报错:

gmake[]: Entering directory `/lmbeanch/lmbench3/src'
gmake[]: *** No rule to make target `../SCCS/s.ChangeSet', needed by `bk.ver'. Stop.
gmake[]: Leaving directory `/lmbeanch/lmbench3/src'
make: *** [lmbench] Error

3)解决办法:

把src/Makefile文件的第231行的$O/lmbench : ../scripts/lmbench  bk.ver  的 bk.ver 去掉为$O/lmbench : ../scripts/lmbench

4)使用

下篇博文专门总结。

CPU上下文切换以及相关指标的理解的更多相关文章

  1. 如何理解CPU上下文切换(二)

    如何理解CPU上下文切换(二) 1.引 你们好,可爱的小伙伴们.^_^ 多个进程竞争CPU就是一个经常被我们忽视的问题. 你们一定很好奇,进程在竞争CPU的时候并没有真正运行,为什么还会导致系统的负载 ...

  2. 性能测试必备知识(5)- 深入理解“CPU 上下文切换”

    做性能测试的必备知识系列,可以看下面链接的文章哦 https://www.cnblogs.com/poloyy/category/1806772.html 前言 上一篇文章中,举例了大量进程等待 CP ...

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

    分类: 4.软件设计/架构/测试 2010-01-12 19:58 34241人阅读 评论(4) 收藏 举报 测试loadrunnerlinux服务器firebugthread 上篇讲如何用LoadR ...

  4. CPU 上下文切换及案例分析

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

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

    上一节,我给你讲了 CPU 上下文切换的工作原理.简单回顾一下,CPU 上下文切换是保证 Linux 系统正常工作的一个核心功能,按照不同场景,可以分为进程上下文切换.线程上下文切换和中断上下文切换. ...

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

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

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

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

  8. 聊聊Linux中CPU上下文切换

    目录 什么是CPU上下文 CPU上下文切换 上一任务的CPU上下文保存在哪? 进程上下文切换 内核空间和用户空间 top命令查看CPU资源 系统调用 进程上下文切换 和 系统调用的区别? 进程切换的常 ...

  9. 【转】CPU上下文切换的次数和时间(context switch)

    http://iamzhongyong.iteye.com/blog/1895728 什么是CPU上下文切换? 现在linux是大多基于抢占式,CPU给每个任务一定的服务时间,当时间片轮转的时候,需要 ...

随机推荐

  1. 团队一致性的PHP开发环境之Docker

    docker php环境模型 docker 简介 Docker 是一个开源的应用容器引擎 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现 ...

  2. MySQL UDF Dynamic Library Exploit in *nix

    /* } 本文转hackfreer51CTO博客,原文链接:http://blog.51cto.com/pnig0s1992/575448,如需转载请自行联系原作者

  3. POJ2421 Constructing Roads 最小生成树

    修路 时限: 2000MS   内存限制: 65536K 提交总数: 31810   接受: 14215 描述 有N个村庄,编号从1到N,您应该修建一些道路,使每两个村庄可以相互连接.我们说两个村庄A ...

  4. nginx的数据结构集合(随时更新)

    在学习nginx的时候,因为其数据结构略多,看过后一般就忘记了.所以边学习边记录在这里吧,方便以后查看. ngx_buf_t:缓冲区结点 1: typedef struct ngx_buf_s ngx ...

  5. Linux安装maven(详细教程)

    一.简介 Maven是意第绪语,意思是“知识的积累者”,最初是为了简化Jakarta Turbine项目中的构建过程.有几个项目,每个项目都有自己的Ant构建文件,所有项目都略有不同.JAR已检入CV ...

  6. spring bootweb综合开发的整理

    1.json接口开发 当前开发中微服务的概念日渐深入人心,所以json数据交互可以带来的便利也不言而喻.在springboot中json数据的返回方式比较简单,只需要用@RestController注 ...

  7. 跟哥一起学Python(1) - python简介

    01—写在前面 我做了十几年的程序猿,码过代码.带过项目.做过产品经理.做过软件架构师.因为我是做通信设备软件的,面向底层操作系统,所以我的工作主要以C语言为主.Python在我的工作中通常用来写一些 ...

  8. 用Redislive监控redis

    注意:RedisLive是使用Python2.x编写,建议使用2.7,本次环境为Centos 7.2,默认Python版本2.7. 项目地址:https://github.com/nkrode/Red ...

  9. 算法---BitMap

    问题: 假设有3亿个整数(范围0-2亿),如何判断某一个树是否存在.局限条件一台机器,内存500m. 常规的思路:我们可以将数据存到一个集合中,然后判断某个数是否存在:或者用一个等长的数组来表示,每个 ...

  10. LeetCode--LinkedList--83.Remove Duplicates from Sorted List(Easy)

    题目地址https://leetcode.com/problems/remove-duplicates-from-sorted-list/ 83. Remove Duplicates from Sor ...