当前位置:文档之家› 实时操作系统内存分配性能检测

实时操作系统内存分配性能检测


lM㈣uBl;
结束,否则继续测试。

c|m・-dd:
//内存地址
记录每次申请和释放内存所花费的时间。在每次内存释 放后检查内存使用表,如果表中投有需要释放的内存,则测试
应用
将该算法应用于vxworks的内存分配算法性能检测中。
4.1应用环境 测试的vxworks版本为5.5.1,系统内存大小为32MB,除去 系统必要的内存开销,剩余可供动态分配的内存有20MB左 右。每次内存申请的大小服从正态分布,均值为5 KB,标准
Produced by the tllat
vxW0rkr
At
n蚴al mndom n11lnbeL
with
di任b删It咖di廿ons,“detected the ch蚰g曙of tbe mS. meⅡ岬且lloc撕∞w鹅峙sted by using出e㈣ory debd8 which帅g laBt,it5 pe商)珊ance w聃aIlaly捌baBed衄tlle妇6“g data.The虻dat8 8bawed
请中,它们都不可能被使用。内存碎片的存在不仅使得系统 的可用内存空间减少,而且会增加内存管理单元的计算负担,
收稿日期:2007—05—29;修回日期:2007一08一01。
基垒项目:上海市科委科技攻关基金资助项目(06Dzl5004)。
作者简介:阎梦天(1979一),女,天律人,助理工程师,硕士,主要研究方向:嵌人式软件测试;丁志剐(1960一),男,上海^.副研究员.主 要研究方向:嵌入式软件、软件测试;王挺(1981一),男,上海人,助理工程师,硕士,主要研究方向:嵌^式软件测试;宗字伟(1960一),男, 江卷入,高级工程师,硕士.主要研究方向:嵌人式系统、软件工程。
第27卷第11期 2007年11月
文章编号:100l一9081(2007)11—2838一03
C咖puter
计算机应用 Applic鲥on8
V01.27 No.11 N0v.2007
实时操作系统内存分配性能检测
阎梦天“2,丁志刚1”。王挺“2,宗宇伟1 (1.上海计算机软件技术开发中心,上海201112;2.上海市计算机软件评测重点实验室,上海201112) (ymt@鹧c.stn.sh.cn)
内存管理的效率,并在一定程度上影响系统的稳定性。

内存分配算法
在RTos中,对于内存的使用应该遵循一个原则,即尽量
使用静态的内存分配,如变量、数组的事先声明。因为使用静
态内存分配能够减少对内存的操作,降低内存碎片,提高系统
运行速度。所谓内存碎片是指内存中存在一些不连续的空闲
内存块。由于这些空闲内存块太小,在随后的每一次内存申
Ab吼ran:11Ⅱ8舡dde discu88ed the metIlod of te8d“g tllc
MeIlg一血n1一,DING Zhi-gan91一,WANG
debris
by血b五Ilg the I嘶tllod
0f pmh且biKty and B诅t遗dcB.under the 0f
memory日110catj嘲.The pe怕瑚蛐ce
int出长
im
na譬
∥内存太小
//是否释放 //申请时间 //释放时间
于具有良好实时性的肿s来说,这两种情况下的内存申请
Ⅱ删m』眦;
n佣l f-tiⅡ-e;
3实现
3.1实现条件 算法实现的条件包括以下三点: 1)系统中可供动态分配的内存是一个相对固定的值; 2)系统不使用MMu; 3)除了必须的和基本任务以外没有其他任务在系统中 运行。 3.2设计实现 我们设计这样一个模型,在该模型中,内存申请的大小是 一系列符合正态分布的随机数,每块内存被释放的概率相等。
最坏适应法。目前太部分啪s采用最先适应法。最先适应
法要求内存记录表按起始地址递增的次序排列。一旦找到大 于或者等于所要求内存长度的内存块,就结束搜寻。然后从 所找到的内存块中划分出所要求大小的内存空间分配给用 户,并把余下的部分进行合并(如果相邻内存块是空闲的), 台并后的内存块留在内存记录表中,并修改相应表项…。 最先适应法具有搜索速度快,利于内存碎片合并的特点。 另外,最先适应法尽可能利用低地址空间,从而保证高地址空 间有较太的空闲区来放置内存要求较多的进程或作业。 vxW0rk日是美国Windm耽r公司于1983年设计开发的一 种嵌人式实时操作系统,是嵌人式开发环境的关键组成部分, 并且是一个具有可伸缩、可裁减和高可靠性,同时适用于所有 流行目标cPu平台的实时操作系统。vxwork6基于嵌入式系 统对实时性的要求,采用了最先适应法进行动态内存分配。在 内存释放时只采用上下空闲区融合的方法,即把相邻的空闲内 存块融合成一个空闲块。vxW0rks没有清除碎片的功能”’”。
程序开始
然具有良好的实时响应速度。在系统存在大量内存碎片的情 况下.R10s的内存分配时间是否仍然维持一个相对稳定的
数值是衡量R哪内存分配算法性能的一个重要指标。
2.1测试场量
显然在理想的环境下获取的R咖内存分配时间是证明
内存分配算法可以满足实时性的必要条件,而非充分条件。 所以对内存分配算法性能的测试应该建立在一定的场景中, 使得到的测试数据更具有参考价值。测试场景的选取与所测 试的性能有关。 为获得更合理的数据,对内存分配算法性能的检测应该 建立在大量内存碎片存在的情况下。大多数RTos选择最先 适应法作为自己的内存分配算法是看中它的搜索速度快和利 于内存碎片台并的特点,说明RTOs希望自己的内存分配耗 时少,效率高,不要使内存变得杂乱无章。如果在系统运行当 中,内存中存在大量的碎片,必然会对内存分配造成障碍。 2.2算法思想
假设随机变量f服从正态分布』v(肛,盯2),其中弘是服从正态
万 方数据
2840
计算机应用
2007年
差为l。这样根据三叮原则,每次获得的内存大小在2KB到

