实现数据零拷贝的方法、装置和计算机设备和存储介质制造方法及图纸

技术编号:36258621 阅读:25 留言:0更新日期:2023-01-07 09:55
本申请涉及一种实现数据零拷贝的方法、装置、计算机设备和存储介质。所述方法包括:对存储系统中的内存按照分配单元设置唯一的地址并编号;所述分配单元为内存页,每个内存页都有一个引用计数,其初始值设置为零;在内存页中存储数据时,同时获取存储这些数据所有的内存页的编号,并将存储这些数据所有的内存页的引用计数加一;在进行数据拷贝处理时,获取并保存被拷贝数据对应的所有内存页的编号,同时将这些内存页的引用计数分别加一并保存,但不进行这些内存页的数据拷贝。采用本方法能够实现数据零拷贝,实现了系统层面的零拷贝技术,不依赖于具体业务模块和协议的数据结构,提高数据处理速度,提升了整个系统的性能。提升了整个系统的性能。提升了整个系统的性能。

【技术实现步骤摘要】
实现数据零拷贝的方法、装置和计算机设备和存储介质


[0001]本申请涉及数据拷贝
,特别是涉及一种实现数据零拷贝的方法、装置、计算机设备和存储介质。

技术介绍

[0002]大数据时代背景下,各行业对存储业务的需求不断增长,存储系统的业务量增长对存储系统的性能提出了新的挑战。存储系统中IO(输入输出)的处理经过多层协议栈,有大量的数据拷贝和校验,有的甚至还是对大块数据的处理,在数据的转发处理流程中,同一个数据往往经历多次Copy(拷贝),但随着拷贝次数的增多,导致数据出现错误的概率增大,且数据处理量增大。零拷贝技术可以减少或避免数据的Copy次数,目前的零拷贝技术多是基于某个协议的处理,没有针对整个系统中的设计,只能实现部分数据的零拷贝。而且现有的内存管理方式仅能实现针对内存页的数据存储管理,并不能有效应用在数据拷贝管理中,即便是采用了非连续页的动态内存管理方法,在数据拷贝过程中,也是根据内存页标识查找出数据对应存储的内存页,将这些内存页整体拷贝,仍然无法实现数据的零拷贝。
[0003]因此,针对数据拷贝
,如何设置一种实现数据零拷贝的方法、装置、计算机设备和存储介质成为亟待解决的技术问题。

技术实现思路

