多核调度预备知识

问题

内核对进程调度时发生了什么?

进程调度的本质

任务 / 进程 切换

  • 即:上下文切换,内核对处理器上的执行的进程进行切换
  • "上下文" 指:寄存器的值
  • "上下文切换" 指:
    • 将寄存器的值保存在内存中 (进程被剥夺处理器,停止执行)
    • 将另一组寄存器的值从内存中加载到寄存器 (调度下一个进程执行)

进程调度的本质

当时间片耗完,不管进程正在执行什么代码,都一定会发生上下文切换!

上下文切换必然导致进程状态的转换

上下文切换由中断触发 (时钟中断,IO中断,等)

详解 Linux 进程状态 (ps au)

细说空闲状态

处理器上电后,开始一直不停的向下执行指令

当系统中没有进程时,会执行一个 "不执行任何操作的" 的空闲进程

空闲进程的职责:执行特殊指令使处理器进入休眠状态 (低功耗状态)

空闲状态是一种暂态,但凡出现就绪进程,空闲状态立即结束

Linux 性能工具简介

ps -- 查看进程运行时数据 (ps au)

top -- Linux 整体性能监测工具 (类似任务管理器)

sar -- Linux 活动情况报告 (系统性能分析工具)

Linux 系统平均负载

即:Linux 系统负载平均值 (Linux System Load Averages)

该值表示的是一段时间内任务对系统资源需求的平均值 (1、5 和 15 分钟)

  • 如果平均值接近 0,意味着系统处于空闲状态
  • 如果平均值大于 1,意味着系统繁忙,任务需要等待,无法及时执行
    • 如果 1min 平均值高于 5min 或 15min 平均值,则负载正在增加
    • 如果 1min 平均值低于 5min 或 15min 平均值,则负载正在减少

详解 sar -q

runq-sz:执行队列的长度

plist-sz:运行中的任务 (进程 & 线程) 总数

ldavg-1:最近 1min 系统平均负载

ldavg-5:最近 5min 系统平均负载

ldavg-15:最近 15min 系统平均负载

系统调度观察实验

通过 Linux 性能工具观察进程调度

  • 单处理器运行过程
  • 多处理器运行过程

系统调度核心性能指标

吞吐量:单位时间内的工作总量 (越大越好)

  • 处理器资源消耗越多 (空闲状态占比越低),吞吐量越大
  • 对于进程调度而言,吞吐量指单位时间处理的进程数量

延迟:从开始处理任务到结束处理任务所耗费的时间 (越短越好)

  • 对于进程而言,延迟即生命期,指进程从运行到结束所经历的时间
  • 注意:运行 和 结束 不同,运行时间可能很长,但执行时间可能很短

吞吐量计算一

吞吐量计算二

吞吐量计算三

假设:每个进程固定执行 60ms

则:进程运行结束时

结论:

处理器的能力由硬件设计决定,吞吐量决定一个上限

当吞吐量未达上限,进程的延迟取决于进程自身

当吞吐量达到上限,随着进程数量增加,总延迟增加,但平均延迟不变

思考

多核吞吐量计算

现实中的系统

理想状态:进程正在执行,并且没有就绪状态的进程

空闲状态:处理器占用率低,吞吐量低

繁忙状态:

多个进程同时运行,但存在多个就绪状态的进程

此时,吞吐量很高(可能达到峰值),但总延迟会变长

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/594207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp 微信小程序 输入框限制输入2位小数

