Linux源码阅读笔记04-实时调度类及SMP和NUMA

  • Linux进程分类
    • 实时进程
    • 普通进程
  • 如果系统中有一个实时进程并且可执行,调度器总是会选择他,除非有另外一个优先级高的实时进程。
  • SCHED_FIFO:没有时间片,被调度器选择之后,可以运行任意长的时间。
  • SCHED_RR:有时间片,进程运行时会减少。

实时调度类分析

实时调度实体sched_rt_entity数据结构

struct sched_rt_entity {
	struct list_head		run_list; // 专门用于加入到优先级队列当中
	unsigned long			timeout; // 设置时间超时
	unsigned long			watchdog_stamp; // 记录jiffies值
	unsigned int			time_slice; // 时间片
	unsigned short			on_rq;
	unsigned short			on_list;

	struct sched_rt_entity		*back;
#ifdef CONFIG_RT_GROUP_SCHED
	struct sched_rt_entity		*parent; // 指向父RT调度实体
	/* rq on which this entity is (to be) queued: */
    // 实时类
	struct rt_rq			*rt_rq; // RT调度实体所属的实时运行队列
	/* rq "owned" by this entity/group: */
	struct rt_rq			*my_q; // RT调度实体所拥有的实时运行队列,用于管理子任务或子组任务
#endif
} __randomize_layout;
  • 实时类
struct rt_rq {
	struct rt_prio_array	active;
	unsigned int		rt_nr_running;
	unsigned int		rr_nr_running;
#if defined CONFIG_SMP || defined CONFIG_RT_GROUP_SCHED
	struct {
		int		curr; /* highest queued rt task prio */
#ifdef CONFIG_SMP
		int		next; /* next highest */
#endif
	} highest_prio;
#endif
#ifdef CONFIG_SMP
	unsigned long		rt_nr_migratory;
	unsigned long		rt_nr_total;
	int			overloaded;
	struct plist_head	pushable_tasks;

#endif /* CONFIG_SMP */
	int			rt_queued;

	int			rt_throttled;
	u64			rt_time;
	u64			rt_runtime;
	/* Nests inside the rq lock: */
	raw_spinlock_t		rt_runtime_lock;

#ifdef CONFIG_RT_GROUP_SCHED
	unsigned long		rt_nr_boosted;

	struct rq		*rq;
	struct task_group	*tg;
#endif
};

实时调度类

const struct sched_class rt_sched_class = {
	.next			= &fair_sched_class,
	.enqueue_task		= enqueue_task_rt,// 将一个task加入就绪队列尾部
	.dequeue_task		= dequeue_task_rt,// 将一个task从就绪队列移除
	.yield_task		= yield_task_rt, // 主动放弃执行

	.check_preempt_curr	= check_preempt_curr_rt,
	// 选择就绪队列的拿个任务将要被调度,prev是将要被调度出的任务,返回是将要被调度的任务
	.pick_next_task		= pick_next_task_rt,
	//
	.put_prev_task		= put_prev_task_rt,
	.set_next_task          = set_next_task_rt,

#ifdef CONFIG_SMP
	.balance		= balance_rt,
	.select_task_rq		= select_task_rq_rt,
	.set_cpus_allowed       = set_cpus_allowed_common,
	.rq_online              = rq_online_rt,
	.rq_offline             = rq_offline_rt,
	.task_woken		= task_woken_rt,
	.switched_from		= switched_from_rt,
#endif

	.task_tick		= task_tick_rt,

	.get_rr_interval	= get_rr_interval_rt,

	.prio_changed		= prio_changed_rt,
	.switched_to		= switched_to_rt,

	.update_curr		= update_curr_rt,

#ifdef CONFIG_UCLAMP_TASK
	.uclamp_enabled		= 1,
#endif
};
  • 选择进程

  • 插入进程

  • 删除进程

SMP和NUMA

SMP(对称多处理器结构)

