b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

讨论101-Hyper-V虚拟CPU分配

电脑杂谈  发布时间:2020-08-13 07:04:42  来源:网络整理

hyper v添加网卡_hyper cpu使用率100%_hyper v 分配cpu

欢迎在官方帐户的主界面中发送“微信群组”,您可以加入以下微信群组(指定哪个群组):

Microsoft Azure混合云微信小组

Microsoft Container微信小组

内容概述合理分配Hyper-V虚拟机的虚拟CPU(vCPU)的基础是什么?在本文中,我们将简要介绍Windows Server如何使用CPU处理多任务,以及我们关注的yper-V环境中的虚拟CPU分配问题.

笔尖提醒这是Windows Huang系列中第二篇文章,由黄立军老师撰写. 您可以在公共帐户中回复集群1并阅读第一篇文章. 答复集群2,请阅读第二篇文章.

开始之前,让我们看一下物理计算机的CPU调度方式

我应该为物理机分配给虚拟机多少个虚拟CPU是合理的,分配比例是1: 1,2: 1,听说可以是8: 1?

hyper v添加网卡_hyper v 分配cpu_hyper cpu使用率100%

我的虚拟化CPU分配比例达到4: 1,会导致CPU资源过载吗?

我只为虚拟机分配了一半的虚拟CPU,但是CPU时间大约为70%,另一台物理机上的虚拟CPU分配达到了3: 1,但CPU使用率仅为30左右. %,这是怎么回事?

在计划Hyper-V或其他虚拟化资源时,我们几乎总是会注意这些问题.

虚拟化和云计算的目标之一是池化计算资源,并为虚拟机动态分配CPU资源和其他资源. 在物理机上运行多个虚拟机实例时,这种动态使用CPU的效果更加明显.

在虚拟世界中,如何为虚拟机分配CPU一直是一个没有标准答案的问题. 在今天的文章中,我们将回到本质上来了解Hyper-V虚拟化平台如何分配CPU. 我希望每个人都对Hyper-V CPU资源计划的原理和方法有初步的了解.

在开始之前,我们首先了解CPU如何处理任务(即进程),然后首先回顾一下CPU在单核CPU时代如何处理多个任务. CPU内核使用线程(线程是一系列CPU指令)来处理任务. 单核CPU在特定时间只能打开一个线程来处理一项任务. 如果需要处理更高优先级的任务,CPU将挂起当前线程,然后打开另一个线程来处理新任务. 假设我必须在一段时间T中处理2个任务: 任务a和任务b. 任务b的优先级高于任务a. 首先,CPU内核打开线程A来处理任务a. 当在时间t1中处理任务a时,任务b具有更高的优先级. 任务b中断CPU后,CPU挂起线程A,然后为任务b打开线程B. 在时间段t2中处理任务b后,关闭线程B,然后继续线程A在时间段t3中完成任务a. 如果任务b的优先级不高于任务a,则线程需要在打开任务b的线程之前处理任务a. 在此过程中,我们可以总结以下几点:

如果在某个时间只有一个CPU内核(非超线程),则只能打开一个线程,并且单核CPU逐个处理多个任务,操作系统任务管理器负责用于线程管理.

hyper cpu使用率100%_hyper v添加网卡_hyper v 分配cpu

活动线程在处理任务时会占用100%的CPU. 当线程处于非活动状态时,CPU时间降为0,因此线程仅具有0或100%的CPU时间,并且两个值之间没有差异. CPU时间.

我们在操作系统计数器中看到的CPU时间是时间T中的CPU时间的平均值. 如图1所示,它可以用矩形的面积表示: 水平轴表示长度矩形,实际上是所测量的时间间隔;垂直轴表示矩形的宽度,实际CPU时间(0或100),时间T中CPU的理论总时间(活动和不活动)为T * 1 = T,线程A的时间为( t1 + t3)* 1 = t1 + t3,线程B的时间为t2 * 1 = t2,所以我们说在时间T,CPU使用时间为[(t1 + t2 + t3)/ T] * 100 %.

当今的CPU已经具有多核和超线程技术,因此多个内核可以打开多个线程来一次处理多个任务. 对于内核(无超线程),处理机制不变. 但是,在多核和多线程环境中,其他高优先级任务无需中断占用的CPU内核即可自行启动线程,而对于优先级相同的任务,则无需等待被占用的CPU内核. CPU核心在当前任务处理后自行启动线程. ,但是请使用空闲的CPU内核为其自己打开线程,如图2所示. 对于多核CPU的每个内核,其处理机制与单核CPU相同,并且计算实际值的方法CPU的使用时间是相同的,不同的是CPU时间是多核时间的总和(N核CPU可以将CPU时间划分为该矩形,宽度增加N倍),并且线程管理为还要由操作系统任务管理器负责.

