linux进程管理—负载均衡

前面主要是学习进程的调度管理,默认都是在单CPU上的调度策略,在O(1)调度后,为了减小CPU之间的干扰,就会为每个CPU上分配一个任务队列,运行的时候可能会出现有的CPU很忙,有的CPU很闲,为了避免这个问题的出现,甚至最极端的情况是,一个 CPU 的可运行进程队列拥有非常多的进程,而其他 CPU 的可运行进程队列为空,这就是著名的 一核有难,多核围观,Linux 内核实现了 CPU 可运行进程队列之间的负载均衡。

在这里插入图片描述

1 什么是CPU负载

提到负载,我们首先会想到命令uptime或者top命令输出系统的平均负载(load average),例如uptime的输出结果

uptime 14:44:34 up 2 days,  4:14,  2 users,  load average: 2.10, 2.31, 1.52

load average的三个值分别代表过去1分钟、5分钟、15分钟的系统平均负载,这三个值实际上来自于 /proc/loadavg, Linux的系统平均负载是系统中处于 runnableuninterruptible 两个状态的任务总数与CPU数量的比值。

CPU负载(cpu load)指的是某个时间点进程对系统产生的压力。

在这里插入图片描述

  • CPU的运行能力,就如大桥的通行能力,分别有满负荷,非满负荷,超负荷等状态,这几种状态对应不同的cpu load值;
  • 单CPU满负荷运行时cpu_load为1,当多个CPU或多核时,相当于大桥有多个车道,满负荷运行时cpu_load值为CPU数或多核数;
  • CPU负载的计算(以单CPU为例),假设一分钟内执行10个任务代表满负荷,当一分钟给出30个任务时,CPU只能处理10个,剩余20个不能处理,cpu_load=3;

从系统的角度而言,平均负载反映了系统面临的总体压力,而如果我们将视角切换到任务本身的化,那么从本质上说,系统负载代表着任务对系统资源的渴求程度。

从负载的定义是处于 runnableuninterruptible 两种状态的平均进程数,也就是平均活跃进程数,它和CPU是用来是没有直接关系的。而 CPU 使用率,是单位时间内 CPU 繁忙情况的统计,跟平均负载并不一定完全对应。比如:

  • CPU 密集型进程,使用大量 CPU 会导致平均负载升高,此时这两者是一致的;
  • I/O 密集型进程,等待 I/O 也会导致平均负载升高,但 CPU 使用率不一定很高;
  • 大量等待 CPU 的进程调度也会导致平均负载升高,此时的 CPU 使用率也会比较高。
  • 所以确切地说它不仅是CPU load,而是system load。如果因为uninterruptible的任务较多造成负载值看起来偏高,实际的系统在使用上也不见得就会出现明显的卡顿。

所以通过负载,我们直觉的认为,一个队列上挂着10个任务的CPU承受的压力比挂着5个任务的负载要更重一些,早期的CPU负载是使用runqueue深度来描述的。所以使用runqueue是一个比较粗略

  • 假设当前CPU A和CPU B都挂有1个任务,但是A上运行是一个CPU密集型任务,是一个重载的任务
  • 而B上是一个经常sleep的I/O密集型任务

那么仅仅通过runqueue深度来描述CPU负载就有点问题,因此现代调度器使用Cpu runqueue上task load之和来表示cpu的负载,这样就变成对任务的负载跟自动,linux3.8版本的linux内核引入了PELT算法来跟踪每一个sched entity的负载,把负载跟踪的算法从per-CPU进化到per-entity。PELT算法不但能知道CPU的负载,而且知道负载来自哪一个调度实体,从而可以更精准的进行负载均衡。

2 什么是均衡

无论是单核还是多核,只要是多任务系统,就需要调度,但调度对多核系统显得尤为重要,因为调度不当,会无法充分发挥多核的潜力。

基于多核的调度,大致有两种模型,一种是只有一个任务队列(single queue),即当有一个任务需要执行时,选择一个空闲的CPU来承接。
在这里插入图片描述

这种调度方法可谓简单明了,但既然共享一个队列,那往往免不了需要上锁。此外,现代CPU可是使用了cache的,一个任务一会儿在这个CPU上运行,一会儿又在那个CPU上运行,每新到一处,cache往往都是“冷”的,执行效率必然大打折扣。

所以,任务既然交给了一个CPU做,就让它一直做嘛,各管各的,一竿子到底。从OS调度的角度,就是采用每个CPU有一个任务队列的模型(multiple queues)。

在这里插入图片描述