对称多处理器结构(symmetrical mulit-processing,SMP),在对称多处理器系统中,所有处理器的地位都是平等的,所有CPU共享全部资源,比如内存,总线,中断及IO系统等等,都具有相同的可访问性,消除结构上的障碍,最大的特点是共享资源。

  • SMP服务器CPU利用率最好的情况下是2-4个CPU,实践证明。
  • 从应用层到架构层,目前商用服务器大体分三类:SMP、NUMA、MPP。
    • NUMA优势:以太物理服务器内集成多CPU,使系统具有较高的事务处理能力。由于远程内存访问有延迟,所以需要尽量减少不同CPU模块之间的交互。所以显然,NUMA架构适合OLTP事务处理环境。
    • SMP优势:当前使用OTLP程序当中,用户访问一个中断数据库,如果采用SMP架构,他的效率比MPP块。

多处理器系统中,内核需要额外考虑几个问题,确保良好调度。

  • CPU符合尽可能公平。
  • 进程与系统重某些处理器的亲核性。

NUMA(非一致内存访问结构)

NUMA是多处理器计算机,系统各个CPU都有本地内存都可以支持超快的访问能力,各个处理器之间用总线链接,支持对其他CPU的本地内存访问(但是访问比自己内存慢一点)。

CPU域初始化

  • 物理属性分类

    • SMT(Simultaneous Multithreading):超线程,在单个物理处理核心上同时执行多个线程来提高并行性和吞吐量。

    • MC(Multi-core):多核心,在同一芯片上集成了多个独立的处理核心,每个核心都可以独立运行任务。

    • SoC(System on Chip):处理器,集成了整个计算机系统功能的芯片,包括处理器、内存、输入输出接口等。它将多个硬件组件集成在一个芯片上,实现高度集成和协作。

  • Linux内核分类

    • CONFIG_SCHED_SMT。
    • CONFIG_SCHED_MC。
    • DIE。
  • Linux内核多CPU的管理是通过bitmap来管理的,并且定义4种状态:possible/present/online/active。具体源码如下:


推荐课程:https://xxetb.xetslk.com/s/3oyV5o

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据库期末复习知识点

