多核调度预备知识

问题

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

进程调度的本质

任务 / 进程 切换

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

进程调度的本质

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

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

上下文切换由中断触发 (时钟中断,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;往往存在更多系列对象的创建工作。 如何应对这种变化…

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

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

Linux 485驱动通信异常

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

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

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

金和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 中每个…

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…

谷歌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…

docker 安装可视化工具 Portainer 以及 汉化

安装portainer是最新版本&#xff0c;汉化指定版本2.9.1 。如果要安装汉化版&#xff0c;可直接跳转步骤四 一、拉去镜像 安装网址&#xff1a;Install Portainer BE with Docker on Linux - Portainer Documentation docker pull portainer/portainer二、根据portainer镜像创建…

常用rtmp、m3u8、flv、mp4直播流在线测试地址

✍️作者简介&#xff1a;小北编程&#xff08;专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向&#xff09; &#x1f433;博客主页&#xff1a; 开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN &#x1f514;如果文章对您有一定的帮助请&#x1f…

CMake入门教程【基础篇】CMake+Linux gcc构建C++项目

文章目录 1.概述2.GCC与CMake介绍3.安装CMake和GCC4.代码示例 1.概述 在Linux环境下&#xff0c;使用CMake结合GCC&#xff08;GNU Compiler Collection&#xff09;进行项目构建是一种常见且高效的方法。CMake作为一个跨平台的构建系统&#xff0c;可以生成适用于不同编译器的…

基于SSM的网络游戏交易平台设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

湖南大学-算法设计与分析-2023期末考试【原题】

前言 21&#xff1a;00刚刚结束的考试&#xff0c;凭着回忆把题目重现出来了&#xff0c;在复习的时候根本找不到往年的试卷&#xff0c;希望这张回忆的试卷能帮助到下一届的同学。知道题目基本上就能做出来了&#xff0c;但是不知道是真的做不出来&#xff0c;我就不给答案了…

【软件工程】走进敏捷开发:灵活、协作、迭代的软件工艺之旅

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 软件工程 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言&#xff1a; 正文 敏捷开发&#xff08;Agile Development&#xff09; 详细介绍&#xff1a; 优缺点&#xff1a; 优点&#xf…

【Mybatis】深入学习MyBatis:高级特性与Spring整合

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; Mybatis ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 高级特性 1 一级缓存和二级缓存 一级缓存 二级缓存 2 延迟加载 5 整合Spring 1 MyBatis-Spring模块 2 事务管理 结…

pytest conftest定义一个fixtrue获取测试环境地址

方便全局切换地址 pytest.fixture() def config():data {测试环境: {A环境: 127.0.0.1,B环境: 127.0.0.2,C环境: 127.0.0.3,D环境: 127.0.0.4},}return data.get(测试环境, {}).get(A环境)import pytestdef test_case001(config):url http://str(config):8080/api/user/logi…