共享减少了,cache affinity(俗称"cpu affinity")也建立起来了,但新的问题也随之出现了。同时现在的CPU架构策略,对于均衡的策略也是有很大的影响soc上对于CPU的拓扑关系,我们知道目前如手机的系统都是采用的是SMP的架构,比如一个4核心的SOC,一大(更高的运算能力)一小(更低的功耗),两个核心一个cluster,那么每个cluster可以认为是一个调度域,每个MC调度域中有两个调度组,每个调度组中只有一个CPU。跨cluster的负载均衡是需要清除L2 cache的,开销是很大的,因此SOC级别的DIE调度域进行负载均衡的开销会更大一些。
在这里插入图片描述

我们假设整个系统如果有800的负载,那么每个CPU上分配400的负载其实是不均衡的,因为大核CPU可以提供更强的算力。这样就会导致大核供给不足,而小核会出现过度供给。所以需要有两个和运算力相关的参数

成员描述
unsigned long cpu_capacity可以用于CFS任务的算力
unsigned long cpu_capacity_orig该CPU的原始算力,和微架构及最大频率

有了各个任务负载,将runqueue中的任务负载累加起来就可以得到CPU负载,配合系统中各个CPU的算力,看起来我们就可以完成负载均衡的工作,然而事情没有那么简单,当负载不均衡的时候,任务需要在CPU之间迁移,不同形态的迁移会有不同的开销。例如一个任务在小核cluster上的CPU之间的迁移所带来的性能开销一定是小于任务从小核cluster的CPU迁移到大核cluster的开销。因此,为了更好的执行负载均衡,我们需要构建和CPU拓扑相关的数据结构,也就是调度域和调度组的概念。

3 如何负载

要实现多核系统的负载均衡,主要依靠task在不同CPU之间的迁移(migration),也就是将一个task从负载较重的CPU上转移到负载相对较轻的CPU上去执行。从CPU的runqueue上取下来的这个动作,称为"pull",放到另一个CPU的runqueue上去,则称之为"push"。

在这里插入图片描述

负载均衡有两种方式:pull, push

  1. pull拉:负载轻的CPU,从负载繁重的CPU pull tasks来运行。这应该是主要的方式,因为不应该让负载本身就繁重的CPU执行负载均衡任务。相应的为load balance。

  2. push推:负载重的CPU,向负载轻的CPU,推送tasks由其帮忙执行。相应的为active balance。

但是迁移是有代价的。在同一个物理CPU的两个logical core之间迁移,因为共享cache,代价相对较小。如果是在两个物理CPU之间迁移,代价就会增大。更进一步,对于NUMA系统,在不同node之间的迁移将带来更大的损失。

在这里插入图片描述

这其实形成了一个调度上的约束,在Linux中被实现为"sched domain",并以hierarchy的形式组织。处于同一内层domain的,迁移可以更频繁地进行,越往外层,迁移则应尽可能地避免。

在这里插入图片描述

一个CPU拓扑示例

我们以一个4小核+4大核的处理器来描述CPU的domain和group:

在这里插入图片描述

在上面的结构中,sched domain是分成两个level,base domain称为MC domain(multi core domain),顶层的domain称为DIE domain。顶层的DIE domain覆盖了系统中所有的CPU,小核cluster的MC domain包括所有小核cluster中的cpu,同理,大核cluster的MC domain包括所有大核cluster中的cpu。

  • 对于小核MC domain而言,其所属的sched group有四个,cpu0、1、2、3分别形成一个sched group,形成了MC domain的sched group环形链表。
  • 不同CPU的MC domain的环形链表首元素(即sched domain中的groups成员指向的那个sched group)是不同的,对于cpu0的MC domain,其groups环形链表的顺序是0-1-2-3,对于cpu1的MC domain,其groups环形链表的顺序是1-2-3-0

为了减少锁的竞争,每一个cpu都有自己的MC domain和DIE domain,并且形成了sched domain之间的层级结构。在MC domain,其所属cpu形成sched group的环形链表结构,各个cpu对应的MC domain的groups成员指向环形链表中的自己的cpu group。在DIE domain,cluster形成sched group的环形链表结构,各个cpu对应的DIE domain的groups成员指向环形链表中的自己的cluster group。

4 调度域(sched domain)和调度组(sched group)

负载均衡的复杂性主要和复杂的系统拓扑有关。由于当前CPU很忙,我们把之前运行在该CPU上的一个任务迁移到新的CPU上的时候,如果迁移到新的CPU是和原来的CPU在不同的cluster中,性能会受影响(因为会cache flush)。

但是对于超线程架构,cpu共享cache,这时候超线程之间的任务迁移将不会有特别明显的性能影响。NUMA上任务迁移的影响又不同,我们应该尽量避免不同NUMA node之间的任务迁移,除非NUMA node之间的均衡达到非常严重的程度。

