- 主题:问个Linux在多核下优先级调度问题
任务只有在做负载均衡时才有可能从一个cpu转到另一个。
一个任务被高优先级的抢占了,不会马上分派到其他核执行。
【 在 wjhtingerx 的大作中提到: 】
: 高优先级的调度会在任意核上抢占吗?
: 比如1核上有两个任务a和b,a优先级比b高,所以a运行。但如果b优先级比2核上所有任务都高,那么b会马上被分派到2核上运行吗?
: 负载均衡这种方式除外
: ...................
--
FROM 111.196.57.*
这个就需要通过负载均衡来解决。在迁移任务时,把高优先级的迁走。
【 在 wjhtingerx 的大作中提到: 】
: 那这样的话,岂不是经常会优先级反转了
: :
--
修改:martinjspace FROM 111.196.57.*
FROM 111.196.57.*
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.*
这个只能自己判断了,没人能保证信息的完全正确,可以把AI当成一个人,这个人回答问题比大部分人厉害,但是也有出错的时候。
【 在 hgoldfish 的大作中提到: 】
: AI 鬼扯的时候语气却无比坚定,完全没法判断它输出的结果是对的还是错的。
: 如果一段话没有把不确定的概率变成确定的事实。我们称它为低信息量。
: “信息是确定性的增加。”——逆香农信息定义
: ...................
--
修改:martinjspace FROM 111.196.57.*
FROM 111.196.57.*
好像不太对,一个进程创建时,克隆父进程,那应该会分配给同样的cpu,只有在负载均衡时才有可能转到其他cpu上。
【 在 wjhtingerx 的大作中提到: 】
: 确定吗?
:
--
FROM 111.196.57.*