图4
图4

图4不同读写比下的随机访谈测试结果
图5
图5

图5不同数据对象大小下的随机访谈测试结果
2.2 B树
B树平衡多路径搜索树用于快速查找数据。树中的每个节点可以根据实际情况包含大量的关键字信息和分支,从而减少了树的深度,可以快速访问要搜索的数据。在此测试程序中, B树结构由Linux系统分配和管理,树结构中每个关键字对应的数据空间由FG_MM分配和管理。在测试中,内存数据总量为10 GB,访问的数据总量为1 GB,读写比率为8:2.
在不同的数据对象大小下,FG_MM的响应时间和系统内存交换机制对测试程序B树的显示如图所示。从图中可以看出,当数据对象大小固定时,FG_MM和系统内存交换的响应速度与系统相比,与系统内存交换相比,FG_MM的响应速度提高了42%〜50%数据对象大小随机的机制。
图6
图6

图6不同数据对象大小下的B树测试结果
2.3快速排序
“快速排序”测试程序从10 GB数据集中随机选择1 GB数据,并根据某些规则对其进行排序。此应用程序的读写操作相对频繁。因为排序的数据通常是相同类型的数据,所以数据对象的大小是固定大小。在不同的固定数据对象大小下,FG_MM的系统响应时间和系统内存交换机制如下所示。可以看出,由于FG_MM采用具有数据对象粒度的内存管理方法,因此内存数据的交换和交换效率更高,有效减少了不必要的交换和交换操作,从而提高了响应速度。 27%〜57%。
图7
图7

图7不同数据对象大小下的快速排序测试结果
2.4布隆过滤器
Bloom过滤器测试用例通过8个哈希表实现了关键字的插入和索引编制。当需要插入1个关键字时,该关键字最多可以映射到8个不同的数据对象,然后才需要读取。取这8个数据对象并修改对应的映射位。当需要将修改后的数据对象换出时,需要将其写回到SSD。因此,此测试用例属于具有更多读写操作的应用程序。由于Bloom Bloom测试用例本身的特性,该测试只能选择固定的数据对象大小。可以看出,与系统内存交换机制相比,FG_MM系统的响应速度提高了16%〜31%。

图8
图8

图8不同数据对象大小下的Bloom过滤器测试结果
2.5个元数据开销
FG_MM方案的额外元数据内存开销主要由两部分组成。
1)FG_MM为每个细粒度的物理页分配24 B结构进行管理。在极端情况下,当用户请求的数据对象的大小小于最小页面粒度Cmin时,将根据最小页面粒度的大小来划分所有物理页面All。此时,管理物理内存所需的元数据开销Pmeta也将达到最大值(假设FG_MM管理的物理内存大小为M):
$ {P _ {{\ rm {meta}}}} = \ frac {M} {{{C _ {\ min}}}} \时间24 $
2)FG_MM在用户虚拟地址和SSD逻辑地址之间建立基于数据对象的映射表OT。该表中每个表条目的大小为8 B,这节省了数据对象逻辑地址和其他信息的大小,偏移量和SSD。表Ometa的总大小与用户请求的数据对象Nobj的数量有关。随着Nobj的增加,Ometa的大小线性增加。
$ {O _ {{\ rm {meta}}}} = {N _ {{\ rm {obj}}}} \倍8 $
对于操作系统的原始内存管理过程,当用户通过系统库函数malloc()分配内存空间时,系统还需要使用一定大小的元数据来记录数据大小和其他信息。将物理页换出以进行交换时在分区中,交换分区中物理页的索引信息记录在页表项PTE的物理地址字段中,而无需创建其他映射表。因此,FG_MM的元数据存储开销主要来自OT。但是,由于FG_MM使用了细粒度的内存管理方案,因此减少了不必要的内存数据交换。以上实验结果表明,该方案可以有效减少程序运行时间,元数据增加对系统性能的不利影响小于该方案对系统的好处。
3结束语
在传统的操作系统(例如Linux)中,以页为单位管理内存系统。当物理内存使用量超过某个阈值时,为了确保有足够的内存供系统使用,系统将替换部分内存数据。输出到交换分区,当再次访问交换出的数据时,需要将数据从交换分区交换到内存中以进行系统访问。一个页面通常包含具有不同程度的冷热的多个用户数据。当要换出的页面包含热数据时,该页面可能会在短时间内再次换入内存,从而导致不必要的内存数据换入和换出操作,从而影响系统的响应速度。
对于数据密集型应用程序,作者提出并实现了细粒度的内存管理方案FG_MM。此方案不再以4 KB的粒度管理内存空间,而是以数据对象的粒度分配和管理内存。当内存用完并需要与基础存储设备进行数据交换时,也将以数据对象的粒度来管理内存数据的换入和换出,以便系统可以将多个冷数据对象换出至基础存储设备减少不必要的内存数据交换和交换操作,并提高系统的响应速度。实验结果表明,在不同的应用场景下,与系统内存交换机制相比,FG_MM的响应速度平均提高了37.5%。
FG_MM内存管理粒度为固定大小(256 B,512 B,1 KB,...,4 KB),这将在一定程度上浪费物理内存。例如,当用户请求128 B的内存空间时,系统还将分配256 B的内存空间以生成内存碎片。如何合理地管理和使用生成的碎片内存将是该程序未来优化的重点。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-342877-2.html
可以了吧我们都来