总之,一个好的负载均衡算法必须适配各种cpu拓扑结构。为了解决这些问题,linux内核引入了sched_domain的概念,CPU对应的调度域和调度组可通过在设备模型文件/proc/sys/kernel/sched_domain/中查看。

在这里插入图片描述

调度组: 调度组是组成调度域的基本单位,在最小的调度域中一个cpu core是一个调度组,在最大的调度域中,一个NUMA结点内的所有cpu core成一个调度组。

调度域: 上述结构中有3个调度域

  • D0,整个系统,包括所有CPU组成一个调度域,D0调度域仅有一个,其包括两个调度组,即两个NUMA结点。
  • D1,两个NUMA结点分别独立组成一个调度域,D1域的调度组是每个CPU上的物理core,即每个D1拥有4个调度组。
  • D2,每个物理core构成最小的调度域,D2域的组是每个超线程。
struct sched_domain {/*Sched domain会形成层级结构,parent和child建立了不同层级结构的父子关系。对于base domain而言,其child等于NULL,对于top domain而言,其parent等于NULL */struct sched_domain __rcu *parent;	/* top domain must be null terminated */struct sched_domain __rcu *child;	/* bottom domain must be null terminated *//* 一个调度域中有若干个调度组,这些调度组形成一个环形链表,groups成员就是链表头*/struct sched_group *groups;	/* the balancing groups of the domain *//* 做均衡也是需要开销的,我们不可能时刻去检查调度域的均衡状态,这两个参数定义了检查该sched domain均衡状态的时间间隔范围 */unsigned long min_interval;	/* Minimum balance interval ms */unsigned long max_interval;	/* Maximum balance interval ms *//* 正常情况下,balance_interval定义了均衡的时间间隔,如果cpu繁忙,那么均衡要时间间隔长一些,即时间间隔定义为busy_factor x balance_interval */unsigned int busy_factor;	/* less balancing by factor if busy *//* 调度域内的不均衡状态达到了一定的程度之后就开始进行负载均衡的操作。imbalance_pct这个成员定义了判定不均衡的门限 */unsigned int imbalance_pct;	/* No balance until over watermark *//* 这个成员应该是和nr_balance_failed配合控制负载均衡过程的迁移力度。当nr_balance_failed大于cache_nice_tries的时候,负载均衡会变得更加激进。*/unsigned int cache_nice_tries;	/* Leave cache hot tasks for # tries *//* 每个cpu都有其对应LLC sched domain,而LLC SD记录对应cpu的idle状态得到该domain中busy cpu的个数*/int nohz_idle;			/* NOHZ IDLE status */int flags;			/* 调度域标志* */int level;     /* 该sched domain在整个调度域层级结构中的level*//* 上次进行balance的时间点,ast_balance加上这个计算得到的均衡时间间隔就是下一次均衡的时间点*/unsigned long last_balance;	/* init to jiffies. units in jiffies */unsigned int balance_interval;	/* 定义了该sched domain均衡的基础时间间隔. */unsigned int nr_balance_failed; /*本sched domain中进行负载均衡失败的次数 *//* 在该domain上进行newidle balance的最大时间长度 */u64 max_newidle_lb_cost;unsigned long last_decay_max_lb_cost;u64 avg_scan_cost;		/* 平均扫描成本 *//* 负载均衡的统计信息 */
#ifdef CONFIG_SCHEDSTATS/* load_balance() stats */unsigned int lb_count[CPU_MAX_IDLE_TYPES];unsigned int lb_failed[CPU_MAX_IDLE_TYPES];unsigned int lb_balanced[CPU_MAX_IDLE_TYPES];unsigned int lb_imbalance[CPU_MAX_IDLE_TYPES];unsigned int lb_gained[CPU_MAX_IDLE_TYPES];unsigned int lb_hot_gained[CPU_MAX_IDLE_TYPES];unsigned int lb_nobusyg[CPU_MAX_IDLE_TYPES];unsigned int lb_nobusyq[CPU_MAX_IDLE_TYPES];/* Active load balancing */unsigned int alb_count;unsigned int alb_failed;unsigned int alb_pushed;/* SD_BALANCE_EXEC stats */unsigned int sbe_count;unsigned int sbe_balanced;unsigned int sbe_pushed;/* SD_BALANCE_FORK stats */unsigned int sbf_count;unsigned int sbf_balanced;unsigned int sbf_pushed;/* try_to_wake_up() stats */unsigned int ttwu_wake_remote;unsigned int ttwu_move_affine;unsigned int ttwu_move_balance;
#endif
#ifdef CONFIG_SCHED_DEBUGchar *name;
#endifunion {void *private;		/* used during construction */struct rcu_head rcu;	/* used during destruction */};/* 为了降低锁竞争,Sched domain是per-CPU的, 该sched domain中的busy cpu的个数,  该sched domain中是否有idle的cpu*/struct sched_domain_shared *shared;/* span_weight说明该sched domain中CPU的个数 */unsigned int span_weight;/** Span of all CPUs in this domain.** NOTE: this field is variable length. (Allocated dynamically* by attaching extra space to the end of the structure,* depending on how many CPUs the kernel has booted up with)*//* span等于该sched domain中所有CPU core形成的cpu mask */unsigned long span[];
};

