浅析进程优先级(上)

news2024/9/21 10:34:34

什么是进程优先级?

进程优先级:将处理器资源分配给进程的先后顺序

Linux 中每个进程都有相应的优先级 (优先级可能动态改变)

进程优先级决定进程 何时执行 和 获得处理器的时间

进程优先级通常表现为一个整数值 (数值大小决定优先级高低)

Linux 中的进程类型 (用户观点)

交互型进程

  • 表现:较多的人机交互,进程会不断进入阻塞状态,等待用户输入
  • 特点:用户输入后,必须被及时唤醒执行处理逻辑

批处理型进程

  • 表现:不需要人机交互,在后台执行
  • 特点:对时间不敏感,常用于数据处理

Linux 中的进程类型 (内核观点)

普通进程

  • 使用完全公平策略进行调度的进程 (SCHED_OTHER)
  • 不能保证时间要求严格或高优先级的进程优先执行

实时进程

  • 使用 SCHED_FIFO 和 SCHED_RR 进行调度的进程
  • 根据进程优先级进行实时调度,在一定程度上保证实时性

进程实时性与优先级

实时性

  • 硬实时:对响应时间要求非常严格,必须保证在一定时间内完成
  • 软实时:硬实时的弱化形式,可接受一定程序上小概率的超时响应

进程分类

  • 普通进程:优先级 [100, 139] => 默认 120,值越小优先级越高
  • 实时进程:优先级 [0, 99]  => sudo chrt -f 11 ./a.out 值越大优先级越高

细说进程优先级

注意:

  • 一般情况下动态优先级等于规范优先级
  • 不同之处在于,动态优先级可能暂时被提高
  • 对进程的处理都以静态优先级为准

top 命令中的 PR 指什么?

实时进程

  • PR = 规范优先级 - 100
  • PR = rt => rt_priority == 99

普通进程

  • PR = 规范优先级 - 100 + nice_value

再论完全公平策略 (Completely Fair Scheduler)

"完全公平" 并非意味着所有进程获得相等时间片

"完全公平" 指的是所有进程都能获得时间片 (时间片未必相等)

问题:完全公平策略中如何确定进程的执行时间片?

  • 引入权重 (weight),进程间按照权重比例分配时间片
  • weight = 1024 / (1.25 ^ nice_value)
  • nice_value => 取值范围 [-20, 19],默认值为 0,值越高权重越低

nice_value 对于普通的意义

假设 A 和 B 是处理相同计算任务的进程:

  • A 进程:nice == 0,则:weight == 1024
  • B 进程:nice == 5,则:weight == 335.5432
  • 所以:A 进程获取的处理器时间大致是 B 进程的 3 倍

实验设计

父进程创建子进程,并开始复杂计算

子进程设置 nice_value 为 5,并开始复杂计算

期望:父进程占用的处理器时间是子进程 3 倍左右

普通进程 nice_value 接口

#include <sys/time.h>

#include <sys/resource.h>

int getpriority(int which, int who);

int setpriority(int which, int who, int prio);

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

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

相关文章

寻找两个相交链表的相交节点

分析&#xff1a; 如图所示&#xff0c; A 长度为mkB长度为nk张三&#xff0c;李四两人分别从A和B的起始点相同速度出发&#xff0c;无论谁到达终点时&#xff0c;都从另一条队列的起点再次出发。假定起始&#xff0c;张三沿着A走&#xff0c;李四沿着B走。当李四到达终点后&a…

计算机毕业设计选题分享-node.js旅游景点分享网站03796(赠送源码数据库)JAVA、PHP,node.js,C++、python,大屏数据可视化等

node.js旅游景点分享网站 摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。旅游景点分享网站设计&#xff0c;主要的模块包括查看后台首页、轮播图&#xff08;轮播图管理&#xff09;、网站公告…

list-watch和节点亲和性和node亲和性

k8s的集群调度 scheduler:负责调度资源&#xff0c;把pod调度到node节点 预算策略 优先策略 1、list-watch k8s集群当中&#xff0c;通过list-watch的机制进行每个组件的协作&#xff0c;保持数据同步&#xff0c;每个组件之间解耦 kubectl配置文件&#xff0c;向APIserv…

城堡世界定制

城堡世界是一款移动应用程序&#xff0c;通常在手机上使用。 该游戏的主要功能丰富多样&#xff0c;用户可以通过购买不同的城堡卡来开启自己的城堡&#xff0c;这不仅可以满足玩家对个性化的追求&#xff0c;还可以让玩家在游戏中获得更多的乐趣。 作为一家专注于互联网领域的…

Linux进程通信——system V进程间通信

目录 system V共享内存 共享内存的原理 共享内存的建立与释放 共享内存的创建 shmget 共享内存的释放 shmctl 共享内存的关联 shmat 共享内存的去关联 shmdt 用共享内存实现serve和client的简单通信 共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的…

分治法:分而治之

排序算法中的快速排序&#xff0c;归并排序都用了分治思想 题目描述&#xff1a; 题目地址&#xff1a;LeetCode 50 数组中的第K个最大元素 题目描述&#xff1a; 题目地址&#xff1a;LeetCode 215

基于ssm的高校智能培训管理系统分析与设计论文

摘 要 如今的年代&#xff0c;已经是步入信息社会了&#xff0c;不仅信息更新速度频繁&#xff0c;信息量也大&#xff0c;在信息时代必须有相应的处理信息的方法&#xff0c;如果还采用以前的结绳记事或者笔写纸记&#xff0c;不仅是信息录入效率上赶不上节奏&#xff0c;在信…

