Linux之CPU调度策略

调度进程

单个 CPU一次只能执行一个进程,虽然 Linux 系统通过使用多任务同时处理多个进程,但当多个进程同时运行在一个CPU 上时,它通过交错执行这些进程。

内核使用进程调度器来决定在某一时间点上哪个进程在运行。调度器必须平衡几个选项:

  • 快速决定下一个该运行的进程

  • 进程可以公平的活动 CPU 时间,但高优先级的进程会活动更多的运行时间并且可以抢占低优先级的进程。

  • 响应有力的交互式应用程序

  • 在各种工作负载下可预测和可扩展

进程优先级

在 Linux 中,调度器根据分配给每个线程或进程的调度策略和优先级来控制执行顺序。

这些调度策略分为:实时策略和非实时策略。

调度策略

RHEL提供六种调度策略,分为实时调度策略和非实时调度策略。

1、实时
SCHED FIFO:不带时间分片的先进先出策略。拥有该策略的进程会一直运行,直到被I/O 阻塞或是更改优先级的进程抢占。
SCHED RR:该策略使用时间片循环调度算法,具体同样优先级的任务轮询执行,直到耗尽预定的时间片。

2、非实时
SCHED_NORMAL(OTHER):linux 系统中大多数进程使用的默认策略。
SCHED BATCH:适合批量处理的进程。
SCHED IDLE:该策略有利于运行低优先级应用程序,

CFS 调度
从 2.6.23 版本的内核开始,CFS 就成为默认的调度程序。CFS 使用红黑树来管理可运行的进程。它是基于虚拟时间(virtualtime)。
拥有虚拟时间最长,等待时间最长的进程将获得使用 CPU。该进程在执行期间,虚拟时间将开始减少。

DEADLINE 调度
在 RHEL8 中,引入了一个新的调度策略 SCHED DEADLINE。该调度主要应用在实时系统中,保证实时任务的有效调度。

Deadline 调度使用三个参数:周期、期限和运行时间(最坏情况的运行时间)

  • 周期:如果一个视频处理任务必须每秒处理60帧,新的帧每隔 16ms(毫秒)会到来,则周期为 16ms。

  • 期限:指任务需要交付结果的最长时间,必须在这个期限结束前完成任务。

  • 运行时间:表示处理一个任务的最长时间。

注意:单位都为 ns。
上面的例子表示:该任务将在每 16.6ms内确保得到 5ms的CPU 时间来运行,并且5ms 的 CPU 运行时间都可以在 10ms 期限内保证可用。

使用命令行方式更改调度选项

管理员可以使用 chrt 命令查看某个进程(-p)的策略和优先级。同时当使用 chrt 开启一个新程序时,需要制定策略和优先级,如果未指定策略,默认是 SCHED RR.

策略选项:

-b 指定为 SCHED BATCH
-f 指定为 SCHED FIFO
-i 指定为 SCHED IDLE
-o 指定为 SCHED NORMAL(OTHER)
-r 指定为 SCHED RR
-d 指定为 SCHED DEADLINE

例如为某个新进程指定策略和优先级:

使用 systemd 的方式更改调度选项

在服务启动时指定调度策略和优先级,需要在[Service]段落中指定:

  • CPUSchedulingPolicy:设置服务的CPU 调度策略。other,batch,idle,fifo,rr。(当前不支持 deadline 策略)

  • CPUSchedulingPriority:设置优先级,对于实时调度策略,范围是1(最低)-99(最高)


完成后,需要重启 systemctl daemon-reload,然后再重启服务

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

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

相关文章

2025年IT项目经理必看!9大项目管理平台完全对比,选错软件你后悔一辈子!

一、引言2025 年,IT 项目管理面临着更多的挑战和机遇。选择合适的项目管理平台对于 IT 项目经理来说至关重要,一个好的平台能够提高项目管理效率,确保项目顺利进行。本文将对 2025 年九大热门项目管理平台进行全面对比,帮助 IT 项目经理做出明智的选择。 在当今数字化时代,…

Unity版本使用情况统计(更新至2024年11月)