调度域并不是一个平层结构,而是根据CPU拓扑形成层级结构。相对应的,负载均衡也不是一蹴而就的,而是会在多个sched domain中展开(例如从base domain开始,一直到顶层sched domain,逐个domain进行均衡)。内核中struct sched_group来描述调度组,其主要的成员如下:

struct sched_group {
/* sched domain中的所有sched group会形成环形链表,next指向groups链表中的下一个节点 */struct sched_group	*next;			/* Must be a circular list */atomic_t		ref;    /* 该sched group的引用计数 */unsigned int		group_weight;   /* 该调度组中有多少个cpu */struct sched_group_capacity *sgc; /* 该调度组的算力信息*/int			asym_prefer_cpu;	/* CPU of highest priority in group */int			flags;/** The CPUs this group covers.** NOTE: this field is variable length. (Allocated dynamically* by attaching extra space to the end of the structure,* depending on how many CPUs the kernel has booted up with)*/unsigned long		cpumask[];    /* 该调度组包括哪些CPU */
};

5 何时均衡

作为OS的心跳,只要不是NO_HZ的CPU,tick都会如约而至,这为判断是否需要均衡提供了一个绝佳的时机。不过,如果在每次tick时钟中断都去做一次balance,那开销太大了,所以balance的触发是有一个周期要求的。当tick到来的时候,在scheduler_tick函数中会调用trigger_load_balance来触发周期性负载均衡,相关的代码如下:

void scheduler_tick(void)
{
...
#ifdef CONFIG_SMPrq->idle_balance = idle_cpu(cpu);trigger_load_balance(rq);
#endif
}void trigger_load_balance(struct rq *rq)
{/** Don't need to rebalance while attached to NULL domain or* runqueue CPU is not active*/if (unlikely(on_null_domain(rq) || !cpu_active(cpu_of(rq))))return;/* 触发periodic balance */if (time_after_eq(jiffies, rq->next_balance))raise_softirq(SCHED_SOFTIRQ);/* -触发nohz idle balance */nohz_balancer_kick(rq);
}

进行调度和均衡本身也是需要消耗CPU的资源,因此比较适合交给idle的CPU来完成,idle_cpu被选中的这个idle CPU被叫做"idle load balancer"。

  • 系统中有多个idle的cpu,如何选择执行nohz idle balance的那个CPU呢?

    如果不考虑功耗,那么就从所有idle cpu中选择一个就可以了,但是在异构的系统中,我们应该要考虑的更多,如果idle cpu中有大核也有小核,是选择大核还是选择小核?大核CPU虽然算力强,但是功耗高。如果选择小核,虽然能省功耗,但是提供的算力是否足够。标准内核选择的最简单的算法:随便选择一个idle cpu(也就是idle cpu mask中的第一个)。

在这里插入图片描述

如上流程图,实际上内核的负载均衡有以下几种

  • 一种是busy cpu的periodic balancer: 这种周期性负载均衡用于CFS任务的busy cpu上的负载均衡,是在时钟中断 scheduler_tick 中,找到该 domain 中最繁忙的 sched group 和 CPU runqueue,将其上的任务 pull 到本 CPU,以便让系统的负载处于均衡的状态。

在这里插入图片描述

  • 一种是ilde cpu的NOHZ load balance: 当其他的 CPU 已经进入 idle,本 CPU 任务太重,需要通过 IPI 将其他 idle 的 CPU 唤醒来进行负载均衡。

在这里插入图片描述

如果没有dynamic tick特性,那么其实不需要进行nohz idle load balance,因为tick会唤醒处于idle的cpu,从而周期性tick就可以覆盖这个场景。

  • 一种是ilde cpu的New idle load balance: 本 CPU 上没有任务执行,当前cfs runque中没有runnable,马上要进入 idle 状态的时候,调度器在pick next的时候,看看其他 CPU 是否需要帮忙,来从 busy cpu 上 pull 任务,让整个系统的负载处于均衡状态。
    在这里插入图片描述

由于idle状态的CPU通常处于tickless/nohz模式,所以需要向它发送IPI(核间中断)来唤醒(“kick”),这也是为什么实现此过程的函数被命名为"nohz_balancer_kick"。