Superset二次开发之提高Charts下载图片分辨率

需求:图片变高清 现状:Charts下载图片功能,下载的图片分辨率太差,用户体验不友好 源码分析 路径1:superset-frontend/src/dashboard/components/SliceHeaderControls/index.tsx接口1:DOWNLOAD_AS_IMAGE路径2:superset-frontend/src/utils/downloadAsImage.ts接口2:d…

VmWare虚拟机的安装

VmWare官方最新版下载地址 vmware官方下载地址 安装流程 安装成功验证 安装完成之后&#xff0c;打开网络中心&#xff0c;一定要确认这里多出两个网络连接&#xff0c;才证明Vmware已经安装成功

静态网页设计——千姿百色旅游网(HTML+CSS+JavaScript)(dw、sublime Text、webstorm、HBuilder X)

前言 声明&#xff1a;该文章只是做技术分享&#xff0c;若侵权请联系我删除。&#xff01;&#xff01; 感谢大佬的视频&#xff1a; https://www.bilibili.com/video/BV1oe411m7kH/?vd_source5f425e0074a7f92921f53ab87712357b 源码&#xff1a;https://space.bilibili.co…

编码数据集生成框架 UnitGen 0.4.0:代码文档生成、测试代码生成

UnitGen 是我们从 UnitEval 拆分出来的代码数据集生成项目&#xff0c;旨在为基于开源模型供的私有化部署提供更好的编码数据集。 在结合开源模型 AutoDev 插件之后&#xff0c;你可以使用 UnitGen 结合企业内部现有的代码生成微调数据集&#xff0c;以让模型生成的代码更适合…

【大数据进阶第三阶段之Hive学习笔记】Hive安装

目录 1、环境准备 2、下载安装 3、配置环境变量 4、配置文件 4.1、配置hive-env.sh ​编辑4.2、配置hive-site.xml 5、上传配置jar 6、启动 1、环境准备 安装hadoop 以及 zookeeper、mysql 【大数据进阶第二阶段之Hadoop学习笔记】Hadoop 运行环境搭建-CSDN博客 《z…

AntDB内存管理之内存上下文之如何使用内存上下文

5.如何使用内存上下文 使用内存上下文之前&#xff0c;我们需要先对其进行创建。AntDB启动时已经创建并初始化好了部分内存上下文&#xff0c;例如&#xff1a;TopMemoryContext。这个TopMemoryContext是所有内存上下文的父节点或者祖先节点。一般我们创建的内存上下文都在Top…

【docker笔记】Docker容器数据卷

Docker容器数据卷 卷就是目录或者文件&#xff0c;存在于一个或多个容器中&#xff0c;由docker挂载到容器&#xff0c;但不属于联合文件系统&#xff0c;因此能够绕过Union File System提供一些用于持续存储或共享数据的特性 卷的设计目的就是数据的持久化&#xff0c;完全独…

西南地区直播产业市场规模分析,透视成都直播基地产业全景

直播电商已进入全民化发展&#xff0c;作为一种新型的电子商务形式&#xff0c;成都直播产业园利用互联网渠道进行营销&#xff0c;为用户提供更具高度互动性、专业性、丰富、直观、实时的全面购物体验。本年度&#xff0c;西南地区直播产业市场规模宏大&#xff0c;以成都为代…

mysql服务多实例运行

1、官网下载mysql安装包 https://downloads.mysql.com/archives/community/ 2、解压安装包 tar -zxvf mysql-8.1.0-linux-glibc2.28-aarch64.tar.xz -C /usr/localmv /usr/local/mysql-8.1.0-linux-glibc2.28-aarch64 /usr/local/mysql 3、创建mysql用户组 groupadd…

【面试】 前端竞争压力大?揭秘让你们学后端的真实动机!

前端开发属于程序员吗? 网友是这样回答的&#xff1a; 看完前端同学的评论&#xff0c;我悟了&#xff0c;你们让人都去学后端卷&#xff0c;然后减小前端竞争压力是吧&#xff1f; 哈哈哈&#xff0c;你们这帮老6…… 于是我去拿出了我收藏的 某前端招聘JD来盘一盘 那些…

APP加固技术及其应用

文章目录 引言 APP加固的概念 APP加固的方案 APP加固在实际开发中的应用 总结 引言 在移动应用开发过程中&#xff0c;APP加固技术起到了非常重要的作用。APP加固是将apk文件进行混淆加密&#xff0c;以防止别人反编译获取我们的源码和资源文件。目前市场上主流的APP加固…

【ros笔记】urdf文件

urdf文件属于xml文件&#xff0c;他的标签有&#xff1a; <robot name"robot_name"><!-- 看的见摸的着刚体用link --><link name"base_link"><!-- 可视化部分 --><visual><!-- 几何形状 --><geometry><!-- b…

VOSviewer分析知网文献以及图片导出

目录 1.结果展示&#xff1a;2.操作步骤&#xff1a;2.1创建图片&#xff1a;2.2调整图片&#xff1a;2.3保存图片&#xff1a; 小结&#xff1a; 1.结果展示&#xff1a; 2.操作步骤&#xff1a; 2.1创建图片&#xff1a; 在知网上搜索关键词&#xff0c;然后将所有文献以相…