CN113434374A - 基于多线程的posix标准的实时操作系统内存管理算法性能测试方法及系统 - Google Patents
基于多线程的posix标准的实时操作系统内存管理算法性能测试方法及系统 Download PDFInfo
- Publication number
- CN113434374A CN113434374A CN202110671038.1A CN202110671038A CN113434374A CN 113434374 A CN113434374 A CN 113434374A CN 202110671038 A CN202110671038 A CN 202110671038A CN 113434374 A CN113434374 A CN 113434374A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- operating system
- thread
- data set
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于多线程的POSIX标准的实时操作系统内存管理算法性能测试方法,所述方法首先在操作系统外部由自动数据集生成工具生成内存分配数据的测试集;并提出了双线程测试模型和多线程测试模型;针对基于POSIX接口的实时操作系统的内存管理算法,在测试模型下运行生成的数据集,以便获取在两个测试模型中运行的日志数据;最后将运行日志数据输入到自动数据分析工具中进行数据处理,得到该内存管理算法的时间性能和碎片性能的具体数据的分析结果和图表展示,从而得出该内存管理算法适合的数据场景。本发明应用到开源实时操作系统Zephyr中,对不同的内存管理算法进行分析,以得到不同内存管理算法的性能指标。
Description
技术领域
本发明属于实时操作系统技术领域,具体涉及一种基于多线程的POSIX标准的实时操作系统内存管理算法性能测试方法和系统。
背景技术
随着计算机软硬件的快速发展,计算机软件的规模越来越大,复杂度越来越高。操作系统作为计算的一个系统性软件,在计算机整个运行过程中起着承上启下的核心作用。随着嵌入式领域的快速发展,其软件复杂度也在相应的增加,实时嵌入式系统中需要有更有效的动态内存分配。然而,内存的动态分配和释放是不确定的,这主要体现在两个方面:系统申请和释放内存块的大小不确定,申请和释放的时间不确定。这都会影响嵌入式实时操作系统的响应实时性。对于实时操作系统来说,最关键的是需要保证“实时性”。内存碎片问题使得内存分配尤其是动态内存分配成为系统不确定性的一个主要来源。所以,通过测试来确定内存碎片对实时操作系统内存分配性能的影响具有重要意义。
在对内存管理算法进行性能评价时,主要从两方面进行考量:内存分配和释放的时间性能,系统运行过程中产生的碎片情况。内存分配和释放时间将会影响系统的实时响应时间;内存碎片一般是不可利用的,内存碎片的存在会导致内存资源存在浪费,导致合理的内存申请得不到满足,进而也会影响实时操作系统的实时性。因此,在对内存分配算法进行性能分析的时候,需要综合考虑这两方面的原因,只考虑其中一方面无法反映出内存分配算法的实际性能。
发明内容
为了解决现有技术存在的不足,本发明的目的是提供了一种基于多线程的POSIX标准的实时操作系统内存管理算法性能测试方法,考察内存管理算法的内存分配和释放的时间性能和碎片情况。本发明应用到开源实时操作系统Zephyr中,对不同的内存管理算法进行分析,以得到不同内存管理算法的性能指标。
本发明提出了一种基于多线程的POSIX标准的实时操作系统内存管理算法性能测试方法,包括以下步骤:
步骤一:在操作系统外部的自动数据集生成工具中生成内存分配数据的测试集,该测试集包括三类:均匀分布的数据集、高斯分布的数据集、对实际嵌入式操作系统运行中内存分配过程的采样得到的数据集;
所述自动数据集生成工具包括:数据随机生成器、数据均匀分布生成器;
步骤二:实现两个实时操作系统的多线程测试模型,分为双线程测试模型、多线程测试模型,并且移植到实现了POSIX标准的实时操作系统中;
步骤三:针对基于POSIX接口的实时操作系统的内存管理算法,在测试模型下运行生成的数据集,以便获取在两个测试模型中运行的日志数据,所述日志数据包括内存分配和释放的时间数据、内存分配时的内存余量、内存外碎片、内存内碎片等与内存量相关的数据;
步骤四:将运行日志数据输入到自动数据分析工具中进行数据处理,得到该内存管理算法的时间性能和碎片性能的具体数据的分析结果和图表展示,从而得出该内存管理算法适合的数据场景。
本发明提出的基于多线程的POSIX标准的实时操作系统内存管理算法性能测试方法中,所述步骤一具体包括以下步骤:
步骤A1:从通用的实时操作系统内存分配的操作中进行内存分配大小的统计,得出常见的内存分配范围;
步骤A2:计算步骤A1得到的内存分配范围的均值,和覆盖95%内存分配范围的方差值;
步骤A3:在操作系统外部生成测试需要的第一类数据集,所述第一类数据集是均匀分布的数据集,所述第一类数据集的信息包含申请的内存块数据大小、内存块申请和释放的顺序。所述申请内存块的数据大小是随机生成的,且每个数据出现的频率服从概率统计的均匀分布,数据范围由步骤A1确定。所述内存块申请、释放的顺序是随机生成的,概率服从均匀分布;
步骤A4:在操作系统外部生成测试需要的第二类数据集,所述第二类数据集服从高斯分布,所述第二类数据集的信息包含申请的内存块数据大小、内存块申请和释放的顺序。所述申请内存块的数据大小是随机生成的,且每个数据出现的频率服从概率统计的高斯分布,数学期望值是步骤A2得到的均值,方差值是步骤A2得到的方差值。所述内存块申请、释放的顺序是随机生成的,概率服从均匀分布;
步骤A5:在操作系统外部生成测试需要的第三类数据集,通过对实际运行的实时操作系统进行内存分配操作的采样,获得实际运行的数据集,即第三类数据集;所述第三类数据集包含内存分配的大小、内存分配和释放的顺序。
本发明提出的基于多线程的POSIX标准的实时操作系统内存管理算法性能测试方法中,所述步骤二具体包括以下步骤:
步骤B1:在POSIX标准的基础上实现双线程测试模型,所述双线程测试模型存在两个线程,一个线程为主线程,进行内存分配和释放操作;另一个线程为辅助线程,辅助主线程完成释放操作;
步骤B2:在POSIX标准的基础上实现多线程测试模型,所述多线程测试模型存在多个线程,各线程之间独立,要求每个线程都单独完成自己的申请和释放任务;
步骤B3:步骤B1和B2中的测试模型需要记录整个数据集完成分配和释放任务的时间数据,记录数据集中内存块申请失败总次数,记录每次分配和释放之后的内存余量、实际分配的内存块大小、已使用的内存量的数据;
步骤B4:将步骤B1中的双线程测试模型、步骤B2中的多线程测试模型直接移植到实现了POSIX标准的实时操作系统上。
本发明提出的基于多线程的POSIX标准的实时操作系统内存管理算法性能测试方法中,所述步骤B1中的双线程测试模型,在主线程遇到内存申请失败情况时,主线程会被阻塞,辅助线程会随机释放内存中占用的内存块,从而让主线程的申请能够成功。
本发明提出的基于多线程的POSIX标准的实时操作系统内存管理算法性能测试方法中,所述步骤B2中的多线程测试模型,每个线程在执行自己的申请任务时,如果遇到内存申请失败情况时会释放之前自己申请的内存块,从而让当前的申请能够成功。
本发明提出的基于多线程的POSIX标准的实时操作系统内存管理算法性能测试方法中,所述步骤三将步骤一中获得的三类数据集分别输入到双线程测试模型、多线程测试模型中运行,会分别得到三类数据集的运行日志数据,每类数据集在每个模型中的运行日志数据包含步骤B3所列举出的所有数据,一共六组数据。
本发明提出的基于多线程的POSIX标准的实时操作系统内存管理算法性能测试方法中,所述步骤四具体包括以下步骤:
步骤D1:将获得日志进行分类,分为两类数据:时间相关数据、内存余量相关数据;
步骤D2:将时间相关数据输入到时间性能分析工具中,进行数据筛选,排除无效数据、异常数据,得到过滤过的时间性能数据;
步骤D3:将内存余量相关数据输入到碎片性能分析工具中,排除无效数据、异常数据,并且将数据进行运算,得到内存外碎片的碎片性能数据、内存内碎片的碎片性能数据;
步骤D4:将数据转换为多种类型图表,可以分析出内存分配和释放的运行趋势,从而得出该内存管理算法适合的数据场景。对多个算法进行横向比较,可以得到不同内存管理算法的性能优劣。
本发明还提出了一种实现上述性能测试方法的系统,所述系统包括:自动数据集生成工具模块、多线程测试模型模块、外部内存管理算法模块、自动数据分析工具模块和图表展示模块。
其中,所述自动数据集生成工具模块用于步骤一中生成三类数据集;
所述多线程测试模块包含步骤二的两个测试模型,用于对操作系统的内存管理算法进行测试,以数据集作为输入,输出为步骤B3描述的运行时日志;
所述外部内存管理算法模块是操作系统自带的内存管理代码,测试模型是在内存管理代码的基础上进行搭建和实现;
所述自动数据分析工具模块用于步骤四中对运行时日志进行数据整理和运算;
所述图表展示模块用于步骤四中对自动数据分析工具输出的数据进行图表展示和结论得出。
本发明的有益效果包括:本发明提出了一种基于多线程的POSIX标准的实时操作系统内存管理算法性能测试方法。首先在操作系统外部由自动数据集生成工具生成内存分配数据的测试集,该测试集包括三类:均匀分布的数据集、高斯分布的数据集、对实际嵌入式操作系统运行中内存分配过程的采样得到的数据集;并提出了两个多线程测试模型,分为双线程测试模型、多线程测试模型;然后针对基于POSIX接口的实时操作系统的内存管理算法,在测试模型下运行生成的数据集,以便获取在两个测试模型中运行的日志数据,包括内存分配和释放的时间数据、内存分配时的内存余量、内存碎片等与内存量相关的数据;最后将运行日志数据输入到自动数据分析工具中进行数据处理,得到该内存管理算法的时间性能和碎片性能的具体数据的分析结果和图表展示,从而得出该内存管理算法适合的数据场景。本发明应用到开源实时操作系统Zephyr中,对不同的内存管理算法进行分析,以得到不同内存管理算法的性能指标。
附图说明
图1是本发明的基于多线程的POSIX标准的实时操作系统内存管理算法性能测试方法流程示意图。
图2是本发明的基于多线程的POSIX标准的实时操作系统内存管理算法性能测试的双线程测试模型的工作流程图。
图3是本发明的基于多线程的POSIX标准的实时操作系统内存管理算法性能测试的多线程测试模型的工作流程图。
图4是本发明实施例Buddy和TLSF运行时的内存碎片情况统计图。
图5是本发明实施例多线程模型的小数据集下Buddy算法和TLSF算法在程序申请失败时的外碎片情况图。
具体实施方式
结合以下具体实施例和附图,对发明作进一步的详细说明。实施本发明的过程、条件、实验方法等,除以下专门提及的内容之外,均为本领域的普遍知识和公知常识,本发明没有特别限制内容。
本发明提出了一种基于多线程的POSIX标准的实时操作系统内存管理算法性能测试方法。所述首先在操作系统外部由自动数据集生成工具生成内存分配数据的测试集;并提出了双线程测试模型和多线程测试模型;然后针对基于POSIX接口的实时操作系统的内存管理算法,在测试模型下运行生成的数据集,以便获取在两个测试模型中运行的日志数据;最后将运行日志数据输入到自动数据分析工具中进行数据处理,得到该内存管理算法的时间性能和碎片性能的具体数据的分析结果和图表展示,从而得出该内存管理算法适合的数据场景。在操作过程中,数据集的创建、模型的搭建、数据的处理这三部分是分开实现的,它们之间存在顺序关系。任何实现了POSIX标准的实时操作系统均能直接移植上述两种测试模型。本发明应用到开源实时操作系统Zephyr中,对不同的内存管理算法进行分析,以得到不同内存管理算法的性能指标。
本发明提出了一种基于多线程的POSIX标准的实时操作系统内存管理算法性能测试框架,包括以下步骤:
步骤一:在操作系统外部的自动数据集生成工具中生成内存分配数据的测试集,该测试集包括三类:均匀分布的数据集、高斯分布的数据集、对实际嵌入式操作系统运行中内存分配过程的采样得到的数据集;
所述自动数据集生成工具包括:数据随机生成器、数据均匀分布生成器;
步骤二:实现两个实时操作系统的多线程测试模型,分为双线程测试模型、多线程测试模型,并且移植到实现了POSIX标准的实时操作系统中;
步骤三:针对基于POSIX接口的实时操作系统的内存管理算法,在测试模型下运行生成的数据集,以便获取在两个测试模型中运行的日志数据,所述日志数据包括内存分配和释放的时间数据、内存分配时的内存余量、内存外碎片、内存内碎片等与内存量相关的数据;
步骤四:将运行日志数据输入到自动数据分析工具中进行数据处理,得到该内存管理算法的时间性能和碎片性能的具体数据的分析结果和图表展示,从而得出该内存管理算法适合的数据场景。
本发明提出的基于多线程的POSIX标准的实时操作系统内存管理算法性能测试方法中,所述步骤一具体包括以下步骤:
步骤A1:从通用的实时操作系统内存分配的操作中进行内存分配大小的统计,得出常见的内存分配范围;
步骤A2:计算步骤A1得到的内存分配范围的均值,和覆盖95%内存分配范围的方差值;
步骤A3:在操作系统外部生成测试需要的第一类数据集,所述第一类数据集是均匀分布的数据集,所述第一类数据集的信息包含申请的内存块数据大小、内存块申请和释放的顺序。所述申请内存块的数据大小是随机生成的,且每个数据出现的频率服从概率统计的均匀分布,数据范围由步骤A1确定。所述内存块申请、释放的顺序是随机生成的,概率服从均匀分布;
步骤A4:在操作系统外部生成测试需要的第二类数据集,所述第二类数据集服从高斯分布,所述第二类数据集的信息包含申请的内存块数据大小、内存块申请和释放的顺序。所述申请内存块的数据大小是随机生成的,且每个数据出现的频率服从概率统计的高斯分布,数学期望值是步骤A2得到的均值,方差值是步骤A2得到的方差值。所述内存块申请、释放的顺序是随机生成的,概率服从均匀分布;
步骤A5:在操作系统外部生成测试需要的第三类数据集,通过对实际运行的实时操作系统进行内存分配操作的采样,获得实际运行的数据集,即第三类数据集;所述第三类数据集包含内存分配的大小、内存分配和释放的顺序。
本发明提出的基于多线程的POSIX标准的实时操作系统内存管理算法性能测试方法中,所述步骤二具体包括以下步骤:
步骤B1:在POSIX标准的基础上实现双线程测试模型,所述双线程测试模型存在两个线程,一个线程为主线程,进行内存分配和释放操作;另一个线程为辅助线程,辅助主线程完成释放操作;
步骤B2:在POSIX标准的基础上实现多线程测试模型,所述多线程测试模型存在多个线程,各线程之间独立,要求每个线程都单独完成自己的申请和释放任务;
步骤B3:步骤B1和B2中的测试模型需要记录整个数据集完成分配和释放任务的时间数据,记录数据集中内存块申请失败总次数,记录每次分配和释放之后的内存余量、实际分配的内存块大小、已使用的内存量的数据;
步骤B4:将步骤B1中的双线程测试模型、步骤B2中的多线程测试模型直接移植到实现了POSIX标准的实时操作系统上。
本发明提出的基于多线程的POSIX标准的实时操作系统内存管理算法性能测试方法中,所述步骤B1中的双线程测试模型,在主线程遇到内存申请失败情况时,主线程会被阻塞,辅助线程会随机释放内存中占用的内存块,从而让主线程的申请能够成功。
本发明提出的基于多线程的POSIX标准的实时操作系统内存管理算法性能测试方法中,所述步骤B2中的多线程测试模型,每个线程在执行自己的申请任务时,如果遇到内存申请失败情况时会释放之前自己申请的内存块,从而让当前的申请能够成功。
本发明提出的基于多线程的POSIX标准的实时操作系统内存管理算法性能测试方法中,所述步骤三将步骤一中获得的三类数据集分别输入到双线程测试模型、多线程测试模型中运行,会分别得到三类数据集的运行日志数据,每类数据集在每个模型中的运行日志数据包含步骤B3所列举出的所有数据,一共六组数据。
本发明提出的基于多线程的POSIX标准的实时操作系统内存管理算法性能测试方法中,所述步骤四具体包括以下步骤:
步骤D1:将获得日志进行分类,分为两类数据:时间相关数据、内存余量相关数据;
步骤D2:将时间相关数据输入到时间性能分析工具中,进行数据筛选,排除无效数据、异常数据,得到过滤过的时间性能数据;
步骤D3:将内存余量相关数据输入到碎片性能分析工具中,排除无效数据、异常数据,并且将数据进行运算,得到内存外碎片的碎片性能数据、内存内碎片的碎片性能数据;
步骤D4:将数据转换为多种类型图表,可以分析出内存分配和释放的运行趋势,从而得出该内存管理算法适合的数据场景。对多个算法进行横向比较,可以得到不同内存管理算法的性能优劣。
本发明还提出了一种实现上述性能测试方法的系统,所述系统包括:自动数据集生成工具模块、多线程测试模型模块、外部内存管理算法模块、自动数据分析工具模块和图表展示模块。
其中,所述自动数据集生成工具模块用于步骤一中生成三类数据集;
所述多线程测试模块包含步骤二的两个测试模型,用于对操作系统的内存管理算法进行测试,以数据集作为输入,输出为步骤B3描述的运行时日志;
所述外部内存管理算法模块是操作系统自带的内存管理代码,测试模型是在内存管理代码的基础上进行搭建和实现;
所述自动数据分析工具模块用于步骤四中对运行时日志进行数据整理和运算;
所述图表展示模块用于步骤四中对自动数据分析工具输出的数据进行图表展示和结论得出。
实施例
如图1所示,是本发明的基于多线程的POSIX标准的实时操作系统内存管理算法性能测试框架架构示意图,本发明包括以下步骤:
步骤一:在外部的自动数据集生成工具中生成内存分配数据的测试集,该测试集包括三类:均匀分布的数据集、高斯分布的数据集、对实际嵌入式操作系统运行中内存分配过程的采样得到的数据集;
步骤二:图2表示的双线程测试模型的工作流程图和图3表示的多线程测试模型的工作流程图,对这两个多线程测试模型进行实现,并且移植到实现了POSIX标准的实时操作系统中;
步骤三:针对基于POSIX接口的实时操作系统的内存管理算法,在测试模型下运行生成的数据集,以便获取在两个测试模型中运行的日志数据,包括内存分配和释放的时间数据、内存分配时的内存余量、内存外碎片、内存内碎片等与内存量相关的数据;
步骤四:将运行日志数据输入到自动数据分析工具中进行数据处理,得到该内存管理算法的时间性能和碎片性能的具体数据的分析结果和图表展示,从而得出该内存管理算法适合的数据场景。
本具体实例以基于实时操作系统Zephyr的Buddy内存管理算法、TLSF内存管理算法为例,首先在操作系统外部由自动数据集生成工具生成内存分配数据的测试集,该测试集包括三类:均匀分布的数据集、高斯分布的数据集、对实际嵌入式操作系统运行中内存分配过程的采样得到的数据集;并提出了两个多线程测试模型,分为双线程测试模型、多线程测试模型;然后针对基于POSIX接口的实时操作系统的内存管理算法,在测试模型下运行生成的数据集,以便获取在两个测试模型中运行的日志数据,包括内存分配和释放的时间数据、内存分配时的内存余量、内存碎片等与内存量相关的数据;最后将运行日志数据输入到自动数据分析工具中进行数据处理,得到该内存管理算法的时间性能和碎片性能的具体数据的分析结果和图表展示,从而形象地看出Buddy算法的时间消耗、碎片表现,TLSF算法的时间消耗、碎片表现。通过对Buddy和TLSF两个算法的横向比较,可以得出两个算法的性能优劣。
图2是双线程测试模型的工作流程图,它的工作流程如下:初始时在系统中申请两个线程,一个线程作为主线程,负责申请和释放内存块;另一个线程作为辅助线程,在主线程申请内存块失败时,释放之前申请的内存块,模拟在多线程场景中其他线程释放内存块从而有新的内存空间可供使用。在场景1中,主线程先去循环申请内存块,且不涉及释放,直到不能满足下一次内存块的申请,然后进入场景2。在场景2中,本发明随机选择是申请还是释放操作。如果是申请,那么向系统提出内存块申请;如果是释放,那么就去随机释放之前一个申请的内存块。此时会存在两种情况:申请失败和申请成功。如果申请成功了,就继续执行循环申请和释放操作;如果申请并且失败了,那么主线程被阻塞,系统会进行上下文切换,而辅助线程被调度执行,它会去随机释放之前主线程占有的内存块资源,由于辅助线程的优先级比主线程低,内存管理算法会被动触发主线程继续执行挂起前的申请内存块的操作,如果成功了就继续执行循环;如果失败就继续触发辅助线程去释放之前申请的内存块,直到主线程本次申请成功。接着,继续选择申请或者释放内存块操作。如果释放内存块的次数达到指定的次数,程序结束。
表1表示的是双线程模型在小内存块数据集下的时间消耗随分配次数变化的情况。通过分析发现,TLSF算法的时间消耗比Buddy要小,主要原因是TLSF算法对内存利用效率较高,在相同的内存大小下,能够分配更多的内存块,减少分配失败的时间,且对内存块的切分和合并不需要循环操作,所以时间性能表现较好。通过该图可以发现,双线程模型能够发现两个内存管理的分配和释放的性能优劣。
表1双线程模型在小内存块数据集下的时间消耗随分配次数变化的情况
分配次数 | TLSF | Buddy_64 | TLSF_B | Buddy_64_ |
100 | 61954.06 | 84357.1875 | 61848.44 | 89690.69 |
200 | 117455.6 | 157128.8824 | 117574.8 | 166158 |
400 | 226261 | 391779.6875 | 225017.8 | 339617.1 |
500 | 315251.9 | 564813.125 | 281948.9 | 426616.9 |
600 | 416592.4 | 715367.8125 | 333694 | 514058.6 |
800 | 720647.8 | 1116058.4 | 444680.3 | 684641 |
1000 | 984679.3 | 1444172.2 | 552102.3 | 852875.5 |
表1中,TLSF和Buddy下的数据为时间,单位为ns。
图3多线程测试模型的工作流程图,它的工作流程如下:初始时在系统中申请n个线程,每个线程都有一个分配任务,线程目标是完成所有的申请。n个线程交替去申请内存块,如果一个线程申请到了一个内存块,就主动上下文切换到下一个线程去执行申请;如果一个线程申请失败,它转而去释放自己最近申请到的内存块,然后再进行上下文切换给下一个线程。如果线程完成分配任务,就将所有持有的内存块全部释放。直到n个线程全部完成任务,程序结束。
图4是Buddy和TLSF运行时的内存碎片情况统计。位于x轴上方的是Buddy算法的表现情况,浅色代表当时请求的内存块大小,深色代表Buddy算法产生的内碎片,两者之和,就是Buddy算法实际分配的内存块的大小。位于x轴下方的是TLSF算法的表现情况,深色代表当时请求的内存块大小,浅色代表TLSF算法产生的内碎片。通过上下对比观察发现,Buddy的内碎片较大。
图5是多线程模型的小数据集下Buddy算法和TLSF算法在程序申请失败时的外碎片情况。通过观察发现,在多线程的模型下,小数据集中TLSF比Buddy有更少的申请失败情况,且产生的外碎片较少。由于Buddy对于空闲内存块的合并需要严格按照分裂时的“伙伴们”进行合并,也即只有“伙伴们”均空闲才能合并,导致内存中存在较多的内存块,虽然内存地址相邻,但是由于是非“伙伴”关系,所以不能合并。所以Buddy的外碎片会比TLSF要多。
本发明的保护内容不局限于以上实施例。在不背离发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中,并且以所附的权利要求书为保护范围。
Claims (12)
1.一种基于多线程的POSIX标准的实时操作系统内存管理算法性能测试方法,其特征在于,包括以下步骤:
步骤一:在操作系统外部的自动数据集生成工具中生成内存分配数据的测试集;
步骤二:实现实时操作系统的多线程测试模型,移植到实现了POSIX标准的实时操作系统中;
步骤三:针对基于POSIX接口的实时操作系统的内存管理算法,在测试模型下运行生成的数据集,以便获取在两个测试模型中运行的日志数据;
步骤四:将运行日志数据输入到自动数据分析工具中进行数据处理,得到该内存管理算法的时间性能和碎片性能的具体数据的分析结果和图表展示,得出该内存管理算法适合的数据场景。
2.如权利要求1所述的方法,其特征在于,步骤一中,所述自动数据集生成工具包括:数据随机生成器、数据均匀分布生成器;所述测试集包括:均匀分布的数据集、高斯分布的数据集、对实际嵌入式操作系统运行中内存分配过程的采样得到的数据集。
3.如权利要求1所述的方法,其特征在于,所述步骤一具体包括以下步骤:
步骤A1:从通用的实时操作系统内存分配的操作中进行内存分配大小的统计,得出常见的内存分配范围;
步骤A2:计算步骤A1得到的内存分配范围的均值,和覆盖95%内存分配范围的方差值;
步骤A3:在操作系统外部生成测试需要的第一类数据集,所述第一类数据集是均匀分布的数据集,所述第一类数据集的信息包含申请的内存块数据大小、内存块申请和释放的顺序;所述申请内存块的数据大小是随机生成的,且每个数据出现的频率服从概率统计的均匀分布,数据范围由步骤A1确定;所述内存块申请和释放的顺序是随机生成的,概率服从均匀分布;
步骤A4:在操作系统外部生成测试需要的第二类数据集,所述第二类数据集服从高斯分布,所述第二类数据集的信息包含申请的内存块数据大小、内存块申请和释放的顺序;所述申请内存块的数据大小是随机生成的,且每个数据出现的频率服从概率统计的高斯分布,数学期望值是步骤A2得到的均值,方差值是步骤A2得到的方差值;所述内存块申请和释放的顺序是随机生成的,概率服从均匀分布;
步骤A5:在操作系统外部生成测试需要的第三类数据集,通过对实际运行的实时操作系统进行内存分配操作的采样,获得实际运行的数据集,即第三类数据集;所述第三类数据集包含内存分配的大小、内存分配和释放的顺序。
4.如权利要求1所述的方法,其特征在于,步骤二中,所述测试模型包括双线程测试模型、多线程测试模型。
5.如权利要求1所述的方法,其特征在于,所述步骤二具体包括以下步骤:
步骤B1:在POSIX标准的基础上实现双线程测试模型,所述双线程测试模型存在两个线程,一个线程为主线程,进行内存分配和释放操作;另一个线程为辅助线程,辅助主线程完成释放操作;
步骤B2:在POSIX标准的基础上实现多线程测试模型,所述多线程测试模型存在多个线程,各线程之间独立,要求每个线程都单独完成自己的申请和释放任务;
步骤B3:步骤B1和B2中的测试模型需要记录整个数据集完成分配和释放任务的时间数据,记录数据集中内存块申请失败总次数,记录每次分配和释放之后的内存余量、实际分配的内存块大小、已使用的内存量的数据;
步骤B4:将步骤B1中的双线程测试模型、步骤B2中的多线程测试模型直接移植到实现了POSIX标准的实时操作系统上。
6.如权利要求5所述的方法,其特征在于,所述步骤B1中的双线程测试模型,在主线程遇到内存申请失败情况时,主线程会被阻塞,辅助线程会随机释放内存中占用的内存块,从而让主线程的申请成功。
7.如权利要求5所述的方法,其特征在于,所述步骤B2中的多线程测试模型,每个线程在执行自己的申请任务时,如果遇到内存申请失败情况时会释放之前自己申请的内存块,从而让当前的申请成功。
8.如权利要求1所述的方法,其特征在于,步骤三中,所述日志数据包括与内存量相关的内存分配和释放的时间数据、内存分配时的内存余量、内存外碎片、内存内碎片数据。
9.如权利要求1所述的方法,其特征在于,所述步骤三将步骤一中获得的三类数据集分别输入到双线程测试模型、多线程测试模型中运行,分别得到三类数据集的运行日志数据,每类数据集在每个模型中的运行日志数据包含步骤B3所列举出的所有数据,一共六组数据。
10.如权利要求1所述的方法,其特征在于,所述步骤四具体包括以下步骤:
步骤D1:将获得日志进行分类,分为两类数据:时间相关数据、内存余量相关数据;
步骤D2:将时间相关数据输入到时间性能分析工具中,进行数据筛选,排除无效数据、异常数据,得到过滤过的时间性能数据;
步骤D3:将内存余量相关数据输入到碎片性能分析工具中,排除无效数据、异常数据,并且将数据进行运算,得到内存外碎片的碎片性能数据、内存内碎片的碎片性能数据;
步骤D4:将数据转换为多种类型图表,分析出内存分配和释放的运行趋势,从而得出该内存管理算法适合的数据场景;对多个算法进行横向比较,得到不同内存管理算法的性能优劣。
11.一种实现如权利要求1-10之任一项所述性能测试方法的系统,其特征在于,所述系统包括:自动数据集生成工具模块、多线程测试模型模块、外部内存管理算法模块、自动数据分析工具模块和图表展示模块。
12.如权利要求11所述的系统,其特征在于,所述自动数据集生成工具模块用于步骤一中生成三类数据集;
所述多线程测试模块包含步骤二的两个测试模型,用于对操作系统的内存管理算法进行测试,以数据集作为输入,输出为步骤B3描述的运行时日志;
所述外部内存管理算法模块是操作系统自带的内存管理代码,测试模型是在内存管理代码的基础上进行搭建和实现;
所述自动数据分析工具模块用于步骤四中对运行时日志进行数据整理和运算;
所述图表展示模块用于步骤四中对自动数据分析工具输出的数据进行图表展示和结论得出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110671038.1A CN113434374B (zh) | 2021-06-17 | 2021-06-17 | 一种实时操作系统内存管理算法性能测试方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110671038.1A CN113434374B (zh) | 2021-06-17 | 2021-06-17 | 一种实时操作系统内存管理算法性能测试方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113434374A true CN113434374A (zh) | 2021-09-24 |
CN113434374B CN113434374B (zh) | 2022-10-25 |
Family
ID=77756210
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110671038.1A Active CN113434374B (zh) | 2021-06-17 | 2021-06-17 | 一种实时操作系统内存管理算法性能测试方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113434374B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102663164A (zh) * | 2012-03-16 | 2012-09-12 | 北京邮电大学 | 基于多目标测试用例生成的通行控制算法测试装置与方法 |
CN103176876A (zh) * | 2013-03-19 | 2013-06-26 | 卡斯柯信号有限公司 | 一种高效安全的计算机在线自检方法及自检装置 |
US20190052637A1 (en) * | 2017-08-10 | 2019-02-14 | Patroness, LLC | Secure systems architecture for integrated motorized mobile systems |
CN110188022A (zh) * | 2019-05-09 | 2019-08-30 | 国家计算机网络与信息安全管理中心 | 一种基于Java的集群性能测试方法及系统 |
CN110362492A (zh) * | 2019-07-18 | 2019-10-22 | 腾讯科技(深圳)有限公司 | 人工智能算法测试方法、装置、服务器、终端及存储介质 |
CN111258913A (zh) * | 2020-02-19 | 2020-06-09 | 深圳壹账通智能科技有限公司 | 算法自动测试方法、装置、计算机系统及可读存储介质 |
CN111782544A (zh) * | 2020-07-22 | 2020-10-16 | 中国人民解放军国防科技大学 | 一种基于多种群遗传算法的软件无线电符合性测试方法 |
-
2021
- 2021-06-17 CN CN202110671038.1A patent/CN113434374B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102663164A (zh) * | 2012-03-16 | 2012-09-12 | 北京邮电大学 | 基于多目标测试用例生成的通行控制算法测试装置与方法 |
CN103176876A (zh) * | 2013-03-19 | 2013-06-26 | 卡斯柯信号有限公司 | 一种高效安全的计算机在线自检方法及自检装置 |
US20190052637A1 (en) * | 2017-08-10 | 2019-02-14 | Patroness, LLC | Secure systems architecture for integrated motorized mobile systems |
CN110188022A (zh) * | 2019-05-09 | 2019-08-30 | 国家计算机网络与信息安全管理中心 | 一种基于Java的集群性能测试方法及系统 |
CN110362492A (zh) * | 2019-07-18 | 2019-10-22 | 腾讯科技(深圳)有限公司 | 人工智能算法测试方法、装置、服务器、终端及存储介质 |
CN111258913A (zh) * | 2020-02-19 | 2020-06-09 | 深圳壹账通智能科技有限公司 | 算法自动测试方法、装置、计算机系统及可读存储介质 |
CN111782544A (zh) * | 2020-07-22 | 2020-10-16 | 中国人民解放军国防科技大学 | 一种基于多种群遗传算法的软件无线电符合性测试方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113434374B (zh) | 2022-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9619430B2 (en) | Active non-volatile memory post-processing | |
Garraghan et al. | An analysis of failure-related energy waste in a large-scale cloud environment | |
Fang et al. | Interruptible tasks: Treating memory pressure as interrupts for highly scalable data-parallel programs | |
CN103218360B (zh) | 工业实时数据库采用内存池技术实现动态内存管理的方法 | |
CN109635568B (zh) | 一种基于静态分析和模糊测试相结合的并发漏洞检测方法 | |
US7185322B2 (en) | Method and apparatus for parallel action processing | |
US9251149B2 (en) | Data set size tracking and management | |
EP3396542B1 (en) | Database operating method and device | |
CN111176637B (zh) | 基于缓存抢占延迟约束下aadl模型的可调度性分析方法 | |
CN114610294A (zh) | 仿真实验效能指标并发计算控制方法、装置和计算机设备 | |
Gu et al. | Towards efficient large-scale interprocedural program static analysis on distributed data-parallel computation | |
CN108139929B (zh) | 用于调度多个任务的任务调度装置和方法 | |
CN114564281A (zh) | 容器调度方法、装置、设备及存储介质 | |
CN113434374B (zh) | 一种实时操作系统内存管理算法性能测试方法及系统 | |
WO2024066635A1 (zh) | 一种数据库性能智能优化的方法及系统 | |
Chunduri et al. | Distributed three-way formal concept analysis for large formal contexts | |
US9081605B2 (en) | Conflicting sub-process identification method, apparatus and computer program | |
US20190197652A1 (en) | On-the-fly scheduling of execution of dynamic hardware behaviors | |
CN112291346B (zh) | 面向异构节点集群的拟态应用部署管理系统、方法及介质 | |
CN115080670A (zh) | 一种基于gpu加速的确定性事务并发控制方法 | |
CN114168594A (zh) | 一种水平分区表的二级索引创建方法、装置、设备及存储介质 | |
CN111679924A (zh) | 构件化软件系统可靠性仿真方法、装置及电子设备 | |
Caton et al. | Dynamic model evaluation to accelerate distributed machine learning | |
CN112380108B (zh) | 一种面向分区空间隔离的全自动测试方法 | |
Taht et al. | Dynajet: Dynamic java efficiency tuning |
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 |