首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux调度系统全景指南(上篇)

| 导语 本文主要是讲Linux调度系统, 由于全部内容太多,分三部分来讲,调度可以说是操作系统灵魂,为了让CPU资源利用最大化,Linux设计了一套非常精细调度系统,对大多数场景都进行了很多优化...为了加快CPU指令执行速度,CPU在发展过程中做了很多优化,例如流水线,分支预测,超标量,Hyper-threading,SIMD,多级cache,NUMA架构等, 这里主要关注Linux调度系统...这样代码(指令)执行存在不同CPU上下文,而进行调度时候,要进行相应CPU上下文切换,Linux系统存在不同堆栈来保存CPU上下文,系统中每个进程都会拥有属于自己内核栈,而系统中每个CPU都将为中断处理准备了两个独立中断栈...合理根据自己生产环境和应用特点来平衡 IRQ 中断有助于提高系统整体吞吐能力和性能; Linux系统常见中断分类 时钟中断: 时钟芯片产生,主要工作是处理和时间有关所有信息,决定是否执行调度程序以及处理下半部分...Linux系统中断处理 ? 由于中断会打断内核中进程正常调度运行,所以要求中断服务程序尽可能短小精悍;但是在实际系统中,当中断到来时,要完成工作往往需要进行大量耗时处理。

1.4K20

Linux调度系统全景指南(中篇)

【推荐阅读】 Linux调度系统全景指南(上篇) | 导语本文主要是讲Linux调度系统, 由于全部内容太多,分三部分来讲,本篇是中篇(主要讲抢占和时钟),上篇请看(CPU和中断):Linux调度系统全景指南...(上篇),调度可以说是操作系统灵魂,为了让CPU资源利用最大化,Linux设计了一套非常精细调度系统,对大多数场景都进行了很多优化,系统扩展性强,我们可以根据业务模型和业务场景特点,有针对性去进行性能优化...上篇请看(CPU和中断):Linux调度系统全景指南(上篇) 抢占 ? 早期Linux核心是不可抢占。它调度方法是:一个进程可以通过schedule()函数自愿地启动一次调度。...时钟框架 时钟芯片提供节拍(tick),Linux系统设计一套时钟软件系统,满足应用对时间各种需求:比如时间片调度系统时间,日期,定时器,睡眠等: ?...Linux时间运作机制 Linux时间系统实现 ?

1.6K20
您找到你想要的搜索结果了吗?
是的
没有找到

linux 操作系统进程调度(上) -- 进程调度算法演进

引言 上一篇文章中,我们介绍了内核调度基本概念,知道了调度器设计中最核心两个指标 -- 周转时间与响应时间: linux 操作系统进程调度(上) -- 进程调度基本概念 本文,我们就继续顺着上文思路...,来看看在操作系统进程调度设计中,都有哪些调度算法,他们思路和优劣又分别体现在哪些方面。...时间片轮转算法 RR Round-Robin 算法是现代操作系统调度器诞生基石。它按照 CPU 时钟芯片产生若干个时钟脉冲为单位,将 CPU 时间进行切分,每个分片就是 CPU 调度时间片。...由于 IO 密集型任务具有更高优先级,那么进程编写者可能会通过故意进行 IO 操作来骗取操作系统误判,从而将本是 CPU 密集型任务被故意包装成 IO 密集型任务,进而被错误地优先调度。...结语 正是有了多级反馈队列算法,现代生产级操作系统进程调度器才得以真正建立起来。 下一篇文章,我们就来深入 linux,来了解具体 linux 进程调度发展历史和实现机制,敬请期待。

1.7K10

linux 操作系统进程调度(上) -- 进程调度基本概念

Linux 操作系统中,系统会为每个进程打一个分,这个分就是 PR 值,它是 Priority 前两个字母。...但有时,用户可能会不认可操作系统优先级数值,而是想要去手动调整进程优先级。此时,如果让用户直接干预 PR 值,那风险就显得很大。Linux 为用户层设计了一个 Nice 值,翻译为“谦让值”。...而抢占式调度模式下,操作系统尽管增加了进程切换开销以及调度算法设计复杂度,但却可以更加灵活地分配 CPU 时间资源,所以常见操作系统一般都采用抢占式调度策略。 5....综合来说,操作系统调度原则是: 相较于普通进程,实时进程需要更加优先调度; IO 密集型进程需要频繁调度,以保证缩短响应时间,但单次调度执行时长可以缩短,也就是尽量少分配时间片,从而保证系统周转时间缩短...结语 本文,我们从操作系统整体层面,了解了操作系统进程调度基本概念和设计思想,但我们尚未触及核心部分,到底 linux 系统调度器是如何设计,又有着怎样历史沿革,出现了哪些算法?