[0004]基于此,有必要针对上述技术问题,提供一种实现数据零拷贝的方法、装置、计算机设备和存储介质,能够解决目前数据存储过程中出现数据拷贝次数的增多,导致数据出现错误的概率增大,且数据处理量增大,仍然无法实现数据的零拷贝的技术问题。
[0005]一方面,提供一种实现数据零拷贝的方法,所述方法包括:
[0006]对存储系统中的内存按照分配单元设置唯一的地址并编号;所述分配单元为内存页,每个内存页都有一个引用计数,所述内存页的引用计数初始值设置为零;
[0007]在内存页中存储数据时,同时获取存储这些数据所有的内存页的编号,并将存储这些数据所有的内存页的引用计数加一;
[0008]在进行数据拷贝处理时,获取并保存被拷贝数据对应的所有内存页的编号,同时将这些内存页的引用计数分别加一并保存,但不进行这些内存页的数据拷贝;在访问被拷贝数据时,通过保存的内存页编号来获得这些数据的内存页地址。
[0009]在其中一个实施例中,在所述被拷贝数据完成数据拷贝处理后,还包括:
[0010]在读取所述被拷贝数据时,通过所述被拷贝数据对应保存的内存页编号来获得这些数据的内存页地址,通过内存页地址直接读取对应内存页的数据。
[0011]在其中一个实施例中,在读取所述被拷贝数据后,还包括:
[0012]在修改所述被拷贝数据时,对存储所述被拷贝数据的所有内存页逐一执行写操作;如果该内存页的引用计数为一,则直接修改该内存页的数据并保存;如果该内存页的引用计数大于一,则定义该内存页为旧内存页,申请一个引用计数为零的内存页作为新内存
页,将新内存页的引用计数加一,并将所述被拷贝数据保存的旧内存页的编号更新为新内存页的编号,然后将旧内存页中需要更新的数据写入新内存页中并保存,将旧内存页中没有发生更新的数据直接从旧内存页对应拷贝至新内存页中,最后将旧内存页的引用计数减一。
[0013]在其中一个实施例中,在读取所述被拷贝数据后,还包括:
[0014]在修改所述被拷贝数据时,若所述被拷贝数据对应保存的所有内存页的引用计数均为一,则直接修改该内存页的数据并保存;若所述被拷贝数据对应保存的所有内存页中任意一个内存页的引用计数大于一,则对该内存页的数据进行拷贝后进行修改和保存。
[0015]在其中一个实施例中,所述若所述被拷贝数据对应保存的所有内存页中任意一个内存页的引用计数大于一,则对该内存页的数据进行拷贝后进行修改和保存,包括:
[0016]定义存储所述被拷贝数据的所有内存页为旧内存页,申请与旧内存页数量相同的引用计数为零的内存页作为新内存页;
[0017]将新内存页的引用计数加一,并将所述被拷贝数据保存的旧内存页的编号更新为新内存页的编号;
[0018]然后将旧内存页中需要更新的数据写入新内存页中并保存,将旧内存页中没有发生更新的数据直接从旧内存页对应拷贝至新内存页中,最后将旧内存页的引用计数减一。
[0019]在其中一个实施例中,所述若所述被拷贝数据对应保存的所有内存页中任意一个内存页的引用计数大于一,则对该内存页的数据进行拷贝后进行修改和保存,包括:
[0020]定义存储所述被拷贝数据的所有内存页为旧内存页,申请与旧内存页数量相同的引用计数为零的内存页作为新内存页;
[0021]将旧内存页的数据对应拷贝至新内存页中,将新内存页的引用计数加一,将旧内存页的引用计数减一,并将所述被拷贝数据保存的旧内存页的编号更新为新内存页的编号,然后在新内存页中进行数据修改并保存。
[0022]在其中一个实施例中,在所述被拷贝数据完成数据拷贝处理后,还包括:
[0023]在释放一片内存时,将被释放的内存对应的内存页编号逐个减一,如果内存页的引用计数减一后为零,则释放该内存页;如果内存页的引用计数减一后不为零,则不释放该内存页。
[0024]另一方面,提供了一种实现数据零拷贝的装置,所述装置包括:
[0025]内存管理模块,用于对存储系统中的内存按照分配单元设置唯一的地址并编号;所述分配单元为内存页,每个内存页都有一个引用计数,所述内存页的引用计数初始值设置为零;
[0026]内存申请模块,用于在内存页中存储数据时,同时获取存储这些数据所有的内存页的编号,并将存储这些数据所有的内存页的引用计数加一;
[0027]拷贝管理模块,用于在进行数据拷贝处理时,获取并保存被拷贝数据对应的所有内存页的编号,同时将这些内存页的引用计数分别加一并保存,但不进行这些内存页的数据拷贝;在访问被拷贝数据时,通过保存的内存页编号来获得这些数据的内存页地址。
[0028]再一方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
[0029]对存储系统中的内存按照分配单元设置唯一的地址并编号;所述分配单元为内存
页,每个内存页都有一个引用计数,所述内存页的引用计数初始值设置为零;
[0030]在内存页中存储数据时,同时获取存储这些数据所有的内存页的编号,并将存储这些数据所有的内存页的引用计数加一;
[0031]在进行数据拷贝处理时,获取并保存被拷贝数据对应的所有内存页的编号,同时将这些内存页的引用计数分别加一并保存,但不进行这些内存页的数据拷贝;在访问被拷贝数据时,通过保存的内存页编号来获得这些数据的内存页地址。
[0032]又一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
[0033]对存储系统中的内存按照分配单元设置唯一的地址并编号;所述分配单元为内存页,每个内存页都有一个引用计数,所述内存页的引用计数初始值设本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种实现数据零拷贝的方法,其特征在于,包括:对存储系统中的内存按照分配单元设置唯一的地址并编号;所述分配单元为内存页,每个内存页都有一个引用计数,所述内存页的引用计数初始值设置为零;在内存页中存储数据时,同时获取存储这些数据所有的内存页的编号,并将存储这些数据所有的内存页的引用计数加一;在进行数据拷贝处理时,获取并保存被拷贝数据对应的所有内存页的编号,同时将这些内存页的引用计数分别加一并保存,但不进行这些内存页的数据拷贝;在访问被拷贝数据时,通过保存的内存页编号来获得这些数据的内存页地址。2.根据权利要求1所述的实现数据零拷贝的方法,其特征在于,在所述被拷贝数据完成数据拷贝处理后,还包括:在读取所述被拷贝数据时,通过所述被拷贝数据对应保存的内存页编号来获得这些数据的内存页地址,通过内存页地址直接读取对应内存页的数据。3.根据权利要求2所述的实现数据零拷贝的方法,其特征在于,在读取所述被拷贝数据后,还包括:在修改所述被拷贝数据时,对存储所述被拷贝数据的所有内存页逐一执行写操作;如果该内存页的引用计数为一,则直接修改该内存页的数据并保存;如果该内存页的引用计数大于一,则定义该内存页为旧内存页,申请一个引用计数为零的内存页作为新内存页,将新内存页的引用计数加一,并将所述被拷贝数据保存的旧内存页的编号更新为新内存页的编号,然后将旧内存页中需要更新的数据写入新内存页中并保存,将旧内存页中没有发生更新的数据直接从旧内存页对应拷贝至新内存页中,最后将旧内存页的引用计数减一。4.根据权利要求2所述的实现数据零拷贝的方法,其特征在于,在读取所述被拷贝数据后,还包括:在修改所述被拷贝数据时,若所述被拷贝数据对应保存的所有内存页的引用计数均为一,则直接修改该内存页的数据并保存;若所述被拷贝数据对应保存的所有内存页中任意一个内存页的引用计数大于一,则对该内存页的数据进行拷贝后进行修改和保存。5.根据权利要求4所述的实现数据零拷贝的方法,其特征在于,所述若所述被拷贝数据对应保存的所有内存页中任意一个内存页的引用计数大于一,则对该内存页的数据进行拷贝后进行修改和保存,包括:定义存储所述被拷贝数据的所有内存页为旧内存页,申请与旧内存页数量相同的引用计数为零的内存页作...

【专利技术属性】
技术研发人员:徐玉显孙明刚刘清林
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1