作为idle的CPU收到IPI后,将在softirq上下文中(类型为"SCHED_SOFTIRQ")执行负载均衡,其对应的处理函数是在初始化时就注册好了的。

__init void init_sched_fair_class(void)
{
#ifdef CONFIG_SMPopen_softirq(SCHED_SOFTIRQ, run_rebalance_domains);#ifdef CONFIG_NO_HZ_COMMONnohz.next_balance = jiffies;nohz.next_blocked = jiffies;zalloc_cpumask_var(&nohz.idle_cpus_mask, GFP_NOWAIT);
#endif
#endif /* SMP */

这段最重要的是在内核中注册了一个软中断来做负载均衡run_rebalance_domains

static __latent_entropy void run_rebalance_domains(struct softirq_action *h)
{struct rq *this_rq = this_rq();/* 1. 如果当前运行队列有idle_balance值,即如果是idle,则选择CPU_IDLE类型,如果不是idle,则选择CPU_NOT_IDLE类型。 */enum cpu_idle_type idle = this_rq->idle_balance ?CPU_IDLE : CPU_NOT_IDLE;/** If this CPU has a pending nohz_balance_kick, then do the* balancing on behalf of the other idle CPUs whose ticks are* stopped. Do nohz_idle_balance *before* rebalance_domains to* give the idle CPUs a chance to load balance. Else we may* load balance only within the local sched_domain hierarchy* and abort nohz_idle_balance altogether if we pull some load.*//* 尝试idle cpu请求的 nohz, 并在通过 IPI 唤醒 nohz 空闲 cpu 时在 cpu 的运行队列中请求唤*/if (nohz_idle_balance(this_rq, idle))return;/* normal load balance */update_blocked_averages(this_rq->cpu);/* 开始负载均衡,从这里可以知道负载均衡是在一个domain 内的cpu来做的 */rebalance_domains(this_rq, idle);
}

这里暂时先不考虑nohz相关的函数,从rebalance_domains开始入手

static void rebalance_domains(struct rq *rq, enum cpu_idle_type idle)
{int continue_balancing = 1;int cpu = rq->cpu;int busy = idle != CPU_IDLE && !sched_idle_cpu(cpu);unsigned long interval;struct sched_domain *sd;/* 我们必须再次进行重新平衡的最早时间 */unsigned long next_balance = jiffies + 60*HZ;int update_next_balance = 0;int need_serialize, need_decay = 0;u64 max_cost = 0;rcu_read_lock();for_each_domain(cpu, sd) {   /* 遍历到顶级调度域 *//** Decay the newidle max times here because this is a regular* visit to all the domains.*/need_decay = update_newidle_cost(sd, 0);max_cost += sd->max_newidle_lb_cost;/*没有设置continue_balancing(初始值=1),则根据need_decay值设置则跳过,否则退出循环*/if (!continue_balancing) {if (need_decay)continue;break;}/* 找出调度域的平衡周期 (jiffies) */interval = get_sd_balance_interval(sd, busy);/*  当收到来自所有 CPU 的 numa 平衡请求时,将获取锁用于串行处理。如果失败,请跳过它 */need_serialize = sd->flags & SD_SERIALIZE;if (need_serialize) {if (!spin_trylock(&balancing))goto out;}/* 如果当前时间超过遍历域的均衡周期,则进行负载均衡 */if (time_after_eq(jiffies, sd->last_balance + interval)) {if (load_balance(cpu, rq, sd, idle, &continue_balancing)) {/** The LBF_DST_PINNED logic could have changed* env->dst_cpu, so we can't know our idle* state even if we migrated tasks. Update it.*/idle = idle_cpu(cpu) ? CPU_IDLE : CPU_NOT_IDLE;busy = idle != CPU_IDLE && !sched_idle_cpu(cpu);}/* 更新时间间隔 */sd->last_balance = jiffies;interval = get_sd_balance_interval(sd, busy);}if (need_serialize)spin_unlock(&balancing);
out:/* next_balance更新每个域的last_balance +区间值中的最小值 */if (time_after(next_balance, sd->last_balance + interval)) {next_balance = sd->last_balance + interval;update_next_balance = 1;}}/* 如果设置了 need_decay,则更新 max_idle_balance_cost */if (need_decay) {/** Ensure the rq-wide value also decays but keep it at a* reasonable floor to avoid funnies with rq->avg_idle.*/rq->max_idle_balance_cost =max((u64)sysctl_sched_migration_cost, max_cost);}rcu_read_unlock();/* 将运行队列的 next_balance 设置为更新的最小 next_balance*/if (likely(update_next_balance))rq->next_balance = next_balance;}

该函数流程如下:

在这里插入图片描述

当一个CPU上进行负载均衡的时候,总是从base domain开始,检查其所属的sched group之间的负载均衡情况,如果有不均衡的情况,那么会在该CPU所属的cluster之间进行迁移,以维护cluster内各个CPU任务的负载均衡。

所以rebalance_domains职责是寻找需要被balance的sched domain,然后通过"find_busiest_group"找到该domain中最繁忙的sched group,进而通过"find_busiest_queue"在这个最繁忙的group中挑选最繁忙的CPU runqueue,被选中的CPU就成为任务迁移的src
在这里插入图片描述

  • 那接下来从这个队列中选择哪些任务来迁移呢?这就是"detach_tasks"函数要完成的事了,判断的依据主要是task load的大小,优先选择load重的任务
  • 被选中迁移的任务从其所在的runqueue中移除(对应"deactive_task"函数),并被打上"TASK_ON_RQ_MIGRATING"的标记,开始向着作为dst的CPU runqueue进发(对应"active_task"函数)。

这里有一个例外,设置了CPU affinity,和所在CPU进行了绑定(俗称被"pin"住)的任务不能被迁移(就像被pin住的内存page不能被swap到磁盘上一样),对此进行判断的函数是"can_migrate_task"。

需要注意的是,对于CFS调度,任务迁移到一个新的runqueue之后,其在之前runqueue上的vruntime值就不适用了,需要重新进行计算和矫正,否则可能造成“不公平”(详情可参考这篇文章)。

6 总结

在这里插入图片描述

  • 为了更好的进行CFS任务的均衡,系统需要跟踪CFS任务负载、各个sched group的负载及其CPU算力(可用于CFS任务运算的CPU算力)。跟踪任务负载是主要有两个原因:

(1)判断该任务是否适合当前CPU算力

(2)如果判定需要均衡,那么需要在CPU之间迁移多少的任务才能达到平衡?有了任务负载跟踪模块,这个问题就比较好回答了。

  • 通过DTS和CPU topo子系统,我们可以构建sched domain层级结构,用于具体的均衡算法。在手机平台上,负载均衡会进行两个level:MC domain的均衡和DIE domain的均衡。

(1)在MC domain上,我们会对跟踪每个CPU负载状态(sched group只有一个CPU)并及时更新其算力,使得每个CPU上有其匹配的负载。

(2)在DIE domain上,我们会跟踪cluster上所有负载(每个cluster对应一个sched group)以及cluster的总算力,然后计算cluster之间负载的不均衡状况,通过inter-cluster迁移让整个DIE domain进入负载均衡状态

  • 负载均衡的基本过程

我们以周期性均衡为例来描述负载均衡的基本过程,当一个CPU上进行周期性负载均衡的时候,我们总是从base domain开始,检查其所属sched group之间(即各个cpu之间)的负载均衡情况,如果有不均衡情况,那么会在该cpu所属cluster之间进行迁移,以便维护cluster内各个cpu core的任务负载均衡。

MC domain的均衡大致需要下面几个步骤:

  • 找到MC domain中最繁忙的sched group
  • 找到最繁忙sched group中最繁忙的CPU(对于MC domain而言,这一步不存在,毕竟其sched group只有一个cpu)
  • 从选中的那个繁忙的cpu上拉取任务,具体拉取多少的任务到本CPU runqueue上是和不均衡的程度相关,越是不均衡,拉取的任务越多。

完成MC domain均衡之后,继续沿着sched domain层级结构向上检查,进入DIE domain,在这个level的domain上,我们仍然检查其所属sched group之间(即各个cluster之间)的负载均衡情况,如果有不均衡的情况,那么会进行inter-cluster的任务迁移。基本方法和MC domain类似,只不过在计算均衡的时候,DIE domain不再考虑单个CPU的负载和算力,它考虑的是:

(1)该sched group的负载,即sched group中所有CPU负载之和

(2)该sched group的算力,即sched group中所有CPU算力之和

参考资料

http://www.wowotech.net/process_management/load_balance.html

https://zhuanlan.zhihu.com/p/126291950

https://www.cnblogs.com/LoyenWang/p/12316660.html

https://www.codenong.com/cs107028338/

https://www.cnblogs.com/LoyenWang/p/12316660.html

http://jake.dothome.co.kr/sched-domain-2/

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

相关文章

  1. 漫天飞雪中来篇新年相关的文章

    整理了几篇新年相关的代码,分享出来 一、年兽篇 运行index.html文件,弹出一个萌萌的年兽,小老虎还会眨眼睛 二、新年倒计时 新年倒计时文件解压后,是一个index.html文件,双击执行得到如下效果 三、烟花特效 采用前…...

    2024/4/7 19:00:49
  2. html阻止a标签的跳转,去除form中的button默认事件

    1.a标签 <a href"JavaScript:;">click me</a> 2.form button <form id"post-form" method"post" action"/post"> <li class"post-btn"><button type"submit" id"post-btn&quo…...

    2024/4/13 22:12:38
  3. Going to the Movies(https://acs.jxnu.edu.cn/problem/NOIOPJCH02072393)

    题目&#xff1a; Going to the Movies 10000ms 1000K 描述&#xff1a; Farmer John is taking some of his cows to the movies! While his truck has a limited capacity of C (100 < C < 5000) kilograms, he wants to take the cows that, in aggregate, weigh …...

    2024/4/7 19:00:49
  4. Python:打印n以内的素数

    使用for循环或者while循环&#xff0c;注意k0的位置 def prime(self, n):# write your code hereA[]for i in range(2,n1):k0for j in range(1,int(i/21)):if i%j0:kk1if k1:A.append(i)return A...

    2024/4/13 22:13:03
  5. 剑指 Offer II 010. 和为 k 的子数组

    暴力解法 class Solution {public int subarraySum(int[] nums, int k) {int res0;for(int i0;i<nums.length-1;i){ int plusnums[i];for(int ji1;j<nums.length;j){plusnums[j];if(plusk){res1;}}}for(int i0;i<nums.length;i){if (nums[i]k){res1;}}return res;…...

    2024/4/7 19:00:45
  6. java集合初步汇总-Collection-Set

    Set集合 集合概述 1.无序 2.不能用for循环遍历 3.没有重复元素 Set<String> setnew HashSet<String>();set.add("hello"); set.add("world"); set.add("java");for(String s:set){System.out.println(s); } HashSet集合 集合…...

    2024/4/13 22:13:03
  7. 2021-9 CCF第一题 数组推导(100分)

    思路&#xff1a; 根据题目可以知道&#xff0c;最大值及给定数组的累加和&#xff0c;最小值需要判断数组A的数据。设置max0,记录最大值&#xff0c;如果当前数值大于最大值&#xff0c;将该值作为A数组元素值。又因为Bi定义为的数组A前i个数的最大值&#xff0c;所以当值与m…...

    2024/4/13 22:12:43
  8. 【Java基础02】String知识点大总结

    【String常用知识点总结】 特点:不可变&#xff1b;不可被继承。 为什么&#xff1f; String 类被声明为 final&#xff0c;因此它不可被继承。内部使用 char 数组存储数据&#xff0c;该数组被声明为 final&#xff0c;这意味着 value 数组初始化之后就不能再引用其它数组。并…...

    2024/4/19 12:40:59
  9. Cesium开发工具篇 | 07回顾总结

    到目前为止&#xff0c;Cesium开发课程的篇幅已经学完四分之三了&#xff0c;大家如果有什么问题可以私信我或者扫描以下二维码进群沟通&#xff0c;若群二维码失效&#xff0c;可扫描最下方的公众号二维码&#xff0c;加我为好友并备注加群。有时会比较忙来不及回复大家&#…...

    2024/4/13 22:12:43
  10. Mysql数据库基础第三章:DML语言

    DML语言基本概述 DML语言即数据操作语言&#xff0c;包括以下三种类型 插入&#xff1a;insert修改&#xff1a;update删除&#xff1a;delete 1、插入语句 1.1 基本语法 语法&#xff1a; insert into 表名(列名,...) values(值1,...); 也可以使用 insert into 表名 set …...

    2024/4/7 19:00:40
  11. matlab基础训练—编程和脚本

    文章目录 一、脚本 二、实时脚本 三、循环及条件语句 脚本 脚本的理解 脚本是最简单的一种matlab程序并且脚本是一个包含多行连续的matlab命令和函数调用的文件。在命令行中键入脚本名称即可运行该脚本。 脚本的创建 当我们想要创建一个脚本的时候&#xff0c;我们可以使用…...

    2024/4/7 19:00:38
  12. 【Verilog学习记录1】常量

    一&#xff0e;常量之数字 1.整数: 1) 二进制整数(b或B) 2) 十进制整数(d或D) 3) 十六进制整数(h或H) 4) 八进制整数(o或O) 数字表达方式有以下三种: 1) <位宽><进制><数字>这是一种全面的描述方式。 2) <进制><数字>在这种描述方式中,数…...

    2024/5/8 11:54:58
  13. Shell脚本,正则表达式,对字符集的模糊概括,配合过滤grep使用,二、扩展正则表达式,使用grep -E 正则符号

    Shell脚本&#xff0c;正则表达式&#xff0c;对字符集的模糊概括&#xff0c;配合过滤grep使用&#xff0c;二、扩展正则表达式&#xff0c;使用grep -E 正则符号 二、扩展正则符号: grep需要有参数 -E才能支持扩展正则符号 1、 匹配前面的字符至少一次 grep -E “[a-z]” di…...

    2024/4/28 16:27:54
  14. 关于python秒杀C语言中高精度问题,以及python中一些常用函数的总结

    一、用range()创建整数列表 range0可以帮助我们非常方便的创建整数列表,这在开发中及其有用。语法格式为: range([start,] end [step]) start参数:可选,表示起始数字。默认是0 end参数:必选,表示结尾数字。 step参数:可选,表示步长,默认为1 python3中range(返回的是一个range对…...

    2024/4/13 22:13:39
  15. 算法基础课——合并集合(并查集)

    合并集合 问题描述 一共有 n 个数&#xff0c;编号是 1∼n&#xff0c;最开始每个数各自在一个集合中。 现在要进行 m 个操作&#xff0c;操作共有两种&#xff1a; M a b&#xff0c;将编号为 a 和 b 的两个数所在的集合合并&#xff0c;如果两个数已经在同一个集合中&…...

    2024/4/13 22:14:15
  16. Ubuntu 20.04 VNC

    Ubuntu 20.04 桌面版自带 Vino 软件&#xff0c;用于提供 VNC 服务&#xff08;默认端口5900&#xff09;。 首先在 Ubuntu 设置中打开共享功能&#xff0c;并开启“屏幕共享”和“远程登录”选项。 在“屏幕共享”界面&#xff0c;将“允许连接控制屏幕”选项选上&#xff…...

    2024/4/16 5:35:17
  17. Spring源码分析-BeanDefinition

    Spring源码分析系列 Spring源码分析-启动流程浅析 Spring源码分析-Spring源码分析-BeanDefinition 文章目录Spring源码分析系列前言一、BeanDefinition二、AbstractBeanDefinition2.1、核心字段2.2、核心方法2.2、BeanDefinition扫描2.3、BeanDefinition注册2.4、动态注册Bean总…...

    2024/4/13 22:13:39
  18. C++学习(5)——多态和(纯)虚函数以及静态绑定、动态绑定

    目录 静态绑定 动态绑定 多态 虚函数(virtual) 虚表&#xff08;虚函数实现原理&#xff09; 虚函数和重载函数的区别 纯虚函数 静态绑定 编译的时候就确定好要走哪个函数&#xff0c;就比如函数的重载&#xff0c;通过函数形参不同&#xff0c;来走同名的函数的不同实现…...

    2024/4/7 19:00:37
  19. 江苏专转本~数据库相关知识

    https://app.yinxiang.com/fx/ae156e9b-2bcb-47f2-9969-3a3414a890b1...

    2024/4/13 22:13:19
  20. Netty之拆包与粘包

    拆包粘包 TCP 传输协议是面向流的&#xff0c;没有数据包界限。客户端向服务端发送数据时&#xff0c;可能将一个完整的报文拆分成多个小报文进行发送&#xff0c;也可能将多个报文合并成一个大的报文进行发送。因此就有了拆包和粘包。 为什么会出现拆包/粘包现象呢&#xff1…...

    2024/4/13 22:13:24

最新文章

  1. window11事件查看器中“在事件中只要触发此事件,就会执行相关非XX.xml脚本”

    在事件中只要触发此事件&#xff0c;就会执行相关非XX.xml脚本 一、操作过程 1、在时间查看器中&#xff0c;将任务附加到此事件上 2、按照提示逐步下一步添加完成 3、只要触发1中的事件&#xff0c;那么就会执行对应的关联脚本xx.xml。 二、解决办法 1、通过开始菜单搜索打…...

    2024/5/8 12:47:24
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. Vue3学习笔记+报错记录

    文章目录 1.创建Vue3.0工程1.1使用vue-cli创建1.2 使用vite创建工程1.3.分析Vue3工程结构 2.常用Composition2.1 拉开序幕的setup2.2 ref函数_处理基本类型2.3 ref函数_处理对象类型2.4 ref函数使用总结 1.创建Vue3.0工程 1.1使用vue-cli创建 查看vue/cli版本&#xff0c;确保…...

    2024/5/8 9:55:54
  4. 【Angular】什么是Angular中的APP_BASE_HREF

    1 概述: 在这篇文章中&#xff0c;我们将看到Angular 10中的APP_BASE_HREF是什么以及如何使用它。 APP_BASE_HREF为当前页面的基础href返回一个预定义的DI标记。 APP_BASE_HREF是应该被保留的URL前缀。 2 语法: provide: APP_BASE_HREF, useValue: /gfgapp3 步骤: 在app.m…...

    2024/5/8 5:48:42
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/8 6:01:22
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/7 9:45:25
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/7 14:25:14
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/7 11:36:39
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/7 9:26:26
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/6 21:42:42
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57