CN115794315B - 脏页速率的统计方法及装置、电子设备和存储介质 - Google Patents
脏页速率的统计方法及装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN115794315B CN115794315B CN202310052238.8A CN202310052238A CN115794315B CN 115794315 B CN115794315 B CN 115794315B CN 202310052238 A CN202310052238 A CN 202310052238A CN 115794315 B CN115794315 B CN 115794315B
- Authority
- CN
- China
- Prior art keywords
- dirty
- virtual machine
- pages
- dirty page
- page
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 100
- 238000003860 storage Methods 0.000 title claims abstract description 12
- 238000012545 processing Methods 0.000 claims abstract description 51
- 230000005012 migration Effects 0.000 claims abstract description 38
- 238000013508 migration Methods 0.000 claims abstract description 38
- 230000000875 corresponding effect Effects 0.000 claims description 99
- 230000001965 increasing effect Effects 0.000 claims description 37
- 238000004590 computer program Methods 0.000 claims description 14
- 230000002596 correlated effect Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 abstract description 29
- 238000012423 maintenance Methods 0.000 abstract description 11
- 238000007619 statistical method Methods 0.000 abstract description 4
- 238000005516 engineering process Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 6
- 230000003247 decreasing effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003252 repetitive effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000004134 energy conservation Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供了一种脏页速率的统计方法及装置、电子设备和存储介质,应用于虚拟机技术领域,其中,方法包括:针对包括多个虚拟中央处理器的虚拟机,为每个虚拟中央处理器设置对应的脏环,通过从虚拟机对应的多个脏环中获取脏页;对获取到的脏页进行去重处理后,确定脏页数量;根据脏页数量和对应的获取时长,统计虚拟机的脏页速率。本申请实施例在统计虚拟机内存脏页速率的过程中,使用了脏环作为脏页跟踪的特点,并对从脏环获取到的脏页进行了去重处理,能够准确的计算出当前虚拟机的内存脏页的产生速率,可以帮助运维人员和用户了解当前虚拟机的真实运行现状,并且可以提高在线迁移虚拟机的迁移效率、成功率以及安全性。
Description
技术领域
本申请涉及虚拟机技术领域,特别是涉及脏页速率的统计方法及装置、电子设备和存储介质。
背景技术
在云计算虚拟化领域,在线迁移虚拟机是一个很重要的功能,是运维人员经常用到的一个功能。在线迁移虚拟机要求在不中断虚拟机业务的情况下迁移内存数据、设备状态信息和磁盘数据等。在迁移数据的过程会产生新的内存脏页,因此,需要在拷贝完上一轮数据后,将新产生的内存脏页同样拷贝到目的端。如果内存脏页产生速率太快,超过了当前迁移的带宽,需要通过外界干预才能完成迁移。可见,内存脏页速率是虚拟机在线迁移过程中的一个重要指标,该指标能够反映出虚拟机当前的繁忙程度,对迁移调度有重要价值。
目前虚拟操作系统模拟器QEMU在热迁移模块中有现成的统计脏页速率的机制,但是受限于其实现,当内存压力稍微较大时,该方式统计的脏页速率将会变成是一个固定值,因此脏页速率的计算结果不准确。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
鉴于上述问题,提出了本申请以便提供克服上述问题或者至少部分地解决上述问题的脏页速率的统计方法及装置、电子设备和存储介质,包括:
一种脏页速率的统计方法,应用于虚拟机,所述虚拟机包括多个虚拟中央处理器,每个所述虚拟中央处理器对应一个脏环,所述方法包括:
从所述虚拟机对应的多个脏环中获取脏页;
对获取到的所述脏页进行去重处理后,确定脏页数量;
根据所述脏页数量和对应的获取时长,统计所述虚拟机的脏页速率。
可选地,在所述从所述虚拟机对应的多个脏环中获取脏页之后,还包括:
将获取到的脏页标记到脏页位图中。
可选地,所述对获取到的所述脏页进行去重处理后,确定脏页数量,包括:
在将获取到的脏页标记到脏页位图后,根据所述脏页位图标记的脏页,确定脏页数量。
可选地,所述对获取到的所述脏页进行去重处理后,确定脏页数量,包括:
在将获取到的脏页标记到脏页位图之前,根据当前的脏页位图,确定当前的脏页数量;
遍历所述脏页,判断当前遍历的脏页是否已经标记到所述脏页位图中;
若否,则将当前的脏页数量加1,并将所述当前遍历的脏页标记到所述脏页位图中。
可选地,所述方法还包括:
若所述当前遍历的脏页已经标记到所述脏页位图中,则保持当前的脏页数量。
可选地,所述判断当前遍历的脏页是否已经标记到所述脏页位图中,包括:
判断所述脏页位图中与当前遍历的脏页对应的目标位是否为1。
可选地,所述方法还包括:
当脏页被迁移后,将被迁移的脏页从所述脏页位图中删除。
可选地,在所述从所述虚拟机对应的多个脏环中获取脏页之后,还包括:
重置所述脏环。
可选地,所述从所述虚拟机对应的多个脏环中获取脏页,包括:
在预设时间间隔内,从所述虚拟机对应的多个脏环中获取脏页;
所述根据所述脏页数量和对应的获取时长,统计所述虚拟机的脏页速率,包括:
根据所述脏页数量和所述预设时间间隔,统计所述虚拟机的脏页速率。
可选地,所述在预设时间间隔内,从所述虚拟机对应的多个脏环中获取脏页,包括:
当当前时间与上一次统计脏页速率的目标时间之间的间隔小于预设时间间隔时,从所述虚拟机对应的多个脏环中获取脏页。
可选地,所述方法还包括:
判断所述脏页速率是否大于最大脏页速率;
若是,则将所述脏页速率确定为最大脏页速率;
将所述最大脏页速率确定为所述虚拟机的实际脏页速率。
可选地,所述从所述虚拟机对应的多个脏环中获取脏页,包括:
通过以预设频率运行的脏页收集线程从所述虚拟机对应的多个脏环中获取脏页;所述脏页收集线程与虚拟机迁移线程相互独立;所述预设频率在预设频率范围内与所述虚拟机的脏页速率呈正相关。
一种脏页速率的统计装置,应用于虚拟机,所述虚拟机包括多个虚拟中央处理器,每个所述虚拟中央处理器对应一个脏环,所述装置包括:
脏页获取模块,用于从所述虚拟机对应的多个脏环中获取脏页;
数量确定模块,用于对获取到的所述脏页进行去重处理后,确定脏页数量;
速率统计模块,用于根据所述脏页数量和对应的获取时长,统计所述虚拟机的脏页速率。
可选地,所述装置还包括:
脏页标记模块,用于将获取到的脏页标记到脏页位图中。
可选地,所述数量确定模块,包括:
第一数量确定子模块,用于在将获取到的脏页标记到脏页位图后,根据所述脏页位图标记的脏页,确定脏页数量。
可选地,所述数量确定模块,包括:
原始数量确定子模块,用于在将获取到的脏页标记到脏页位图之前,根据当前的脏页位图,确定当前的脏页数量;
标记判断子模块,用于遍历所述脏页,判断当前遍历的脏页是否已经标记到所述脏页位图中;
第二数量确定子模块,用于若否,则将当前的脏页数量加1,并将所述当前遍历的脏页标记到所述脏页位图中。
可选地,所述数量确定模块,还包括:
第三数量确定子模块,用于若所述当前遍历的脏页已经标记到所述脏页位图中,则保持当前的脏页数量。
可选地,所述标记判断子模块,具体用于判断所述脏页位图中与当前遍历的脏页对应的目标位是否为1。
可选地,所述装置还包括:
标记删除子模块,用于当脏页被迁移后,将被迁移的脏页从所述脏页位图中删除。
可选地,所述装置还包括:
脏环重置模块,用于在所述从所述虚拟机对应的多个脏环中获取脏页之后,重置所述脏环
可选地,所述脏页获取模块,具体用于在预设时间间隔内,从所述虚拟机对应的多个脏环中获取脏页;
所述速率统计模块,具体用于根据所述脏页数量和所述预设时间间隔,统计所述虚拟机的脏页速率。
可选地,所述脏页获取模块,具体用于当当前时间与上一次统计脏页速率的目标时间之间的间隔小于预设时间间隔时,从所述虚拟机对应的多个脏环中获取脏页。
可选地,所述装置还包括:
脏页速率判断模块,用于判断所述脏页速率是否大于最大脏页速率;
脏页速率更新模块,用于若是,则将所述脏页速率确定为最大脏页速率;
实际脏页速率确定模块,用于将所述最大脏页速率确定为所述虚拟机的实际脏页速率。
可选地,脏页获取模块,具体用于通过以预设频率运行的脏页收集线程从所述虚拟机对应的多个脏环中获取脏页;所述脏页收集线程与虚拟机迁移线程相互独立;所述预设频率在预设频率范围内与所述虚拟机的脏页速率呈正相关。
一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的脏页速率的统计方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的脏页速率的统计方法的步骤。
本申请具有以下优点:
在本申请实施例中,针对包括多个虚拟中央处理器的虚拟机,为每个虚拟中央处理器设置对应的脏环,通过从虚拟机对应的多个脏环中获取脏页;对获取到的脏页进行去重处理后,确定脏页数量;根据脏页数量和对应的获取时长,统计虚拟机的脏页速率。本申请实施例在统计虚拟机内存脏页速率的过程中,使用了脏环作为脏页跟踪的特点,并对从脏环获取到的脏页进行了去重处理,能够准确的计算出当前虚拟机的内存脏页的产生速率,可以帮助运维人员和用户了解当前虚拟机的真实运行现状,并且可以提高在线迁移虚拟机的迁移效率、成功率以及安全性。
附图说明
为了更清楚地说明本申请的技术方案,下面将对本申请的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例的一种脏页速率的统计方法的步骤流程图;
图2为本申请实施例的另一种脏页速率的统计方法的步骤流程图;
图3为本申请一示例中的脏页速率的统计方法的流程图;
图4为本申请实施例的一种脏页速率的统计装置的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
虚拟机迁移技术能够将虚拟机从一台物理服务器迁移到另一台物理服务器。在云计算环境中,虚拟机迁移技术可以提高云数据中心服务器的资源利用率,达到节能和负载均衡的目的。热迁移开始前,虚机在源主机运行,迁移开始后会在目的主机创建虚机并将其状态设置为暂停,源源不断地接受源主机发送的内存数据,直到源主机剩余内存量足够小,最后暂停源主机,将剩余的内存一次性拷贝至目的主机。一些业务程序繁忙的虚机,迁移过程会产生大量内存脏页,这类虚机迁移成功的关键在于迁移拷贝脏页的速率要大于产生脏页的速率。可见,内存脏页速率是虚拟机在线迁移过程中的一个重要指标,该指标能够反映出虚拟机当前的繁忙程度,对迁移调度有重要价值。
目前虚拟操作系统模拟器QEMU是在GNU/Linux(一种免费使用和自由传播的类尤内克斯UNIX操作系统)平台上使用得最广泛的开源虚拟化软件。QEMU在热迁移模块中有现成的统计脏页速率的机制,但发明人发现,受限于其实现,当内存压力稍微较大时,该方式统计的脏页速率将会变成一个不管内存实际压力有多大的固定值,因此,统计出的脏页速率不准确。
示例性地,QEMU统计的脏页速率的方法是,统计在两次向虚拟机的内核获取内存脏页的这段时间内,记录这段时间T内获取到的所有脏页总数量A,然后使用公式A/T计算脏页速率。实际上在计算脏页速率的时候,时间T是一轮数据迁移的耗时,T是和虚拟机内存大小以及脏页速率相关的,即T是不确定的,因此,不能自主选择到合适的采样周期,该采样周期是指计算脏页速率的周期。
在实际生产环境中,运维人员均期望有一种能够较为准确地获取到内存脏页速率的方式,以帮助其判断和选择当前在线迁移哪个虚拟机是最安全且风险最小的。
鉴于此,本申请实施例提供了一种脏页速率的统计方法,通过从虚拟机对应的多个脏环中获取脏页;对获取到的脏页进行去重处理后,确定脏页数量;根据脏页数量和对应的获取时长,能够准确的计算出当前虚拟机的内存脏页的产生速率,以帮助运维人员和用户了解当前虚拟机的真实运行现状,进而可以提高在线迁移虚拟机的迁移效率、成功率以及安全性。
也就是说,本申请实施例的主要技术构思之一在于,使用了脏环作为脏页跟踪的特点,并对从脏环获取到的脏页进行去重处理,确保计算出当前虚拟机的内存脏页的产生速率的准确性。
参照图1,示出了本申请实施例提供的一种脏页速率的统计方法的步骤流程图,本申请实施例应用于虚拟机,可以理解,本申请实施例用于统计虚拟机的内存脏页的产生速率。本申请实施例提供的脏页速率的统计方法可以由脏页速率的统计装置来执行,该脏页速率的统计装置可以采用软件和/或硬件的方式实现,该脏页速率的统计装置可以集成于虚拟机上。
在本申请实施例中,虚拟机可以包括多个虚拟中央处理器,每个虚拟中央处理器对应一个脏环,该方法可以包括如下步骤:
步骤101,从所述虚拟机对应的多个脏环中获取脏页。
步骤102,对获取到的所述脏页进行去重处理后,确定脏页数量。
步骤103,根据所述脏页数量和对应的获取时长,统计所述虚拟机的脏页速率。
本申请实施例通过从虚拟机对应的多个脏环中获取脏页;对获取到的脏页进行去重处理后,确定脏页数量;根据脏页数量和对应的获取时长,统计虚拟机的脏页速率。本申请实施例在统计虚拟机内存脏页速率的过程中,使用了脏环作为脏页跟踪的特点,并对从脏环获取到的脏页进行了去重处理,能够准确的计算出当前虚拟机的内存脏页的产生速率,可以帮助运维人员和用户了解当前虚拟机的真实运行现状,并且可以提高在线迁移虚拟机的迁移效率、成功率以及安全性。
下面,将对本示例性实施例中脏页速率的统计方法作进一步地说明。
步骤101,从所述虚拟机对应的多个脏环中获取脏页。
在本申请实施例中,虚拟机的每个虚拟中央处理器对应一个脏环,可以理解,每个脏环用于存储对应的虚拟中央处理器产生的脏页。虚拟机的脏页速率一般是指所有虚拟中央处理器单位时间内产生脏页的速率,因此,需要从虚拟机对应的多个脏环中获取脏页,可以理解,此时获取到的脏页是所有脏环对应的脏页的集合。
需要说明的是,当需要计算单个虚拟中央处理器的脏页速率时,则可以从该单个虚拟中央处理器对应的脏环中获取脏页,并经过本申请实施例提供的后续步骤,实现对单个虚拟中央处理器的脏页速率的统计。可以理解,计算单个虚拟中央处理器的脏页速率与本申请计算虚拟机的脏页速率的不同之处仅在于,计算单个虚拟中央处理器的脏页速率获取的是对应的当个脏环中存储的脏页,而计算虚拟机的脏页速率获取的是所有脏环中存储的脏页集合。
本申请实施例基于脏环脏页跟踪技术来获取虚拟机内存脏页,其中,脏环脏页跟踪技术是通过共享内存的环数据结构,内核直接将脏页放入环中,QEMU可以从环中获取脏页。内核将脏页放入环中和QEMU从环中获取脏页可以同时进行,没有从内核态到用户态的数据拷贝,每个虚拟中央处理器对应一个脏环,因此,可以获取到每个虚拟中央处理器的脏页情况。
现有技术中,一般采用位图bitmap脏页跟踪技术来获取虚拟机内存脏页。位图脏页跟踪技术的实现包括,内核将收集到的脏页保存在一个位图中,当用户态查询脏页日志log时,将位图中的数据从内核态拷贝到用户态。如果虚拟机内存很大,QEMU在查询脏页的时候就会比较耗时。
本申请实施例基于脏环脏页跟踪技术来获取虚拟机内存脏页,在某些应用场景下比通过位图脏页跟踪技术有更好的性能,能够满足一些基于每个虚拟中央处理器的应用场景,即能够实现基于中央处理器粒度的脏页统计,并且不需要进行从内核态到用户态的数据拷贝,具有更好的扩展性,与位图脏页跟踪技术相比,更适用于查询大内存的虚拟机的内存脏页。
在本申请的一些可选实施例中,上述从所述虚拟机对应的多个脏环中获取脏页,可以包括:
通过以预设频率运行的脏页收集线程从所述虚拟机对应的多个脏环中获取脏页;所述脏页收集线程与虚拟机迁移线程相互独立;所述预设频率在预设频率范围内与所述虚拟机的脏页速率呈正相关。
本实施例中,脏页收集线程用于获取脏页和统计脏页数量,脏页收集线程和虚拟机迁移线程相互独立,可以方便地控制计算脏页速率的时机,不会因为正在拷贝内存数据而被阻塞和影响到,因此可以得到较为准确的脏页速率。
考虑到在虚拟机内存压力比较小的情况下(即虚拟机产生脏页的速率较小的情况下),脏页收集线程按照指定频率运行虽然能够及时收集脏页,但很可能存在不必要的空转,导致资源浪费;而在虚拟机内存压力过大时(即虚拟机产生脏页的速率较大时),虚拟机产生的脏页可能会由于脏页收集线程的运行频率相对较慢导致不能及时被收集,进而导致统计出的脏页数量不够准确。即当脏页收集线程的指定频率比产生脏页的速率大时,存在资源浪费,当脏页收集线程的指定频率比产生脏页的速率小时,统计结果不准确。
鉴于此,在本申请的一些可选实施例中,在获取脏页的过程中,通过以预设频率运行的脏页收集线程从虚拟机对应的多个脏环中获取脏页,其中,预设频率在预设频率范围内与所述虚拟机的脏页速率呈正相关,也就是说,在预设频率范围内,当脏页速率变大时,脏页收集线程获取脏页的频率变大,当脏页速率变小时,脏页收集线程获取脏页的频率变小,实现自适应动态调节脏页收集线程获取脏页的频率,使得脏页收集线程获取脏页的频率与脏页产生的速率保持一种平衡的状态,保证获取到的脏页数量的准确性,进一步保证后续统计出的脏页速率的准确性。其中,预设频率范围可以是最低为每秒1次,最高为每秒20次,即脏页收集线程获取脏页的获取周期在区间[50ms,1000ms]内。
示例性地,考虑到当脏页产生速率较大不能及时被收集时,会进一步导致脏环满,即新增的脏页无法及时存放到脏环中,此时,会导致虚拟机退出。因此,可以根据虚拟机退出的次数来调整脏页收集线程的运行频率。例如,当虚拟机退出的次数增加时,需要相应地增大脏页收集线程的运行频率,示例性地,可以将脏页收集线程的运行频率增大100%,假设当前脏页收集线程的运行频率为每秒1次,当虚拟机退出的次数增加时,则将当前脏页收集线程的运行频率调整为每秒2次;当虚拟机退出的次数再次增加时,则将当前脏页收集线程的运行频率调整为每秒4次。
示例性地,还可以在虚拟机退出的次数没有变化时,获取脏页收集线程在当前获取周期获取到的脏页总数量Y,将当前获取周期获取的脏页总数量Y与上一获取周期获取到的脏页总数量X进行比较,得到本轮脏页增加趋势T2,其中,本轮脏页增加趋势T2可以等于当前获取周期获取到的脏页总数量Y减上一获取周期获取到的脏页总数量X得到的差值。当本轮脏页增加趋势T2与上轮脏页增加趋势T1相等,说明脏页产生的速率变化稳定,可以对稳定计数加1,当本轮脏页增加趋势T2与上轮脏页增加趋势T1不相等时,可以对稳定计数减1,或者对稳定计数清零。当稳定计数增大到预设稳定计数阈值时,则根据本轮脏页增长趋势T2调整脏页收集线程的运行频率,即当本轮脏页增长趋势T2大于0时,说明脏页的产生速率在增大,此时,需要相应地增大脏页收集线程的运行频率,示例性地,可以将脏页收集线程的运行频率增大100%。当本轮脏页增长趋势T2小于0时,说明脏页的产生速率在减小,此时,可以相应地减小脏页收集线程的运行频率,示例性地,可以将脏页收集线程的运行频率减少50%。当本轮脏页增长趋势T2为0时,说明脏页的产生速率不变,此时,可以保持当前脏页收集线程的运行频率。其中,预设稳定计数阈值可以根据实际需求进行设置,示例性地,预设稳定计数阈值可以等于3。
可选地,当本轮脏页增加趋势T2与上轮脏页增加趋势T1均为正数或负数时,可以对稳定计数加1,当本轮脏页增加趋势T2与上轮脏页增加趋势T1正负性不同时,可以对稳定计数减1,或者对稳定计数清零。当稳定计数增大到预设稳定计数阈值时,说明脏页产生的速率在持续增大或持续减小,此时,根据本轮脏页增长趋势T2调整脏页收集线程的运行频率,即当本轮脏页增长趋势T2大于0时,说明脏页的产生速率在增大,此时,需要相应地增大脏页收集线程的运行频率,当本轮脏页增长趋势T2小于0时,说明脏页的产生速率在减小,此时,可以相应地减小脏页收集线程的运行频率。
需要说明的是,当脏页收集线程的运行频率为预设频率阈值的最大值时,则不再增大,当脏页收集线程的运行频率为预设频率阈值的最小值时,则不再减小。
在本申请一些可选实施例中,脏页速率的统计是按照固定的时间周期进行的,上述从所述虚拟机对应的多个脏环中获取脏页,可以包括:
在预设时间间隔内,从所述虚拟机对应的多个脏环中获取脏页。
在本实施例中,预设时间间隔即为统计脏页速率的时间周期,也可以称为统计周期。示例性地,可以在预设时间间隔内,不限次数地从虚拟机对应的多个脏环中获取脏页,例如,通过以预设频率运行的脏页收集线程获取脏页;每次获取到脏页后对获取到的脏页进行去重处理,并在与上一次统计脏页速率的时间之间的间隔达到预设时间间隔时,执行计算脏页速率的操作。示例性地,可以按照预设时间间隔,即与上一次统计脏页速率的时间之间的间隔达到预设时间间隔时,从虚拟机对应的多个脏环中获取脏页,并对获取到的脏页进行去重处理后,执行计算脏页速率的操作。
在本申请一些可选实施例中,上述在预设时间间隔内,从所述虚拟机对应的多个脏环中获取脏页,可以包括:
当当前时间与上一次统计脏页速率的目标时间之间的间隔小于预设时间间隔时,从所述虚拟机对应的多个脏环中获取脏页。
本实施例通过判断当前时间和上一次统计脏页速率的目标时间之间的间隔是否达到预设时间间隔,来判断是否继续从虚拟机对应的多个脏环中获取脏页。当当前时间和上一次统计脏页速率的目标时间之间的间隔达到预设时间间隔时,则开始计算当前虚拟机的脏页速率。
进一步地,在本申请的一些可选实施例中,在从虚拟机对应的多个脏环中获取脏页后,还可以包括:
重置所述脏环。
在本申请实施例中,当QEMU从脏环中取出脏页后,可以将被取出脏页的脏环入口的标志设置为复位,即重置脏环,以使内核可以对脏环的空间进行回收供下一次插入新的脏页使用。
步骤102,对获取到的所述脏页进行去重处理后,确定脏页数量。
由于脏环中的脏页可能是重复的,为了提高计算出的脏页速率的准确性,需要对获取到的脏页进行去重处理,再基于去重处理后的脏页确定脏页数量。
在对脏页进行去重处理,确定脏页数量的过程中,可以结合脏页位图来实现对获取到的脏页进行去重处理,即在本申请实施例中,可以将获取到的脏页标记到脏页位图中。
示例性地,脏页位图中存储了分配给虚拟机的若干内存页是否为脏页的标记,脏页位图可以是二进制序列。例如,假设为虚拟机分配了512KB内存,每个内存页的大小为4KB,则该内存页的数目为512/4=128,从而虚拟机对应一个包含128位的脏页位图,每个位代表一个内存页是否为脏页,若脏页位图的第一位为1,则代表第一个内存页为脏页;若脏页位图的第二位为0,则代表第二个内存页不为脏页。也就是说,每个内存页都可以在脏页位图中找到对应的位,在QEMU获取到脏页后,可以将获取到的脏页标记到脏页位图中,即将脏页位图中与该脏页对应的位标记为1。
在本申请一些可选实施例中,上述对获取到的所述脏页进行去重处理后,确定脏页数量,可以包括:
在将获取到的脏页标记到脏页位图之前,根据当前的脏页位图,确定当前的脏页数量;
遍历所述脏页,判断当前遍历的脏页是否已经标记到所述脏页位图中;
若否,则将当前的脏页数量加1,并将所述当前遍历的脏页标记到所述脏页位图中;
若所述当前遍历的脏页已经标记到所述脏页位图中,则保持当前的脏页数量。
在本实施例中,QEMU每次从脏环中获取脏页后,可以将脏页标记到脏页位图中,其中,在QEMU将脏页标记到脏页位图之前,或者说,在QEMU每次从脏环中获取脏页之前,可以先根据当前的脏页位图,确定当前的脏页数量。在QEMU开始标记脏页时,或者,在QEMU获取脏页后,遍历此时获取到的脏页,即遍历该待标记的脏页,判断当前遍历的脏页是否已经标记到脏页位图中,若是,则说明当前遍历的脏页与在先获取到的脏页重复了,需要进行去重处理,即不再增加当前的脏页数量;若当前遍历的脏页没有标记到脏页位图中,说明当前遍历的脏页是首次出现,无需进行去重处理,即将当前的脏页数量加1,同时将当前遍历的脏页标记到脏页位图中。
其中,判断当前遍历的脏页是否已经标记到所述脏页位图中,可以包括:
判断所述脏页位图中与当前遍历的脏页对应的目标位是否为1。
本实施例在将脏页标记到脏页位图的过程具体是在脏页位图中找到与当前脏页对应的位,并将当前脏页对应的位标记为1,因此,在判断当前遍历的脏页是否已经标记到脏页位图中,可以通过判断脏页位图中与当前遍历的脏页对应的位是否为1来实现,此外,为了便于区分,可以将当前遍历的脏页对应的位记为目标位,即判断脏页位图中的目标位是否为1来判断当前遍历的脏页是否已经标记到脏页位图中。
需要说明的是,在本申请实施例中,将脏页标记到脏页位图中,与现有的使用位图进行脏页跟踪的方式是不同的。可以理解,本申请实施例实现脏页跟踪的方式是基于脏环脏页跟踪技术,结合脏页位图的使用是为了便于对获取到的脏页进行去重处理,以提高确定出的脏页数量的准确性,进而提高脏页速率的统计结果。
在本申请的另一些可选实施例中,上述对获取到的所述脏页进行去重处理后,确定脏页数量,可以包括:
在将获取到的脏页标记到脏页位图后,根据所述脏页位图标记的脏页,确定脏页数量。
在本实施例中,当QEMU获取到脏页后,可以直接将脏页标记到脏页位图中,在对当前获取到的脏页标记到脏页位图后,再根据脏页位图中标记的脏页位数来确定脏页数量。
其中,在对当前获取到的脏页标记到脏页位图的过程,可以包括:
遍历所述脏页,判断当前遍历的脏页是否已经标记到所述脏页位图中;
若否,则将所述当前遍历的脏页标记到所述脏页位图中。
可以理解,在对当前获取到的脏页进行标记的过程中,通过依次判断当前获取到的每个脏页在脏页位图中对应的位是否为1来判断当前获取到的脏页是否已经标记到脏页位图中,若脏页位图中对应的位为1,则说明当前获取到的脏页已经标记过,属于重复的脏页,因此,可以不用重复进行标记;若脏页位图中对应的位不为1,则说明当前获取到的脏页没有标记过,即不属于重复的脏页,此时,将当前获取到的脏页标记到脏页位图中。
步骤103,根据所述脏页数量和对应的获取时长,统计所述虚拟机的脏页速率。
其中,获取时长可以认为是统计虚拟机的脏页速率的时间周期,当获取脏页的过程是在预设时间间隔内,从所述虚拟机对应的多个脏环中获取脏页时,获取时长即为该预设时间间隔。
在一些示例中,获取时长也可以根据当前获取到的脏页,确定脏页产生时间最早的第一脏页和脏页产生时间最晚的第二脏页,根据第一脏页的产生时间和第二脏页的产生时间之间的时间间隔来确定该获取时长,其中,当前获取到的脏页是指在上一次统计出虚拟机的脏页速率时间之后获取到的脏页。
在得到脏页数量和对应的获取时长后,根据脏页数量和获取时长可以计算出虚拟机的脏页速率,即虚拟机在单位时间内产生的脏页数。
进一步地,在本申请一些可选实施例中,在每次统计完虚拟机的脏页速率后,对脏页位图中标记的脏页进行清除处理,例如,将脏页位图中所有位都置为0,以避免本次在脏页位图中的标记影响下一次脏页数量的计算。
进一步地,考虑到在一些脏页速率很大的情况下,有可能出现脏页被迁移后又产生,为了避免此种情况影响脏页速率统计结果,在本申请的一些可选实施例中,上述方法还可以包括:
当脏页被迁移后,将被迁移的脏页从所述脏页位图中删除。
本实施例中,在脏页速率统计的时间周期内,若出现脏页被迁移的情况,可以及时将被迁移的脏页从脏页位图中删除,可以避免因对脏页进行去重处理,导致这部分被迁移后又产生的脏页没统计进去的情况发生,进而可以提高统计出的脏页速率对虚拟机迁移的指导意义。
本申请实施例通过从虚拟机对应的多个脏环中获取脏页;对获取到的脏页进行去重处理后,确定脏页数量;根据脏页数量和对应的获取时长,统计虚拟机的脏页速率。本申请实施例在统计虚拟机内存脏页速率的过程中,使用了脏环作为脏页跟踪的特点,并对从脏环获取到的脏页进行了去重处理,能够准确的计算出当前虚拟机的内存脏页的产生速率,可以帮助运维人员和用户了解当前虚拟机的真实运行现状,并且可以提高在线迁移虚拟机的迁移效率、成功率以及安全性。
参照图2,示出了本申请实施例提供的另一种脏页速率的统计方法的步骤流程图,本申请实施例应用于虚拟机,可以理解,本申请实施例用于统计虚拟机的内存脏页的产生速率。本申请实施例提供的脏页速率的统计方法可以由脏页速率的统计装置来执行,该脏页速率的统计装置可以采用软件和/或硬件的方式实现,该脏页速率的统计装置可以集成于虚拟机上。
在本申请实施例中,虚拟机可以包括多个虚拟中央处理器,每个虚拟中央处理器对应一个脏环,该方法可以包括如下步骤:
步骤201,从所述虚拟机对应的多个脏环中获取脏页。
步骤202,对获取到的所述脏页进行去重处理后,确定脏页数量。
步骤203,根据所述脏页数量和对应的获取时长,统计所述虚拟机的脏页速率。
其中,上述步骤201-203可以参见前文对步骤101-103的描述,此处不再赘述。
步骤204,判断所述脏页速率是否大于最大脏页速率。
在本申请实施例中,在计算出当前虚拟机的脏页速率后,还需要判断当前计算出的脏页速率是否大于最大脏页速率,该最大脏页速率,即虚拟机的脏页速率峰值,可以通过对历史统计出的脏页速率进行比较得到。该最大脏页速率用于作为虚拟机的实际脏页速率,可以认为,该最大脏页速率用于指导运维人员迁移虚拟机,以应对突发脏页速率变高的场景。
步骤205,若是,则将所述脏页速率确定为最大脏页速率。
当当前计算出的脏页速率大于最大脏页速率时,则将当前计算出的脏页速率确定为最大脏页速率,即采用当前计算出的脏页速率更新最大脏页速率。相应地,当当前计算出的脏页速率小于最大脏页速率时,则保持原有的最大脏页速率。
步骤206,将所述最大脏页速率确定为所述虚拟机的实际脏页速率。
在确定出当前的最大脏页速率后,将当前的最大脏页速率确定为虚拟机的实际脏页速率,以指导运维人员迁移虚拟机。
进一步地,在统计出虚拟机的实际脏页速率后,可以显示或发送到执行设备显示该虚拟机的实际脏页速率。
本申请实施例在统计脏页速率的过程中,主要包括脏页统计过程和脏页速率计算过程,其中,脏页统计过程具体是根据统计脏页速率的时间周期,确定当前周期的开始时间和结束时间,并统计在该开始时间和结束时间内,从脏环中收到的脏页数量。考虑到脏环中的脏页可能是重复的,为了避免重复的脏页影响统计结果,结合脏页位图来标记脏页,并在对脏页进行标记后,返回脏页位图中与该脏页对应位的值,脏页位图中的位的值为0时,表示该位没有对应的脏页,脏页位图中的位的值为1时,表示该位有对应的脏页;并在每次进行脏页标记前,判断该脏页对应的位的值是否为1,若是,则不重复统计该脏页。脏页速率计算过程具体是在指定的时间周期内,通常是1秒,调用计算接口计算出该指定的时间周期内的脏页速率,并更新脏页速率峰值。
在本申请的一个具体示例中,可以通过新增一个第一结构体KVMDirtyRingDirtyCounter来记录统计信息,该第一结构体包括time_last_count用于记录统计开始的时间,dirty_pages_period用于记录当前周期已经统计到的脏页数量,dirty_pages_rate用于记录当前周期的脏页速率;dirty_pages_period_peak_rate用于记录历史脏页速率峰值,即在得到当前周期的脏页速率之前的最大脏页速率。对应的代码如下:
struct KVMDirtyRingDirtyCounter {
int64_ttime_last_count;
uint64_tdirty_pages_period;
int64_tdirty_pages_rate;
int64_tdirty_pages_period_peak_rate;
};
另外,在第二结构体struct KVMDirtyRingReaper中增加成员对象structKVMDirtyRingDirtyCounter counter,在脏页收集线程中就能方便记录和统计脏页信息,用于后续的脏页计算。
在脏页收集线程kvm_dirty_ring_reaper_thread中,在调用原始接口kvm_dirty_ring_reap从脏环dirty ring收集脏页前,调用新增接口kvm_dirty_ring_reap_count。新增接口kvm_dirty_ring_reap_count会判断当前时间与上次计算脏页速率的时间之间的时间间隔spend_time是否已经达到1秒,如果没有达到,则直接退出。如果已经达到1秒,则使用计算公式KVMDirtyRingDirtyCounter.dirty_pages_period/(KVMDirtyRingDirtyCounter.time_last_count-current_time)计算出脏页速率,其中,KVMDirtyRingDirtyCounter.dirty_pages_period表示当前周期已经统计到的脏页数量,并保存到脏页速率对象KVMDirtyRingDirtyCounter.dirty_pages_rate中,KVMDirtyRingDirtyCounter.time_last_count表示当前周期统计开始的时间,current_time表示当前时间,可以理解,KVMDirtyRingDirtyCounter.time_last_count-current_time,表示时间周期,即前文提到的预设时间间隔。在计算出脏页速率后,比较该值是否比最大脏页速率KVMDirtyRingDirtyCounter.dirty_pages_period_peak_rate更大,如果更大就更新KVMDirtyRingDirtyCounter.dirty_pages_period_peak_rate。
为了方便本领域技术人员理解本方案,下面将结合图3所示的示例对本申请实施例提供的脏页速率的统计方法进行示例性介绍。
步骤301,启动脏页收集线程。脏页收集线程用于从脏环中获取脏页,并统计脏页数量。
步骤302,调用计算脏页速率入口函数。计算脏页速率入口函数用于在当前时间与上一次统计脏页速率的目标时间之间的时间间隔达到预设时间间隔时,根据当前统计的脏页数量和预设时间间隔,计算当前统计周期的脏页速率。
步骤303,获取统计周期的开始时间。示例性地,可以将统计周期的开始时间设为0,通过计时器记录当前时间与统计周期的开始时间之间的时间间隔。
步骤304,判断时间间隔是否超过1秒,若是,则执行步骤305,若否,则执行步骤306。
步骤305,计算当前统计周期的脏页速率,并更新脏页速率峰值,以及清空当前统计的脏页数量和统计周期的开始时间。即用当前统计周期统计出的脏页数量除以时间间隔。通过比较当前统计周期的脏页速率和脏页速率峰值,在当前统计周期的脏页速率大于脏页速率峰值时,用当前统计周期的脏页速率更新脏页速率峰值。
步骤306,遍历所有虚拟中央处理器对应的脏环,收集脏页。
步骤307,将收集到的脏页标记到脏页位图中。
步骤308,判断该脏页是否标记过。即判断该脏页在先是否已经在脏页位图中标记过,若是,则执行步骤310;若否,则执行步骤309。示例性地,可以通过内核位原子操作接口查看脏页位图与该脏页对应的位的值是否为1,来判断该脏页在先是否已经在脏页位图中标记过。
步骤309,增加当前统计的脏页数量。
步骤310,通知内核回收环空间。
步骤311,睡眠1秒,然后,返回步骤302。
本申请实施例通过从虚拟机对应的多个脏环中获取脏页;对获取到的脏页进行去重处理后,确定脏页数量;根据脏页数量和对应的获取时长,统计虚拟机的脏页速率;在统计出脏页速率后,将确定出的脏页速率与最大脏页速率进行比较,并在统计出的脏页速率大于最大脏页速率时,根据统计出的脏页速率更新最大脏页速率,并将最大脏页速率确定为虚拟机的实际脏页速率。本申请实施例在统计虚拟机内存脏页速率的过程中,使用了脏环作为脏页跟踪的特点,并对从脏环获取到的脏页进行了去重处理,能够准确的计算出当前虚拟机的内存脏页的产生速率,通过将当前虚拟机的内存脏页的产生速率与最大脏页速率进行比较,并在当前虚拟机的内存脏页的产生速率大于最大脏页速率时,更新最大脏页速率,将最大脏页速率确定为虚拟机的实际脏页速率,以过滤速率抖动,并且可以方便运维人员应对突发脏页速率变高的场景,进而提高在线迁移虚拟机的成功率以及安全性。
此外,发明人还通过实验验证的方式,通过压力stress工具产生指定的内存压力,比如1G/s、8G/s、32G/s等,通过与QEMU现有的方式统计出的脏页速率相比,采用本申请实施例提供的脏页速率的统计方法确定出的脏页速率更接近真实的压力结果,并且能够反映高压力的实际压力情况。
本申请实施例基于脏环的特点,在收集脏页的同时完成脏页数量的统计,能够在源头上统计一个时间段内所有脏页情况,从而保证计算出的脏页速率的准确性。在统计脏页数量的过程中,通过内核位原子操作接口查看脏页位图是否为1来判断是否为重复的脏页来去除脏环中重复脏页。此外,本申请实施例在脏页收集线程中完成脏页统计,而不是在迁移线程中或者另外新起的线程中进行统计,可以避免统计周期不收控制和被干扰,保证在高压场景下统计的准确性。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图4,示出了本申请的一种脏页速率的统计装置实施例的结构框图,与上述脏页速率的统计方法实施例相对应,本申请实施例提供的脏页速率的统计装置应用于虚拟机,所述虚拟机包括多个虚拟中央处理器,每个所述虚拟中央处理器对应一个脏环,该脏页速率的统计装置可以包括如下模块:
脏页获取模块401,用于从所述虚拟机对应的多个脏环中获取脏页;
数量确定模块402,用于对获取到的所述脏页进行去重处理后,确定脏页数量;
速率统计模块403,用于根据所述脏页数量和对应的获取时长,统计所述虚拟机的脏页速率。
在本申请的一些可选实施例中,所述装置还可以包括:
脏页标记模块,用于将获取到的脏页标记到脏页位图中。
在本申请的一些可选实施例中,所述数量确定模块402,可以包括:
第一数量确定子模块,用于在将获取到的脏页标记到脏页位图后,根据所述脏页位图标记的脏页,确定脏页数量。
在本申请的一些可选实施例中,所述数量确定模块402,可以包括:
原始数量确定子模块,用于在将获取到的脏页标记到脏页位图之前,根据当前的脏页位图,确定当前的脏页数量;
标记判断子模块,用于遍历所述脏页,判断当前遍历的脏页是否已经标记到所述脏页位图中;
第二数量确定子模块,用于若否,则将当前的脏页数量加1,并将所述当前遍历的脏页标记到所述脏页位图中。
在本申请的一些可选实施例中,所述数量确定模块402,还可以包括:
第三数量确定子模块,用于若所述当前遍历的脏页已经标记到所述脏页位图中,则保持当前的脏页数量。
在本申请的一些可选实施例中,所述标记判断子模块,具体可以用于判断所述脏页位图中与当前遍历的脏页对应的目标位是否为1。
在本申请的一些可选实施例中,所述装置还可以包括:
标记删除子模块,用于当脏页被迁移后,将被迁移的脏页从所述脏页位图中删除。
在本申请的一些可选实施例中,所述装置还可以包括:
脏环重置模块,用于在所述从所述虚拟机对应的多个脏环中获取脏页之后,重置所述脏环
在本申请的一些可选实施例中,所述脏页获取模块401,具体可以用于在预设时间间隔内,从所述虚拟机对应的多个脏环中获取脏页;
所述速率统计模块403,具体可以用于根据所述脏页数量和所述预设时间间隔,统计所述虚拟机的脏页速率。
在本申请的一些可选实施例中,所述脏页获取模块401,具体可以用于当当前时间与上一次统计脏页速率的目标时间之间的间隔小于预设时间间隔时,从所述虚拟机对应的多个脏环中获取脏页。
在本申请的一些可选实施例中,所述装置还可以包括:
脏页速率判断模块,用于判断所述脏页速率是否大于最大脏页速率;
脏页速率更新模块,用于若是,则将所述脏页速率确定为最大脏页速率;
实际脏页速率确定模块,用于将所述最大脏页速率确定为所述虚拟机的实际脏页速率。
在本申请的一些可选实施例中,脏页获取模块401,具体可以用于通过以预设频率运行的脏页收集线程从所述虚拟机对应的多个脏环中获取脏页;所述脏页收集线程与虚拟机迁移线程相互独立;所述预设频率在预设频率范围内与所述虚拟机的脏页速率呈正相关。
在本申请的一些可选实施例中,所述装置还可以包括:
清除模块,用于在每次统计完虚拟机的脏页速率后,对脏页位图中标记的脏页进行清除处理。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例还公开了电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的脏页速率的统计方法的步骤。
本申请实施例还公开了计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的脏页速率的统计方法的步骤。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本申请实施例中可能会涉及到对用户数据的使用,在实际应用中,可以在符合所在国的适用法律法规要求的情况下(例如,用户明确同意,对用户切实通知,等),在适用法律法规允许的范围内在本文描述的方案中使用用户特定的个人数据。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种脏页速率的统计方法及装置、电子设备和存储介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (14)
1.一种脏页速率的统计方法,其特征在于,应用于虚拟机,所述虚拟机包括多个虚拟中央处理器,每个所述虚拟中央处理器对应一个脏环,所述方法包括:
从所述虚拟机对应的多个脏环中获取脏页;
对获取到的所述脏页进行去重处理后,确定脏页数量;
根据所述脏页数量和对应的获取时长,统计所述虚拟机的脏页速率;
其中,所述从所述虚拟机对应的多个脏环中获取脏页,包括:
通过以预设频率运行的脏页收集线程从所述虚拟机对应的多个脏环中获取脏页;所述脏页收集线程与虚拟机迁移线程相互独立;所述预设频率在预设频率范围内与所述虚拟机的脏页速率呈正相关,并且所述预设频率在所述预设频率范围内根据所述虚拟机退出的次数来调整;所述虚拟机退出的次数是指所述虚拟机因脏环存满、无法存储新增脏页而退出的次数;
所述预设频率在所述预设频率范围内根据所述虚拟机退出的次数来调整,包括:当所述虚拟机退出的次数增加时,增大所述预设频率;当所述虚拟机退出的次数没有变化时,获取所述脏页收集线程在当前获取周期获取到的脏页总数量Y,将所述脏页总数量Y与上一获取周期获取到的脏页总数量X进行比较,得到本轮脏页增加趋势T2;若所述本轮脏页增加趋势T2与上轮脏页增加趋势T1相等,则对稳定计数加1;若所述本轮脏页增加趋势T2与上轮脏页增加趋势T1不相等,则对所述稳定计数减1,或者对所述稳定计数清零;当所述稳定计数增大到预设稳定计数阈值时,根据本轮脏页增长趋势T2调整所述预设频率。
2.根据权利要求1所述的方法,其特征在于,在所述从所述虚拟机对应的多个脏环中获取脏页之后,还包括:
将获取到的脏页标记到脏页位图中。
3.根据权利要求2所述的方法,其特征在于,所述对获取到的所述脏页进行去重处理后,确定脏页数量,包括:
在将获取到的脏页标记到脏页位图后,根据所述脏页位图标记的脏页,确定脏页数量。
4.根据权利要求2所述的方法,其特征在于,所述对获取到的所述脏页进行去重处理后,确定脏页数量,包括:
在将获取到的脏页标记到脏页位图之前,根据当前的脏页位图,确定当前的脏页数量;
遍历所述脏页,判断当前遍历的脏页是否已经标记到所述脏页位图中;
若否,则将当前的脏页数量加1,并将所述当前遍历的脏页标记到所述脏页位图中。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若所述当前遍历的脏页已经标记到所述脏页位图中,则保持当前的脏页数量。
6.根据权利要求4所述的方法,其特征在于,所述判断当前遍历的脏页是否已经标记到所述脏页位图中,包括:
判断所述脏页位图中与当前遍历的脏页对应的目标位是否为1。
7.根据权利要求2-6任一项所述的方法,其特征在于,所述方法还包括:
当脏页被迁移后,将被迁移的脏页从所述脏页位图中删除。
8.根据权利要求7所述的方法,其特征在于,在所述从所述虚拟机对应的多个脏环中获取脏页之后,还包括:
重置所述脏环。
9.根据权利要求1所述的方法,其特征在于,所述从所述虚拟机对应的多个脏环中获取脏页,包括:
在预设时间间隔内,从所述虚拟机对应的多个脏环中获取脏页;
所述根据所述脏页数量和对应的获取时长,统计所述虚拟机的脏页速率,包括:
根据所述脏页数量和所述预设时间间隔,统计所述虚拟机的脏页速率。
10.根据权利要求9所述的方法,其特征在于,所述在预设时间间隔内,从所述虚拟机对应的多个脏环中获取脏页,包括:
当当前时间与上一次统计脏页速率的目标时间之间的间隔小于预设时间间隔时,从所述虚拟机对应的多个脏环中获取脏页。
11.根据权利要求1所述的方法,其特征在于,所述方法还包括:
判断所述脏页速率是否大于最大脏页速率;
若是,则将所述脏页速率确定为最大脏页速率;
将所述最大脏页速率确定为所述虚拟机的实际脏页速率。
12.一种脏页速率的统计装置,其特征在于,应用于虚拟机,所述虚拟机包括多个虚拟中央处理器,每个所述虚拟中央处理器对应一个脏环,所述装置包括:
脏页获取模块,用于从所述虚拟机对应的多个脏环中获取脏页;
数量确定模块,用于对获取到的所述脏页进行去重处理后,确定脏页数量;
速率统计模块,用于根据所述脏页数量和对应的获取时长,统计所述虚拟机的脏页速率;
其中,所述脏页获取模块,具体用于通过以预设频率运行的脏页收集线程从所述虚拟机对应的多个脏环中获取脏页;所述脏页收集线程与虚拟机迁移线程相互独立;所述预设频率在预设频率范围内与所述虚拟机的脏页速率呈正相关,并且所述预设频率在所述预设频率范围内根据所述虚拟机退出的次数来调整;所述虚拟机退出的次数是指所述虚拟机因脏环存满、无法存储新增脏页而退出的次数;
所述预设频率在所述预设频率范围内根据所述虚拟机退出的次数来调整,包括:当所述虚拟机退出的次数增加时,增大所述预设频率;当所述虚拟机退出的次数没有变化时,获取所述脏页收集线程在当前获取周期获取到的脏页总数量Y,将所述脏页总数量Y与上一获取周期获取到的脏页总数量X进行比较,得到本轮脏页增加趋势T2;若所述本轮脏页增加趋势T2与上轮脏页增加趋势T1相等,则对稳定计数加1;若所述本轮脏页增加趋势T2与上轮脏页增加趋势T1不相等,则对所述稳定计数减1,或者对所述稳定计数清零;当所述稳定计数增大到预设稳定计数阈值时,根据本轮脏页增长趋势T2调整所述预设频率。
13.一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1-11任一项所述的脏页速率的统计方法。
14.一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1-11任一项所述的脏页速率的统计方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310052238.8A CN115794315B (zh) | 2023-02-02 | 2023-02-02 | 脏页速率的统计方法及装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310052238.8A CN115794315B (zh) | 2023-02-02 | 2023-02-02 | 脏页速率的统计方法及装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115794315A CN115794315A (zh) | 2023-03-14 |
CN115794315B true CN115794315B (zh) | 2023-06-23 |
Family
ID=85429519
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310052238.8A Active CN115794315B (zh) | 2023-02-02 | 2023-02-02 | 脏页速率的统计方法及装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115794315B (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110134490B (zh) * | 2018-02-08 | 2023-12-29 | 中兴通讯股份有限公司 | 虚拟机动态迁移方法、设备及存储介质 |
CN111638937A (zh) * | 2020-04-23 | 2020-09-08 | 龙芯中科技术有限公司 | 虚拟机的迁移方法、装置、电子设备及存储介质 |
CN112988332B (zh) * | 2021-04-26 | 2021-09-21 | 杭州优云科技有限公司 | 一种虚拟机热迁移预测方法、系统和计算机可读存储介质 |
CN115543530A (zh) * | 2021-06-30 | 2022-12-30 | 华为技术有限公司 | 一种虚拟机迁移方法以及相关装置 |
CN114443211A (zh) * | 2021-12-22 | 2022-05-06 | 天翼云科技有限公司 | 虚拟机热迁移方法、设备及存储介质 |
CN115629839A (zh) * | 2022-10-19 | 2023-01-20 | 银河麒麟软件(长沙)有限公司 | 虚拟机热迁移中基于脏页配额的限速方法、系统及介质 |
-
2023
- 2023-02-02 CN CN202310052238.8A patent/CN115794315B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115794315A (zh) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112346829B (zh) | 一种用于任务调度的方法及设备 | |
US10831387B1 (en) | Snapshot reservations in a distributed storage system | |
CN106681811B (zh) | 基于线程池的多线程调度方法及装置 | |
JP5112524B2 (ja) | ストレージシステム及びストレージシステムの運用方法 | |
US10817380B2 (en) | Implementing affinity and anti-affinity constraints in a bundled application | |
TW201734752A (zh) | 資料遷移的最佳化方法、評估方法及處理方法及裝置 | |
CN111124254B (zh) | 调度存储空间回收请求的方法、电子设备和程序产品 | |
WO2018068714A1 (zh) | 重删处理方法及存储设备 | |
US20170270183A1 (en) | Sensor data management apparatus, sensor data management method, and computer program product | |
CN105022668A (zh) | 一种作业调度方法及系统 | |
CN112988332A (zh) | 一种虚拟机热迁移预测方法、系统和计算机可读存储介质 | |
JP6252309B2 (ja) | 監視漏れ特定処理プログラム,監視漏れ特定処理方法及び監視漏れ特定処理装置 | |
CN114281648A (zh) | 一种数据采集方法、装置、电子设备及存储介质 | |
CN115794315B (zh) | 脏页速率的统计方法及装置、电子设备和存储介质 | |
JP6015755B2 (ja) | 仮想ディスクのマイグレーションに関する情報処理方法及び装置 | |
CN110688360A (zh) | 分布式文件系统存储管理方法、装置、设备及存储介质 | |
CN110928636A (zh) | 虚拟机热迁移方法、装置和设备 | |
US11662907B2 (en) | Data migration of storage system | |
CN110109970B (zh) | 一种数据查询处理方法及装置 | |
JP2019144872A (ja) | 機械学習を行なう計算モデルを有するシステム、及び機械学習の方法 | |
CN112783713A (zh) | 一种多核虚拟机卡顿的处理方法、装置、设备和存储介质 | |
CN114625805B (zh) | 一种回测配置方法、装置、设备及介质 | |
CN112446490A (zh) | 一种网络训练的数据集缓存方法、装置、设备及存储介质 | |
CN109828718B (zh) | 一种磁盘存储负载均衡方法及装置 | |
WO2021096346A1 (en) | A computer-implemented system for management of container logs and its method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: 100007 room 205-32, floor 2, building 2, No. 1 and No. 3, qinglonghutong a, Dongcheng District, Beijing Patentee after: Tianyiyun Technology Co.,Ltd. Address before: 100093 Floor 4, Block E, Xishan Yingfu Business Center, Haidian District, Beijing Patentee before: Tianyiyun Technology Co.,Ltd. |