Hyper-V虚拟化环境中的CPU分配和调度

在物理环境中,Windows Server使用上述机制来打开,挂起或关闭任务进程的线程. Windows Server担当CPU管理员的角色,并负责管理处理任务的线程. 在虚拟化环境中,由于将CPU的调度和管理转移到虚拟化软件层,因此虚拟化软件承担CPU管理员的管理角色,并负责管理所有分区操作系统(包括父分区和扩展分区)中的线程. 子分区). 进一步看,父分区和子分区的线程由虚拟化软件的线程调度程序管理,并且Hyper-V线程调度程序在物理环境中扮演着与操作系统任务管理器相同的角色. 当虚拟机系统需要处理特定任务时,虚拟化层线程调度程序将在虚拟机的一个或多个逻辑核心中启动一个或多个线程,如图3所示.

hyper v添加网卡_hyper v 分配cpu_hyper cpu使用率100%

如果在调度时有足够的可用内核,则线程调度程序可以在可用内核中随机启动线程,但是如果当前没有可用的内核,则该线程将程调度程序中排队. 直到释放了可用的内核为止,如图4所示.

需要清除的是,不是在虚拟机设置中为虚拟机分配了多个虚拟CPU. 这些虚拟CPU在虚拟机的生命周期内绑定到该虚拟机,这很像CPU被“租用”到虚拟机,并且CPU核心的“租赁”周期和“租赁”都不是决心. 因此,分配给虚拟机的线程的逻辑核心是动态的,而不是固定的. 例如,在t1时,虚拟机当前分配两个线程在逻辑核心1和5中运行,因为该逻辑核心被其他线程中断. 由于其他原因,这两个线程可能在t2时在逻辑核心2和4中运行,这意味着即,每个逻辑核心运行的线程是随机的. 线程调度程序控制逻辑核心的分配,并在收到虚拟机任务请求后将逻辑核心分配给虚拟机线程,但虚拟机不会选择运行哪个逻辑核心.

了解了CPU内核如何处理线程,如何测量CPU时间以及Hyper-V虚拟化平台CPU分配规则之后,我们知道CPU时间取决于任务线程的数量,线程繁忙度和任务处理时间. 实际生产环境中的应用程序类型很多,应用程序进程使用的线程数,线程的繁忙程度和任务处理时间都不同.

在物理机上运行低负载应用程序虚拟机时,即使虚拟化程度相对较高,例如为20核服务器上运行的20个虚拟机分配40个以上的虚拟CPU(虚拟化比例为2: 1) ),因为虚拟机任务具有较少的线程并且任务处理时间非常短,所以CPU内核可以在一定时间段内运行多个虚拟机线程,并且大多数内核足以在很小的时间内处理这些应用程序的进程部分时间. 因此,我们在物理机系统中观察到的CPU使用时间通常处于图5所示的状态.

hyper cpu使用率100%_hyper v添加网卡_hyper v 分配cpu

在物理机上运行高负载应用程序虚拟机时,即使虚拟化比率不高,例如为20核服务器上运行的5个虚拟机分配20个以上的虚拟CPU(虚拟化比率1: 1),由于虚拟机任务有很多线程和繁忙线程,以及较长的任务处理时间,CPU内核可以在一定时间内按顺序运行几个虚拟机线程,这需要大多数内核和大多数他们的时间. 因此,我们在物理机系统中观察到的CPU使用时间通常处于图6所示的状态.

当存在一定数量的虚拟机并且虚拟机上运行的应用程序多样化时,应用程序进程使用的线程数,线程的繁忙度以及任务处理时间都是变化的指标,由于难以精确测量,因此为了获得合适的CPU分配比率,您可以在早期根据实际负载进行粗略评估,并在后期根据云平台调度界面进行优化或扩展. 在计划时,我们可以根据虚拟化平台的目的进行不同的评估:

在可以收集数据中心负载性能的环境(例如用户自己的数据中心)中,可以使用Microsoft提供的Microsoft评估和计划(MAP)工具在合理的时间范围内收集服务器负载. 时间. 确定合理的硬件资源和虚拟化比例.

在无法收集和预测负载类型和负载性能的情况下(例如在IDC或托管环境中,无法使用MAP进行高级分析和计划),可以考虑使用行业中一些CPU基准评估软件进行评估

当然,无论您最初如何设计和计划,都无法获得准确的分配比率. 您必须充分利用Hyper-V的性能优化. 当物理环境的CPU使用率很高时,可以考虑使用实时迁移. 性能的均匀分布.

★★★来自Computer Store Industry Portal()的独家文章,欢迎转载★★★


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-297894-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 隆延发
        隆延发

        这个经济学家是个畜生

      热点图片
      拼命载入中...