1K10

Linux进程调度_linux进程查看和调度

大家好,又见面了,我是你们朋友全栈君。 进程调度含义 ---- 进程调度决定了将哪个进程进行执行,以及执行时间。操作系统进行合理进程调度,使得资源得到最大化利用。...没有太多 I/O 需求,从系统响应角度上来讲,调度器不应该经常让他们运行。对于处理器消耗型进程,调度策略往往是降低他们执行频率,延长运行时间。...Linux 系统为了提升响应速度,倾向于优先调度 I/O 消耗型。...—— 小结 实时进程优先级:value 越高,优先级越大 普通进程优先级:nice值越高,普通进程优先级越小 任何实时进程优先级 > 普通进程 Linux 调度算法 ---- Linux 中有一个总调度结构...Linux 调度时机 ---- 一、进程切换 从进程角度看,CPU是共享资源,由所有的进程按特定策略轮番使用。

20.6K10

linux内核调度算法(3)–多核系统负载均衡

Linux内核是如何在多核间调度进程呢?又是内核又是CPU核,两个核有点绕,下面称CPU处理器来代替CPU核。...实际上,如果你没有对你进程做过特殊处理的话,LINUX内核是有可能把它放到多个CPU处理器上运行,这是内核负载均衡。...假设我们系统是双核,父进程运行在cpu0上,那么这个fork出来进程也是在cpu0runqueue中。 那么,什么时候会发生负载均衡呢?...具体数值要看上面的interval了。 当然,多核CPU也有许多种,例如INTEL超线程技术,而LINUX内核对一个INTEL超线程CPU会看成多个不同CPU处理器。...内核提供了这样系统调用。系统调用sched_getaffinity会返回当前进程使用cpu掩码,而sched_setaffinity则可以设定该进程只能在哪几颗cpu处理器上执行。

3.8K30

Linux 内核】CFS 调度器 ④ ( 调度系统组件模块 | 主调度器、周期性调度器 | 调度器类 )

文章目录 一、调度系统组件模块 二、主调度器、周期性调度器 三、调度器类 一、调度系统组件模块 ---- 调度器 需要对 被调度进程 进行 排序 和 调度管理 , 进程管理过程需要 调度 组件模块..." 主要完成 切换地址空间 , 切换寄存器 , 切换栈空间 工作 ; " 主调度器 " 通过 调用 schedule() 方法 , 完成 进程 调度 和 切换 ; " 周期性调度器 " 根据 相应频率..., 自动调用 scheduler_tick() 函数 , 完成调度 , 这是根据 进程 运行时间 , 自动触发进程调度 ; 三、调度器类 ---- 主调度器 或 周期性调度器 根据 不同 " 选择进程..." 选择不同 调度器类 , 可选调度类参考 【Linux 内核】调度器 ⑦ ( 调度器类型 | 停机调度类 stop_sched_class | 限期调度类 dl_sched_class | 实时调度类...| 公平调度类 | 空闲调度类 ) 博客 , 在 Linux 内核中 , sched_class 调度器 分为以下 5 种类型 : stop_sched_class : 停机调度类 ; dl_sched_class

3.2K10

调度器简介,以及Linux调度策略

批处理进程没有与用户交互,往往在后台被默默地执行。 实时进程由Linux操作系统创造,普通用户只能创建普通进程。两种进程优先级不同,实时进程优先级永远高于普通进程。...先来看Linux 2.4内核推出O(n)调度器。O(n)这个名字,来源于算法复杂度大O表示法。大O符号代表这个算法在最坏情况下复杂度。字母n在这里代表操作系统活跃进程数量。...顾名思义,O(1)调度器是指调度器每次选择要执行进程时间都是1个单位常数,和系统进程数量无关。这样,就算系统中有大量进程,调度性能也不会下降。...表1 进程 Linux操作系统进程队列(run queue),如表2所示。 ? 表2 进程队列 那么在一个执行周期,被选中进程依次是先A,然后B和C,随后是D,最后是E。...以上就是调度基本原理,以及Linux用过几种调度策略。调度器可以更加合理地把CPU时间分配给进程。现代计算机都是多任务系统调度器在多任务系统中起着顶梁柱作用。

2.1K21

Linux进程调度设计--Linux进程管理与调度(十七)