大值达到12.156 I‘¥。在场景3中内存申请时间主要集中在 0.86岬附近的区域,平均值较之场景2的有所增加,而且申 请时问大于26坤的频数明显增多。说明内存分配过程中遇 到了状况。 图2是整个测试过程的内存申请耗时的频数直方图。从 图上可以看到有两个凸现的直方形,一个跨度在0.45到 O.65,另一个跨度在O.65到0.85。这验证了操作系统的内存 分配算法在前后两个场景中的表现有所不同。另一方面两个 直方形紧密相连,说明操作系统在两个场景中的内存申请耗 时的总体水平相差无几。 4.3结果分析 通过测试数据的统计分析.可以得到如下结论: 1)测试场景的设置确实对VxWod∞的内存分配产生了 影响; 2)vxwmk8在系统启动或复位时进行内存分配时,内存 分配算法的性能稳定,每次内存申请时间绝大部分落在均值 附近,且幅度很小;
摘要:主要提出了一种检测实时操作系统内存分配性能的方法,利用概率统计的方法随机产生 内存碎片,检测实时操作系统在不同条件下内存分配性能的变化,并采用符合正态分布的随机数产生
内存碎片,对嵌入式操作系统Vxworks的内存分配性能进行检测,最后结合实际数据分析了vxworks
的内存分配性能符合实时操作系统的要求,同时验证了该检测方法的可行性和可信性。 关键词:实时操作系统;内存管理;内存分配;嵌入式测试 中图分类号:71日16.2 文献标识码:A
存碎片的功能,因为RT鹏找不到一个合适的时阔把正在运
行的程序暂停下来清理内存。但是,应用程序对内存的动态 申请是不可避免的。因此,内存分配算法的性能直接影响 R10s的实时性与稳定性。 通常的内存分配算法有三种:最先适应法、最佳适应法和
syst锄,RTos)来说,内存管理必须
是高效的,开销必须是可预见的。实时操作系统的内核负责 为程序分配内存、动态地分配内存和回收内存。为程序分配 内存是指当嵌人式系统从主机下载程序或从外存获得程序代 码时,操作系统内核必须为程序代码和数据分配内存。这种 分配规模比较大,在系统运行时较步发生,一般只有在系统启 动和复位的时候发生。第二种内存管理要求在应用程序运行 时,动态地分配和回收内存空间。一般的实时应用总是尽量 避免动态分配内存和释放内存,因为这将增加系统的不确定 因素,降低系统的稳定性。内存分配算法性能的优劣决定了
Key啪rds:Real—Ti眦Oper蚵ng system(RTOs);meⅡ10ry瑚n88唧e咄眦r“0ry且1loc“叩;embedded懈dTIg
在嵌入式系统中,内存管理是由操作系统完成的。内存 管理的工作主要是跟踪内存区域的使用情况,对于宴时操作 系统(&晶l-Time
OpembIlg
降低系统的实时性。ms为确保实时性一般都没有清除内
TestiIlg
me memБайду номын сангаасry aⅡoca廿叩performance
YAN
of real-time operating system
Tin91一,ZONG Yu.weil
(1.5怠础gki胁却榭眦蛐矿c0唧以盯s毋眦n?M,lo蛔y,鼎∞曲面201112,吼iM; 2.‰r培矗缸缸y肠占0删∥岛唧眦r№厅“帆西耐啪li增帆d脚f%‰7w^d 201112,矾£w)
R’IDS.A11d h al丑o
pedwm卸ce 0f Hrt)s,memory aU0cati帆.h produced memo珂
tk
VxWork8哪8 c锄¥ist咖t
the嘲uj陀Ⅱ帕n协of
vaM砒ed
tlle
fe商bility舯d credibil畸0f
tllis
te8dr.g metllod.
m珊mf
于是内存中就存在碎片了。在内存申请和释放交替进行的过
程中’每次的内存申请都要面对如何处理这些碎片的问题。 在系统运行过程中,实际的应用程序对内存的动态申请 和释放是一个不确定的行为,不确定的因素包括申请内存大 小和内存释放的顺序。为了尽量模拟真实的内存申请和释放 行为,每次申请的内存数量采用符合某种分布的随机数,而每 块内存被释放的概率相等。 在测试场景中,记录每次内存申请所花费的时问。当系 统中有足够的内存,且投有因释放的内存而产生碎片时,每次 内存申请的时间应该接近于一个平均值;随着内存碎片的产 生和增多,内存申请的时间值偏离平均值的程度会增加。对 耗时的均值应该相差无几。
相关主题