- 主题:问个Linux在多核下优先级调度问题
发信人: wjhtingerx (ca6140), 信区: LinuxDev
标 题: 问个多核下优先级调度问题
发信站: 水木社区 (Fri Mar 24 10:30:04 2023), 站内
高优先级的调度会在任意核上抢占吗?
比如1核上有两个任务a和b,a优先级比b高,所以a运行。但如果b优先级比2核上所有任务都高,那么b会马上被分派到2核上运行吗?
负载均衡这种方式除外
--
修改:wjhtingerx FROM 36.112.69.*
FROM 36.112.69.*
linux就不是抢占式多任务操作系统。。。
【 在 wjhtingerx 的大作中提到: 】
: 高优先级的调度会在任意核上抢占吗?
: 比如1核上有两个任务a和b,a优先级比b高,所以a运行。但如果b优先级比2核上所有任务都高,那么b会马上被分派到2核上运行吗?
: 负载均衡这种方式除外
: ...................
--
FROM 123.113.231.*
那你错了……
【 在 dormouseBHU 的大作中提到: 】
: linux就不是抢占式多任务操作系统。。。
--
FROM 223.104.39.*
任务只有在做负载均衡时才有可能从一个cpu转到另一个。
一个任务被高优先级的抢占了,不会马上分派到其他核执行。
【 在 wjhtingerx 的大作中提到: 】
: 高优先级的调度会在任意核上抢占吗?
: 比如1核上有两个任务a和b,a优先级比b高,所以a运行。但如果b优先级比2核上所有任务都高,那么b会马上被分派到2核上运行吗?
: 负载均衡这种方式除外
: ...................
--
FROM 111.196.57.*
以前看的,转核心有cache方面的性能损失,不会轻易转的
【 在 martinjspace 的大作中提到: 】
: 任务只有在做负载均衡时才有可能从一个cpu转到另一个。
: 一个任务被高优先级的抢占了,不会马上分派到其他核执行。
--
FROM 183.206.160.*
那这样的话,岂不是经常会优先级反转了
【 在 martinjspace 的大作中提到: 】
: 任务只有在做负载均衡时才有可能从一个cpu转到另一个。
: 一个任务被高优先级的抢占了,不会马上分派到其他核执行。
:
--
修改:wjhtingerx FROM 223.104.39.*
FROM 223.104.39.*
这个就需要通过负载均衡来解决。在迁移任务时,把高优先级的迁走。
【 在 wjhtingerx 的大作中提到: 】
: 那这样的话,岂不是经常会优先级反转了
: :
--
修改:martinjspace FROM 111.196.57.*
FROM 111.196.57.*
如果两个核负载差不多,但是一个核都是高优先级,另外一个核都是低优先级,岂不是一直优先级反转的
【 在 martinjspace 的大作中提到: 】
: 这个就需要通过负载均衡来解决。
:
--
修改:wjhtingerx FROM 223.104.39.*
FROM 223.104.39.*
ai答案:
在Linux系统中,负载均衡通常是通过调度器(scheduler)来实现的。Linux的调度器会在多个CPU或CPU核心之间分配任务,从而实现负载均衡。负载均衡的触发时机取决于多种因素,主要包括以下几点:
1. **任务调度周期**:在Linux系统中,内核会周期性地进行任务调度。当一个调度周期结束时,调度器会根据各个任务的优先级、资源需求等因素重新分配任务。
2. **新任务**:当系统中出现新任务时,调度器会将其分配到合适的CPU或CPU核心上,以实现负载均衡。新任务可能是用户启动的程序,也可能是内核中的后台任务。
3. **任务状态变化**:任务在运行过程中,可能会因为等待I/O、锁等资源而进入阻塞状态。当任务状态发生变化时,调度器可能会对任务进行重新调度,以实现负载均衡。
4. **负载不平衡检测**:Linux内核会周期性地检测各个CPU或CPU核心的负载情况。当检测到负载不平衡时,调度器会尝试重新分配任务,以消除负载不平衡。
需要注意的是,Linux系统中有多种调度器,如CFS(完全公平调度器)、O(1)调度器、实时调度器等,它们的工作原理和实现细节有所不同,但都会在一定程度上实现负载均衡。此外,Linux系统还提供了一些工具和配置选项,允许用户根据需要自定义调度策略和负载均衡行为。
【 在 wjhtingerx 的大作中提到: 】
: 如果两个核负载差不多,但是一个核都是高优先级,另外一个核都是低优先级,岂不是一直优先级反转的
:
: :
--
FROM 111.196.57.*
那我猜,当你给第二个高优先级任务分配cpu时,就会给它分到低优先级任务所在的cpu,而不是另外一个已经有高优先级任务的cpu了。
【 在 wjhtingerx 的大作中提到: 】
: 如果两个核负载差不多,但是一个核都是高优先级,另外一个核都是低优先级,岂不是一直优先级反转的
:
: :
--
FROM 111.196.57.*