此处input的type为digit <input v-model"amount" type"digit" placeholder"请填写金额" input"checkAmount"/>data() {return {amount:""} }methods: {// 小数点后2位checkAmount(e){e (e.match(/^\d*(\.?\d{0,2})…

Abstract Factory抽象工厂模式(对象创建)

抽象工厂模式&#xff1a;Abstract Factory 链接&#xff1a;抽象工厂模式实例代码 解析 目的 在软件系统中&#xff0c;经常面临着“一系列相互依赖的对象工作”&#xff1b;同时&#xff0c;由于需求的变化&#xff0c;往往存在更多系列对象的创建工作。 如何应对这种变化…

基于SpringBoot的实训管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的实训管理系统,java项目…

im6ull学习总结(三-2)文字显示中文字符

承接上篇文章 中文字符的点阵显示 使用点阵字库时&#xff0c;中文字符的显示原理跟 ASCII 字符是一样的。要注意的地方在于中文的编码&#xff1a;在 C 源文件中它的编码方式是 GB2312 还是 UTF-8&#xff1f;编译出的可执行程序&#xff0c;其中的汉字编码方式是 GB2312 还…

Linux 485驱动通信异常

背景 前段时间接到一个项目&#xff0c;要求用主控用485和MCU通信。将代码调试好之后&#xff0c;验证没问题就发给测试了。测试测的也没问题。 但是&#xff0c;到设备量产时&#xff0c;发现有几台设备功能异常。将设备拿回来排查&#xff0c;发现是485通信有问题&#xff…

基于BP神经网络的模型建立,然后用多目标优化进行寻优

目录 背影 遗传算法的原理及步骤 基本定义 编码方式 适应度函数 运算过程 代码 结果分析 完整代码下载: 基于BP神经网络的模型建立,然后用多目标优化进行寻优(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/download/abc991835105/88689232 背影 基于BP神…

Unity3D 锁帧与垂直同步的不同处详解

前言 Unity3D是一款强大的游戏开发引擎&#xff0c;而锁帧与垂直同步是其中两个重要的概念。本文将详细解释锁帧与垂直同步的不同之处&#xff0c;并给出相关的技术详解和代码实现。 对惹&#xff0c;这里有一个游戏开发交流小组&#xff0c;希望大家可以点击进来一起交流一下…

什么是聚合支付,又能带来哪些好处?

随着科技的飞速发展&#xff0c;人们的支付方式也在不断地发生变革。从最初的现金支付、银行卡支付&#xff0c;到现在的移动支付、扫码支付等&#xff0c;支付方式已经变得越来越便捷。聚合支付作为一种新型的支付方式&#xff0c;也在逐渐改变着人们的生活方式。那么&#xf…

CMake入门教程【核心篇】添加子目录(add_subdirectory)

文章目录 1.概述2.添加子目录3.指定二进制目录4.排除子目录5.使用别名6.传递变量7.检查子目录是否存在 1.概述 add_subdirectory是 CMake 中的一个命令&#xff0c;用于向当前项目添加一个子目录。它的语法如下&#xff1a; #mermaid-svg-9zKJ3AvoVRln9hon {font-family:"…

本科生自学PYTHON路线

博主为本科生,想要自学python,期待得到意见 基础知识&#xff1a;首先学习Python的基本语法和语法规则。学习Python的基本数据类型&#xff08;数字、字符串、列表、元组、字典等&#xff09;&#xff0c;掌握基本的控制流语句&#xff08;条件语句、循环语句&#xff09;和函数…

金和OA jc6 ntko-upload 任意文件上传漏洞

产品简介 金和网络是专业信息化服务商&#xff0c;为城市监管部门提供了互联网监管解决方案&#xff0c;为企事业单位提供组织协同OA系统升开发平台&#xff0c;电子政务一体化平台智慧电商平合等服务 漏洞概述 金和OA jc6系统ntkoUpload接口处存在任意文件上传漏洞&#xf…

每日一练:LeeCode-503. 下一个更大元素 II (中)【单调栈】

本文是力扣LeeCode-503. 下一个更大元素 II 学习与理解过程&#xff0c;本文仅做学习之用&#xff0c;对本题感兴趣的小伙伴可以出门左拐LeeCode。 给定一个循环数组 nums &#xff08; nums[nums.length - 1] 的下一个元素是 nums[0] &#xff09;&#xff0c;返回 nums 中每个…

宏预处理器的非直译解释备忘

宏 非直译解释: 计算机科学里的宏指的是&#xff0c;在未执行程序运算前&#xff0c;预先把数据存入内存生成一张存有数据的表格结构体&#xff0c;以方便汇编机器指令读取修改表格地址中的数据参数。 macro n.宏指令; adj.巨大的&#xff1b;极厚的&#xff1b;特别突出的…

c++_运算符重载(时钟加减)

介绍 本文主要介绍 减号( - )、加号( )、加等()运算符重载并复现了时钟运行方式 源码 #include<iostream>using namespace std;class Time { public://加号计算函数void t_add(int& temp, const int& Right, bool& b){//判断时间是否大于 60if ((temp Rig…

c语言-浮点型数据在内存中的存储

目录 前言一、浮点数存储例子二、浮点数在内存的存储格式2.1 32位浮点数存储格式2.2 64位浮点数存储格式 三、IEEE 754对有效数字M和指数E的规定3.1 对存储有效数字M的规定3.2 对存储指数E的规定3.2.1 E在32位浮点数的存储格式3.2.2 E在64位浮点数的存储格式 3.3 对读取有效数M…

pythonnumpy六:高级功能:数组排序、数组连接、数组拆分等。

numpy是一个强大的Python库&#xff0c;提供了丰富的数组操作功能。下面我会详细介绍numpy中的数组排序、数组连接和数组拆分等功能。 1.数组排序&#xff1a; 使用np.sort()函数可以对数组进行升序排序。它返回一个新的已排序的数组。若要在原始数组上进行排序&#xff0c;可…

谷歌Gemini模型,碾压GPT-4!

谷歌Gemini 1.0革新&#xff0c;推出Gemini Ultra、Gemini Pro和Gemini Nano模型。Gemini Ultra强大但慢&#xff0c;Gemini Pro通用&#xff0c;Gemini Nano高效。Gemini模型在多领域与ChatGPT竞争&#xff0c;尤其Gemini Pro已应用于Bard。Gemini模型预计将在2024年通过Bard …

NLP论文阅读记录 - 2021 | SimCLS:抽象概括对比学习的简单框架

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.相关工作2.1优势 三.本文方法——抽象概括的对比学习框架3.1 第一阶段&#xff1a;候选生成3.2 第二阶段&#xff1a;无参考评估3.3对比训练 四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4…

【论文阅读】AADiff: Audio-Aligned Video Synthesis with Text-to-Image Diffusion

AADiff:基于文本到图像扩散的音频对齐视频合成。 code&#xff1a;没开源 paper&#xff1a;[2305.04001] AADiff: Audio-Aligned Video Synthesis with Text-to-Image Diffusion (arxiv.org) 一种新的T2V框架&#xff0c;额外使用音频信号来控制时间动态&#xff0c;使现成的…

MySQL中的六种日志你都懂么?不懂!那就必须看看

&#x1f604; 19年之后由于某些原因断更了三年&#xff0c;23年重新扬帆起航&#xff0c;推出更多优质博文&#xff0c;希望大家多多支持&#xff5e; &#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Mi…