A卷 1. 选择题(30) 2. 判断范式(10) 判断到第三范式 3. 程序填空(20) 4. 分析填空(15) 5. 写SQL(25) 5一题 恶性 B卷 1. 单选(30) 2. 填空 (20) 3. 程序填空(20) 4. 写SQL(30) 知识点 第一章 数据库管理系统(DBMS) 主要功能 数据定义功能 (DDL, 数据定义语言, …

开启AI引领的无限可能未来

AI 这玩意儿,乍一听好像挺高深莫测的,但其实它已经悄悄地融入了咱们的日常生活,只是你可能还没意识到。 比如说,你在网上购物时,那些推荐给你的商品是不是经常让你眼前一亮,心想:“这正是我想要…

如何把模糊的图片修复变清晰,怎么做?有那些方法?

模糊照片怎么修复清晰?有些照片可能会因为保存不当或其他原因而变得模糊,这些照片删掉又觉得可惜,那么如何让这些照片焕然一新呢?今天就给大家分享几种可以将这些珍贵的模糊照片修复为高清照片的方法。接下来,给大家演…

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

Python自动化(8)——pyqt5界面

Python自动化(8)——pyqt5界面 注意:pyqt5的界面使用时必须有app QApplication(sys.argv)这行代码,否则会出现错误并且无法显示窗口:QWidget: Must construct a QApplication before a QWidget 一些基础的控件 QMainWindow QMainWindow是…

Java五子棋之坐标校正

上篇针对了Java项目中的解构思维,在这篇内容中我们不妨从整体项目中拆解拿出一个非常重要的五子棋逻辑实现:坐标校正,我们如何使漫无目的鼠标点击变得有序化和可控化呢? 目录 一、从鼠标监听到获取坐标 1.MouseListener和Mouse…

夏季高压电环境下,工厂如何高效检测可燃气体报警器?

近日,美光台中工厂因高压气体泄漏引起火灾的事件引发了广泛关注。这起事件不仅让人们看到了工厂安全管理的紧迫性,更让可燃气体报警器这一安全设备成为了焦点。 在这篇文章中,佰德将从美光台中工厂火灾案例出发,深入探讨可燃气体…

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述。以下是从不同角度对气象站的种类和应用范围的介绍: 一、气象站的种类 根据用途和安装环境分类: 农业气象站:专为农业生产服务,监测土壤温度、湿度等参数&am…

零基础STM32单片机编程入门(一)初识STM32单片机

文章目录 一.概要二.单片机型号命名规则三.STM32F103系统架构四.STM32F103C8T6单片机启动流程五.STM32F103C8T6单片机主要外设资源六.编程过程中芯片数据手册的作用1.单片机外设资源情况2.STM32单片机内部框图3.STM32单片机管脚图4.STM32单片机每个管脚可配功能5.单片机功耗数据…

Race Condition竞争条件

Race Condition Question – why was there no race condition in the first solution (where at most N – 1) buffers can be filled?Processes P0 and P1 are creating child processes using the fork() system callRace condition on kernel variable next_available_pid…

Pycharm配置conda环境(解决新版本无法识别可执行文件问题)

引言: 很多小伙伴在下载最新版本的pycharm或者更新到最新版本后为项目配置conda环境的时候,发现文件夹目录中无法显示可执行文件(一般为python.exe),以下就是本人遇到该问题后试验和解决该问题的一些方法和思路。 一般遇到该问题的人群有两种&#xff…

Keil移植库文件的方法

创建新的文件夹,并且添加已存在的文件: 点击小锤子按钮选择下图所示的界面: 为编译器指明编译路径:

APM教程-SkyWalking安装和配置

SkyWalking简介 APM (Application Performance Management) 即应用性能管理,属于IT运维管理(ITOM)范畴。主要是针对企业 关键业务的IT应用性能和用户体验的监测、优化,提高企业IT应用的可靠性和质量,保证用户得到良好的服务&#…

宝兰德受邀出席多样性算力产业峰会2024,共探未来算力新趋势

近日,以“共筑新算力,智启新未来”为主题的多样性算力产业峰会2024在北京成功举办。本次峰会由中国通信标准化协会多样性算力产业及标准推进委员会(CCSA TC622,以下简称“推委会”)主办,邀请了来自计算产业…

Hadoop 2.0 大家族(四)

目录 七、Flume(一)Flume简介(二)Flume入门 八、Mahout(一)Mahout简介(二)Mahout入门 七、Flume Flume是一个分布式高性能、高可靠的数据传输工具,它可用简单的方式将不同…

文华财经股票期货K线形态提示主图指标公式源码

文华财经K线形态主图指标公式源码: A1:ABS(O-C)HHV(ABS(O-C),20)&&ISUP; //DRAWCOLORKLINE(A1&&BACKSET(ISLASTBAR,SUMBARS(A1,1)),COLORLIGHTBLUE,0); DRAWSL(A1&&BACKSET(ISLASTBAR,SUMBARS(A1,1)),L-2*MINPRICE,0,6,0,COLORRED),LINE…

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第47课-动态切换内嵌blender展厅的壁画

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第47课-动态切换内嵌blender展厅的壁画 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编…

驾照减分考试搜题软件?分享四个可以搜答案的软件 #其他#笔记#经验分享

大学生们可以通过使用搜题软件,快速找到自己遇到的问题的答案,提高学习效率,以下分享各类型的供大家学习。 1.彩虹搜题 这是个微信公众号 学生或者是成年人使用非常广的一款学习应用软件,里面包含了各行各业的海量题库&#xf…

QT实现QGraphicsView绘图 重写QGraphicsSvgItem类实现边框动画

目录导读 简述使用 QTimer 实现 QGraphicsSvgItem 边框动画效果 简述 在了解学习WPS的流程图的时候,发现它这个选择图元有个动态边框效果,而且连接线还会根据线生成点从头移动到尾的动画。像这种: 在QML中实现这种动画属性很简单&#xff0…

晨持绪科技:开好一家抖音小店运营怎么做

在数字时代,抖音小店以其独特的社交媒体优势迅速崛起,成为许多创业者的新宠。但如何有效运营,却是一门学问。首要任务是确定你的小店定位,这关系到后续的产品选择、目标客户群及营销策略。定位明确后,接下来便是挑选适…