UWA发布|本期UWA发布的内容是第十五期Unity版本使用统计,统计周期为2024年5月至2024年11月,数据来源于UWA网站(www.uwa4d.com)性能诊断提测的项目。希望给Unity开发者提供相关的行业趋势作为参考。2024年5月 - 2024年11月版本分布 以近半年的数据统计来看,如图1所示,2…

sql学习~

一.mysql数据模型二.sql简介三、mysql通用语法 1.注释 单行注释。-- 内容(注意空格) 多行注释。/* 内容 */ 2.不区分大小写 3.分号结尾。 四、sql分类1.DDL 1>进入mysql mysql -uroot -p+密码 2>操作数据库查询数据库show databases; 创建数据库create database 数据库…

Qt 打包为可执行文件(详解)

https://blog.csdn.net/dfr110719/article/details/136992619<div id="content_views" class="htmledit_views"><p id="main-toc"><strong>目录</strong></p> 一.打包为文件夹 二.打包为可执行文件(.exe) 当我…

关于train, evaluate 和 作图——dymean3

TMscore 从代码实现来看,这里的 TMscore 计算是通过调用外部的 TMscore 可执行程序完成的,输入的 PDB 文件包含了原子的三维坐标信息。那么具体答案可以分以下几个方面来分析: 1. 是否只对 CA 坐标进行计算答案:否。 TMscore 通常会基于整个 PDB 文件中所有原子的坐标计算分…

微信小程序生成朋友圈分享图/海报

效果图海报生成原文链接:https://developers.weixin.qq.com/community/develop/article/doc/000ac686c5c5506f18b87ee825b013demo 代码片段:https://developers.weixin.qq.com/s/J38pKsmK7Qw5小程序海报生成工具链接:https://developers.weixin.qq.com/community/develop/ar…

嵌入式Linux系统构建

参考资料 本篇内容主要参考 韦东山的《嵌入式Linux应用开发完全手册V5.2_IMX6ULL_Pro开发板.pdf》 具体课程见 百问网嵌入式专家-韦东山嵌入式专注于嵌入式课程及硬件研发 实践环境为百问网官方开发板 100ASK_IMX6ULL-Pro 目标系统组成 Linux系统启动流程一个有效的根文件系统集…

OSG开发笔记(三十四): OsgUtil::Simplifier:简化几何体,提升显示性能和渲染效率

前言对于一些较大的图形,会出现显示卡顿和渲染缓慢的问题,这时候就要使用到osgUtil::Simplifier简化器,来对其进行简化。 Demo osgUtilosgUtil库是osg的四大核心库之一,OSG 核心库提供了用于场景图形操作的核心场景图形功能、类和方法;开发3D图形程序所需的某些特定功能函…

带排序功能的js masonry瀑布流插件

在线预览 下载sortableJs是一款带排序功能的js masonry瀑布流插件。sortableJs能够使元素以卡片形式显示,并以masonry瀑布流方式进行布局,通过点击分类按钮,可以将卡片按指定的方式动态排序。使用方法 在页面中引入sortable.min.css和sortable.min.js文件。< link rel=…

OpenDaylight安装和配置

环境: Ubuntu 14.04.6 LTS (GNU/Linux 4.4.0-142-generic x86_64) 注意,需要确保虚拟机中安装有jdk root@UbuntuDesktop:~# java -version java version "1.8.0_151" Java(TM) SE Runtime Environment (build 1.8.0_151-b12) Java HotSpot(TM) 64-Bit Server VM (b…

如何测试一根网线传输质量

我心里有个疑问,一根成品网线或者自己制作的网线传输质量到底好不好,应该如何判断?这些网线速度到底如何是拿测线器测不出来的,毕竟测线器只能测试线路的通断,但线路质量是测试不出的。 我们也没有高大上的福禄克设备毕竟对于家里的几根线,动用这么专业高价的设备也不值当…

leetcode240

leetcode240思路:我们将矩阵逆时针旋转45度,可以发现矩阵变成了一个二叉搜索树,往左走是小,往右走是大。这样就能以matrix[0] [j]为根开始搜索。class Solution {//10:20~10:28public boolean doSearch(int[][] matrix,int i,int j,int target){if (i>=matrix.length||i…