调度一般原理是, 按所需分配计算能力, 向系统中每个进程提供最大公正性, 或者从另外一个角度上说, 他试图确保没有进程被亏待. 1.2 进程分类 linux把进程区分为实时进程和非实时进程,...但是普通进程调度策略就比较麻烦了, 因为普通进程不能简单只看优先级, 必须公平占有CPU, 否则很容易出现进程饥饿, 这种情况下用户会感觉操作系统很卡, 响应总是很慢,因此在linux调度发展历程中经过了多次重大变动...CFS算法和实现都相当简单,众多测试表明其性能也非常优越 字段 版本 O(n)调度算法 linux-0.11~2.4 O(1)调度linux-2.5 CFS调度linux-2.6~至今...暂时没弄明白 3 进程调度数据结构 调度器使用一系列数据结构来排序和管理系统进程....早期内核中就绪队列是全局, 即即有全局唯一rq, 但是 在Linux-2.6内核时代,为了更好支持多核,Linux调度器普遍采用了per-cpurun queue,从而克服了多CPU系统中,全局唯一

3.5K41

Linux内核调度分析(进程调度

多任务 并发和并行 Linux作为一个多任务操作系统,必须支持程序并发执行。 分类 非抢占式多任务 除非任务自己结束,否则将会一直执行。...Linux进程调度 发展历史 Linux从2.5版本开始引入一种名为调度器,后在2.6版本中将公平调度概念引入了调度程序,代替之前调度器,称为算法(完全公平调度算法)。...为了保证交互式应用和桌面系统性能,一般Linux更倾向于优先调度I/O消耗型进程。 进程优先级 Linux采用了两种不同优先级范围。 使用nice值:越大nice值意味着更低优先级。...Linux调度算法 调度器类 Linux调度器是以模块方式提供,这样使得不同类型进程按照自己需要来选择不同调度算法。...简单来说有以下两种情况会发生用户抢占: 从系统调用返回用户空间 从中断处理程序返回用户空间 内核抢占 Linux和其他大部分Unix变体操作系统不同是,它支持完整内核抢占。

14.8K113

Linux进程调度器概述--Linux进程管理与调度(十五)

调度一般原理是, 按所需分配计算能力, 向系统中每个进程提供最大公正性, 或者从另外一个角度上说, 他试图确保没有进程被亏待. 1.2 调度策略 传统Unix操作系统都奥杜算法必须实现几个互相冲突目标...因此进程调度也包含了线程调度功能. linux进程调度算法其实经过了很多次演变, 但是其演变主要是针对与普通进程, 因为前面我们提到过根据进程不同分类Linux采用不同调度策略.实时进程和普通进程采用了不同调度策略...CFS调度linux-2.6~至今 4 Linux调度器设计 4 Linux调度器设计 2个调度器 可以用两种方法来激活调度 一种是直接, 比如进程打算睡眠或出于其他原因放弃CPU 另一种是通过周期性机制...之后章节会放上代码进行详细说明。 系统并不是每时每刻都允许调度发生,当处于硬中断期间时候,调度是被系统禁止,之后硬中断过后才重新允许调度。...而对于异常,系统并不会禁止调度,也就是在异常上下文中,系统是有可能发生调度

3.5K20

Linux下定时任务(系统任务调度、用户任务调度)crontab使用详解

欢迎转载,转载请注明出处,谢谢 一、简介 crond是Linux下用来周期性执行某种任务或等待处理某些事件一个守护进程,与windows下计划任务类似,在CentOS Linux release...用户在cron表 (也被称为crontab文件)指定了定时任务,crontab也就是我们常见定时任务设置命令。Linux任务调度分为两类,系统任务调度和用户任务调度。...系统任务调度系统周期性所要执行工作,比如写缓存数据到硬盘、日志清理等。/etc/crontab文件就是系统任务调度配置文件。...用户任务调度我们一般通过crontab命令来进行配置,用户任务调度配置保存/var/spool/cron/目录下,并以用户名称命名。系统任务调度可以通过直接修改/etc/crontab来配置。...通过crontab -l 命令是查看不到系统任务调度任务

2.1K10

linux进程调度

不同与普通进程,系统调度时,实时优先级高进程总是先于优先级低进程执行。知道实时优先级高实时进程无法执行。实时进程总是被认为处于活动状态。...总而言之,对于实时进程,高优先级进程先执行,它执行到没法执行了,才轮到低优先级进程执行。 2.非实时进程调度 Linux对普通进程,根据动态优先级进行调度。...Linux下,静态优先级是用户不可见,隐藏在内核中。...系统调度时,还会考虑其他因素,因而会计算出一个叫进程动态优先级东西,根据此来实施调度。因为,不仅要考虑静态优先级,也要考虑进程属性。...则系统调度时,会给该进程更多奖励(bonus),以便该进程有更多机会能够执行。奖励(bonus)从0到10不等。

3.2K140

Go 语言调度(一): 系统调度

这主要是因为 Go 调度器很好运用了系统调度机制原理。但是,如果你不了解调度器基本工作原理,那你写 Go 服务很可能对调度器很不友好,使得 Go 调度器发挥不出它优势。...想要正确设计一个优秀高并发服务,对操作系统和 Go 调度机制一定理解是很重要。 这一系列文章主要专注在调度一些宏观机制上。...操作系统调度 操作系统调度器是软件开发中很复杂一块。他们必须考虑硬件设施布局和设计。这其中就包括了多处理器和多核存在,CPU 缓存和 NUMA。没有这些知识,调度器就无法达到高效。...庆幸是,你仍然可以通过构造一个宏观心理模型来理解操作系统调度程序工作原理,而无需深入研究这一主题。 你程序其实就是一堆需要按照顺序一个接一个执行机器指令。为此,操作系统使用了一个线程概念。...常见于通过网络请求资源,或者进行了系统调用。一个需要访问数据库线程属于 IO密集。互斥锁使用也属于这种。 上下文切换 Linux,Mac 或者 Windows 系统上都拥有抢占式调度器。

1.3K50

Linux线程调度

Linux中,线程是由进程来实现,线程就是轻量级进程( lightweight process ),因此在Linux中,线程调度是按照进程调度方式来进行调度,也就是说线程是调度单元...Linux这样实现线程好处之一是:线程调度直接使用进程调度就可以了,没必要再搞一个进程内线程调度器。...下面介绍几种常见调度策略: SCHED_OTHER:该策略是是默认Linux分时调度(time-sharing scheduling)策略,它是Linux线程默认调度策略。...在Linux中,对于SCHED_FIFO和SCHED_RR调度策略其优先级为1到99,其他调度策略优先级为0。注意在不同系统上,这个优先级范围可能不一样。...系统创建线程时,默认线程调度策略是SCHED_OTHER。

4K20

linux进程调度

调度策略 进程可以分为实时进程和普通进程,对于这两种不同类型进程肯定有不同调度策略,task_struct中policy就用来表示调度策略。...对于这些调度策略执行逻辑都封装到task_struct中sched_class中 const struct sched_class *sched_class; seched_class几个实现:...fair_sched_class:普通进程调度策略 CFS调度算法 CFS(completed fair Schedule)完全公平调度,适用于普通进程调度。...vruntime = 实际运行时间 * NICE_0_LOAD / 权重 使用调度算法首先得有包含vruntime调度实体,task_struct中有如下调度实体成员变量: struct sched_entity...当cpu需要一个任务执行时,其会先按照优先级选择不同调度类,不同调度类操作不同队列,例如rt_sched_class先被调用,其会在rt_rq中找下一个任务,只有找不到时才轮到fair_sched_class

8K20

ETL灵魂:调度系统

02 调度系统 调度系统,关注首要重点是在正确时间点启动正确作业,确保作业按照正确依赖关系及时准确执行。资源利用率通常不是第一关注要点,业务流程正确性才是最重要。...03 调度系统分类 调度系统一般分为两类:定时分片类作业调度系统和DAG工作流类作业调度系统 定时分片类作业调度系统 这种功能定位作业调度系统,其最早需要来源和出发点往往是做一个分布式Crontab...DGA工作流调度系统 这一类系统方向,重点定位于任务调度依赖关系正确处理,分片执行逻辑通常不是系统关注核心,或者不是系统核心流程关键组成部分。...这里面,稍有点复杂是,任务里还有子任务,子任务是一些处理组件,比如字段转换、数据抽取,子任务需要在上层任务中引用实现调度。任务是调度运行基本单位。...调度系统作为大数据平台核心部分之一,牵扯业务逻辑比较复杂,场景不同,也许需求就会差别很多,所以,有自研能力公司都会选择市面上开源系统二次开发或者完全自研一套调度系统,已满足自身ETL任务调度需求。

1.7K10

linux 系统调度器(四) -- 利用 chrt 命令查询与修改进程调度

引言 上一篇文章中,我们介绍了 linux 调度演进: linux 进程调度器(下) -- 调度器演进 在上一篇文章中,我们知道,到 Linux 2.6.23 版本后,linux 实际上维护了一组调度器来实现不同调度需要...那么,我们怎么才能让我们进程被不同层调度调度呢?那就需要使用 linux 提供十分有用工具 -- chrt 来实现了,本文我们就来介绍一下这个命令使用。...2. chrt 命令介绍 chrt 命令是 linux 提供一个底层应用指令,它可以在运行时设置进程某些属性,还可以更改调度策略和调度优先级。...4. chrt options chrt options 有五种选择,分别对应了上一篇文章中介绍四层调度五个策略: SCHED_DEADLINE:仅供系统使用 DL 调度器使用策略,用户不能选择...SCHED_FIFO 和 SCHED_RR 两个调度器可以让我们去指定,因为 RT 调度器是采用传统 O(1) 调度算法来实现基于时间片调度策略

3.9K30
领券