CN108920254B - 一种基于细粒度的内存分配方法 - Google Patents
一种基于细粒度的内存分配方法 Download PDFInfo
- Publication number
- CN108920254B CN108920254B CN201810680691.2A CN201810680691A CN108920254B CN 108920254 B CN108920254 B CN 108920254B CN 201810680691 A CN201810680691 A CN 201810680691A CN 108920254 B CN108920254 B CN 108920254B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- memory
- intensive
- pages
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于细粒度的内存分配方法,特征是采取虚拟机类型的探测、虚拟机内页面类型的探测、细粒度的差异化页面分配策略和访存感知的内存动态分配策略。由于对虚拟机的类型进行了区分,使得I/O密集型和计算密集型的虚拟机使用的页面都是小页,与系统默认为虚拟机分配大页的策略相比,缓解了内存膨胀,降低了内存分配开销,提高了内存重删率;同时对于访存密集型虚拟机,将其匿名页分配为大页,可以保持较高的访存性能,而将访存密集型虚拟机的Page Cache页和内核页分配为小页,与系统默认分配大页的策略相比,缓解了内存膨胀,降低了内存分配开销,提高了内存重删率,尽可能地降低了系统性能的损失。
Description
技术领域
本发明属于计算机内存管理技术领域,具体涉及通过虚拟机类型和页面类型的探测机制基于细粒度的实现性能高效的内存分配方法。
背景技术
Linux 2.6.38版本引入了透明大页(Transparent Hugepages)这一内核特性,它通过提高处理器的内存映射硬件的使用效率来获取更好的性能。在Linux内存管理系统中,普通页面的大小为4KB,这些页面被称为小页,而透明大页的大小为2MB,这些页面被称为大页。虽然大页与小页相比有较高的访存性能,但给系统带来了内存膨胀、分配开销大、内存重删率低的问题。在虚拟机的运行过程中,不同虚拟机具有不同的访存特征,在同一虚拟机内部,不同类型的页面也具有不同的访存特征,而不同访存特征的页面对性能的需求是不一样的。虚拟机在运行过程中,内存管理系统并没有考虑页面访存特征的差异性,而是统一为虚拟机分配大页,尽管这一内存分配机制给虚拟机带来了性能上的优势,但也给系统引入了内存膨胀、内存分配开销增加和内存重删率降低等问题。
发明内容
本发明的目的是提出一种基于细粒度的内存分配方法,以克服现有技术的上述缺陷,在保证系统较高访存性能的情况下,缓解内存膨胀、降低内存分配开销,提高内存重删率。
本发明基于细粒度的内存分配方法,其特征在于包括以下步骤:
第一步:虚拟机类型的探测
针对所有运行的虚拟机,通过硬件性能计数器获取虚拟机的内存带宽,通过截获虚拟机输入/输出(I/O)的访问路径,获取虚拟机的I/O访问频率;设定一个范围在[0,N] 的阀值T1表示内存带宽,设定一个范围在[0,N]的阀值T2表示I/O访问频率,依据T1和 T2这两个阈值将虚拟机分为三种类型:将内存带宽大于等于T1且I/O访问频率小于T2 的虚拟机标记为访存密集型虚拟机;将内存带宽大于等于T1且I/O访问频率大于等于 T2的虚拟机标记为I/O密集型虚拟机;将内存带宽小于T1且I/O访问频率小于T2的虚拟机标记为计算密集型虚拟机;
第二步:虚拟机页面类型的探测
针对虚拟机运行过程中占用的内存,将虚拟机内使用的内存分为三个类型:通过截获虚拟机输入/输出(I/O)的访问路径,在文件系统层,将虚拟机I/O请求的目标页标记为虚拟机的页高速缓存(Page Cache)页;根据Linux内存系统的管理方式,在虚拟机内存地址映射层,将虚拟机物理地址前1GB的页面标记为虚拟机的内核页;将虚拟机使用的剩余页面标记为虚拟机的匿名页;
第三步:细粒度的差异化页面分配策略
对于被标记为I/O密集型或计算密集型的虚拟机,在分配内存的时候,统一为这些虚拟机内存分配小页;针对访存密集型虚拟机,对于它的Page Cache页和内核页这两个类型的页面分配小页,而对于访存密集型虚拟机的匿名页分配大页;
第四步:访存感知的内存动态分配策略
对于被标记为I/O密集型或计算密集型的虚拟机,如果这些虚拟机的类型转变为访存密集型,则将这些虚拟机的匿名页由小页转换为大页;
对于被标记为访存密集型的虚拟机,如果这些虚拟机的类型转变为I/O密集型或计算密集型,则将这些虚拟机的匿名页由大页转换为小页。
上述本发明基于细粒度的内存分配方法,主要采取了虚拟机类型的探测、虚拟机内页面类型的探测、细粒度的差异化页面分配策略和访存感知的内存动态分配策略步骤。由于本发明对虚拟机的类型进行了区分,使得I/O密集型和计算密集型的虚拟机使用的页面都是小页,与系统默认为虚拟机分配大页的策略相比,缓解了内存膨胀,降低了内存分配开销,提高了内存重删率;同时对于访存密集型虚拟机,由于将其匿名页分配为大页,可以保持较高的访存性能,而将访存密集型虚拟机的Page Cache页和内核页分配为小页,与系统默认分配大页的策略相比,缓解了内存膨胀,降低了内存分配开销,提高了内存重删率,尽可能地降低了系统性能的损失。
附图说明
图1为本发明基于细粒度的内存分配方法的实施操作流程示意图。
图2为虚拟机在系统默认配置下的内存占用示意图。
图3为虚拟机I/O访问路径示意图。
图4为基于虚拟机类型探测机制下的虚拟机内存占用示意图。
图5为基于虚拟机页面类型探测机制下的虚拟机内存占用示意图。
具体实施方式
下面结合附图通过具体实施例对本发明基于细粒度的内存分配方法作进一步的详细说明。
实施例1:
图1为本发明基于细粒度的内存分配方法的实施操作流程示意图,图2为虚拟机在系统默认配置下的内存占用示意图。
本实施例基于细粒度的内存分配方法,具体包括以下步骤:
第一步:虚拟机类型的探测
针对所有运行的虚拟机,通过硬件性能计数器获取虚拟机的内存带宽(参见附图1中的流程操作框①),通过截获虚拟机输入/输出(I/O)的访问路径(参见图1中的流程操作框②),获取虚拟机的I/O访问频率;图3给出了虚拟机I/O访问路径示意图:虚拟机发起I/O请求时,这些I/O请求会被重定向到主机的文件中,因此,在主机的文件系统层,可以截获到虚拟机的I/O请求,进而可以获取到虚拟机的I/O访问频率。设定一个范围在[0,N]的阀值T1表示内存带宽,设定一个范围在[0,N]的阀值T2表示I/O访问频率,依据T1(参见图1中的流程操作框③)和T2(参见图1中的流程操作框④) 这两个阈值,将虚拟机的类型分为三大类;将内存带宽大于等于T1且I/O访问频率小于T2的虚拟机标记为访存密集型虚拟机;将内存带宽大于等于T1且I/O访问频率大于等于T2的虚拟机标记为I/O密集型虚拟机;将内存带宽小于T1且I/O访问频率小于T2的虚拟机标记为计算密集型虚拟机。
附图2中给出了本实施例中采用的3个虚拟机:其中虚拟机1的内存带宽小于T1且I/O访问频率小于T2,因此将虚拟机1的类型标记为计算密集型;虚拟机2的内存带宽大于等于T1且I/O访问频率大于等于T2,因此将虚拟机2的类型标记为I/O密集型;虚拟机3的内存带宽大于等于T1且I/O访问频率小于T2,因此将虚拟机3标记为访存密集型。
第二步:虚拟机页面类型的探测
针对虚拟机运行过程中占用的内存,将虚拟机内使用的内存分为三个类型:页高速缓存(Page Cache),内核页和匿名页。虚拟机的Page Cache用来缓存文件数据,虚拟机的内核页用来存放内核数据,虚拟机的的匿名页用来存放堆栈数据。
图3给出了虚拟机I/O的访问流程:虚拟机的I/O请求会定向到虚拟机的PageCache,进而会被重定向到主机的文件中,因此可以在主机文件系统层,将虚拟机I/O请求的目标页标记为虚拟机的Page Cache页;根据Linux内存系统的管理方式,在虚拟机内存地址映射层,将虚拟机物理地址前1GB的页面标记为虚拟机的内核页;对于虚拟机使用的剩余页面,将这些页面标记为虚拟机的匿名页。
在图2给出的本实施例的3个虚拟机中,对于虚拟机所占用的内存空间,灰色方块代表虚拟机的Page Cache页和内核页,白色方块代表虚拟机的匿名页。通过虚拟机页面类型的探测,可以区分出虚拟机的Page Cache页、内核页和匿名页。
第三步:细粒度的差异化页面分配策略
对于I/O密集型或计算密集型的虚拟机,系统分配大页对它们的性能影响较低,因此,对于被标记为I/O密集型或计算密集型的虚拟机,在分配内存的时候,统一为这些虚拟机内存分配小页(参见图1中的流程操作框⑤),这样可以在不影响系统性能的情况下,规避掉大页给系统所带来的问题。
图4为基于虚拟机类型探测机制下的虚拟机内存占用示意图。在附图4中,虚拟机内部的页面由虚线框围着代表系统分配的是小页,否则代表大页。从图4中可以看到,因为虚拟机1和虚拟2的类型分别是计算密集型和I/O密集型,因此,系统给它们分配的都是小页。
针对访存密集型虚拟机,它的Page Cache页和内核页因为访问频率低,对系统的性能影响较大,因此,对于存密集型虚拟机的Page Cache页和内核页,系统应给它们分配小页(参见图1中的流程操作框⑥)。对于访存密集型虚拟机的匿名页,因为它们访问频率较高,对系统的性能影响较大,因此,应给访存密集型虚拟机的匿名页分配大页(参见图1中的流程操作框⑦)。
图5为基于虚拟机页面类型探测机制下的虚拟机内存占用示意图。在附图5中,虚拟机3是访存密集型虚拟机,根据虚拟机页面类型探测机制,识别出虚拟机3的Page Cache页、内核页和匿名页,给虚拟机3的Page Cache页和内核页分配小页,给虚拟机 3的匿名页分配大页。
第四步:访存感知的内存动态分配策略
因为虚拟机的运行过程是动态的,因此,在运行过程中,虚拟机在不同的时间段内可能呈现出不同的状态,例如虚拟机可能由I/O密集型转变为访存密集型,也有可能从访存密集型转变为I/O密集型。为了应对虚拟机类型的动态变化过程,系统需要有访存感知的内存动态分配策略。
对于被标记为I/O密集型或计算密集型的虚拟机,如果这些虚拟机的类型转变为访存密集型,则将这些虚拟机的匿名页由小页转换为大页(参见图1中的流程操作框⑧)。
对于被标记为访存密集型的虚拟机,如果这些虚拟机的类型转变为I/O密集型或计算密集型,则将这些虚拟机的匿名页由大页转换为小页(参见图1中的流程操作框⑨)。
在本实施例中,通过采用细粒度的内存分配方法,系统为计算密集型虚拟机和I/O密集型虚拟机分配小页,为访存密集型虚拟机的Page Cache页和内核页分配小页,而为访存密集型虚拟机的匿名页分配大页;同时,系统采用了访存感知的内存动态分配策略,使得系统具有健壮性。在细粒度的内存分配方法下,规避了大页给系统带来的内存膨胀。
Claims (1)
1.一种基于细粒度的内存分配方法,其特征在于包括以下步骤:
第一步:虚拟机类型的探测
针对所有运行的虚拟机,通过硬件性能计数器获取虚拟机的内存带宽,通过截获虚拟机输入/输出的访问路径,获取虚拟机的I/O访问频率;设定一个范围在[0,N]的阀值T1表示内存带宽,设定一个范围在[0,N]的阀值T2表示I/O访问频率,依据T1和T2这两个阈值将虚拟机分为三种类型:将内存带宽大于等于T1且I/O访问频率小于T2的虚拟机标记为访存密集型虚拟机;将内存带宽大于等于T1且I/O访问频率大于等于T2的虚拟机标记为I/O密集型虚拟机;将内存带宽小于T1且I/O访问频率小于T2的虚拟机标记为计算密集型虚拟机;
第二步:虚拟机页面类型的探测
针对虚拟机运行过程中占用的内存,将虚拟机内使用的内存分为三个类型:通过截获虚拟机输入/输出的访问路径,在文件系统层,将虚拟机I/O请求的目标页标记为虚拟机的页高速缓存页;根据Linux内存系统的管理方式,在虚拟机内存地址映射层,将虚拟机物理地址前1GB的页面标记为虚拟机的内核页;将虚拟机使用的剩余页面标记为虚拟机的匿名页;
第三步:细粒度的差异化页面分配策略
对于被标记为I/O密集型或计算密集型的虚拟机,在分配内存的时候,统一为这些虚拟机内存分配小页;针对访存密集型虚拟机,对于它的Page Cache页和内核页这两个类型的页面分配小页,而对于访存密集型虚拟机的匿名页分配大页;
第四步:访存感知的内存动态分配策略
对于被标记为I/O密集型或计算密集型的虚拟机,如果这些虚拟机的类型转变为访存密集型,则将这些虚拟机的匿名页由小页转换为大页;
对于被标记为访存密集型的虚拟机,如果这些虚拟机的类型转变为I/O密集型或计算密集型,则将这些虚拟机的匿名页由大页转换为小页。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810680691.2A CN108920254B (zh) | 2018-06-27 | 2018-06-27 | 一种基于细粒度的内存分配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810680691.2A CN108920254B (zh) | 2018-06-27 | 2018-06-27 | 一种基于细粒度的内存分配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108920254A CN108920254A (zh) | 2018-11-30 |
CN108920254B true CN108920254B (zh) | 2021-07-06 |
Family
ID=64424034
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810680691.2A Active CN108920254B (zh) | 2018-06-27 | 2018-06-27 | 一种基于细粒度的内存分配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108920254B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110865869B (zh) * | 2019-11-05 | 2022-05-03 | 北京大学 | 一种申威架构上的虚拟机访存特征提取方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577333A (zh) * | 2012-08-03 | 2014-02-12 | 国际商业机器公司 | 用于自动使用大页面的方法和装置 |
CN105843748A (zh) * | 2015-01-15 | 2016-08-10 | 华为技术有限公司 | 一种对内存中内存页的处理方法及装置 |
CN107783812A (zh) * | 2016-08-24 | 2018-03-09 | 阿里巴巴集团控股有限公司 | 虚拟机内存管理方法及装置 |
-
2018
- 2018-06-27 CN CN201810680691.2A patent/CN108920254B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577333A (zh) * | 2012-08-03 | 2014-02-12 | 国际商业机器公司 | 用于自动使用大页面的方法和装置 |
CN105843748A (zh) * | 2015-01-15 | 2016-08-10 | 华为技术有限公司 | 一种对内存中内存页的处理方法及装置 |
CN107783812A (zh) * | 2016-08-24 | 2018-03-09 | 阿里巴巴集团控股有限公司 | 虚拟机内存管理方法及装置 |
Non-Patent Citations (2)
Title |
---|
Automatic Adaptive Page-Size Control for Remote Memory Paging;Hiroko Midorikawa;《2012 12th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing 》;20120614;全文 * |
基于PHPA的内存大小页动态调整技术;潘俊良;《中国优秀硕士学位论文全文数据库信息科技辑》;20180115;第2018年卷(第1期);I138-745 * |
Also Published As
Publication number | Publication date |
---|---|
CN108920254A (zh) | 2018-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2645259B1 (en) | Method, device and system for caching data in multi-node system | |
US7233335B2 (en) | System and method for reserving and managing memory spaces in a memory resource | |
US9058268B1 (en) | Apparatus, system and method for memory management | |
US10572378B2 (en) | Dynamic memory expansion by data compression | |
US9086882B2 (en) | DRAM energy use optimization using application information | |
JP7467593B2 (ja) | リソース割振り方法、記憶デバイス、および記憶システム | |
CN114860329B (zh) | 动态一致性偏置配置引擎及方法 | |
CN113760560A (zh) | 一种进程间通信方法以及进程间通信装置 | |
KR20180013693A (ko) | 초과 공급 메모리 장치들을 통합하기 위한 시스템 및 방법 | |
JP2024054306A (ja) | ハードウェアベースのメモリ圧縮 | |
US7904688B1 (en) | Memory management unit for field programmable gate array boards | |
CN108920254B (zh) | 一种基于细粒度的内存分配方法 | |
CN112596913B (zh) | 提高内存透明大页性能的方法、装置及用户设备、存储介质 | |
CN113010452A (zh) | 一种高效且支持QoS的虚拟内存架构 | |
US10216759B2 (en) | Heterogeneous file optimization | |
JP2013196384A (ja) | 制御装置、管理装置、情報処理システム、制御装置の動作方法、管理装置の動作方法、情報処理システムの動作方法およびプログラム | |
CN108897618B (zh) | 一种异构内存架构下基于任务感知的资源分配方法 | |
KR20100069302A (ko) | 메모리 관리 장치 및 방법 | |
EP4365749A1 (en) | Resource allocation method and device | |
WO2017031637A1 (zh) | 一种内存访问方法、装置和系统 | |
CN116560560A (zh) | 存储数据的方法和相关装置 | |
CN111444113B (zh) | 非易失性存储介质共享方法、装置、电子设备及存储设备 | |
WO2015161804A1 (zh) | 一种Cache分区的方法及装置 | |
CN110865768B (zh) | 写缓存资源分配方法、装置、设备以及存储介质 | |
CN113010453A (zh) | 一种内存管理的方法、系统、设备及可读存储介质 |
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 |