CN107025064B - 一种低延迟高iops的数据访问方法 - Google Patents

一种低延迟高iops的数据访问方法 Download PDF

Info

Publication number
CN107025064B
CN107025064B CN201610067814.6A CN201610067814A CN107025064B CN 107025064 B CN107025064 B CN 107025064B CN 201610067814 A CN201610067814 A CN 201610067814A CN 107025064 B CN107025064 B CN 107025064B
Authority
CN
China
Prior art keywords
thread
cpu core
data
read request
group
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
Application number
CN201610067814.6A
Other languages
English (en)
Other versions
CN107025064A (zh
Inventor
王田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Memblaze Technology Co Ltd
Original Assignee
Beijing Memblaze Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Memblaze Technology Co Ltd filed Critical Beijing Memblaze Technology Co Ltd
Priority to CN201911036827.7A priority Critical patent/CN110764710B/zh
Priority to CN201610067814.6A priority patent/CN107025064B/zh
Publication of CN107025064A publication Critical patent/CN107025064A/zh
Application granted granted Critical
Publication of CN107025064B publication Critical patent/CN107025064B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Abstract

本发明公开了一种存储系统中的数据访问方法,其中所述存储系统中包括第一组CPU核与第二组CPU核,其中第一组CPU核的每个专用于运行多个第一线程之一,第二组CPU核用于运行多个第二线程,所述方法包括:通过所述第一线程获取写请求并将数据写到缓冲区;通过所述第二线程将所述缓冲区中的数据写到非易失存储设备。本发明能够兼顾存储系统的延迟,IOPS和带宽,特别是对于新型的基于闪存的存储系统,本发明提出的架构相对传统聚合方案在延迟和IOPS上有明显的优势。

Description

一种低延迟高IOPS的数据访问方法
技术领域
本发明涉及存储系统软件架构,尤其涉及一种存储系统中的数据访问方法及设备。
背景技术
传统IO软件中通常使用聚合的方式提供高吞吐量。这种设计中,多个IO请求被聚合在一起并批量处理。IO处理路径通常可以切分成相对独立的部分,例如压缩、去重等,每一部分作为一个子任务可以用流水线的方式处理。其中每个子任务处理时都可以用聚合的手段来提升吞吐量。传统上,对于网络和磁盘等来说,聚合也有利于提升他们的效率。
使用调度器和预读策略可以认为是一种聚合方式。
发明内容
聚合的方式尽管可以达到高带宽,却无法达到低延迟和低队列深度下的高IOPS(Input/Output Operation Per Second,每秒读/写操作的次数)。对于被聚合的多个IO中的一个单独的IO来说,必须等到同批次的IO都完成之后才向上层报告自身完成的消息。这就导致了延迟的大大提升。同时,存储系统中多任务竞争CPU引入的任务切换会进一步引入不可预测的延迟。对于新型的高速存储介质,例如SSD,特别对于读请求来说,随机读可以达到很高的带宽和IOPS。这种情形下,现有的聚合方法提供高吞吐量的优势将不存在。同时网络的性能也在飞速发展,提供高带宽的同时也能提供很高的IOPS的低延迟。现有聚合的IO模式将成为提升IOPS和降低延迟过程中的障碍。
本发明希望克服现有技术在新型高速存储介质上,无法达到高IOPS和低延迟的缺点,最终达到平衡高IOPS、低延迟和高带宽三个指标的结果。
根据本发明的一个方面,提供了一种存储系统中的数据访问方法,其中所述存储系统中包括第一组CPU核与第二组CPU核,其中第一组CPU核的每个专用于运行多个第一线程之一,第二组CPU核用于运行多个第二线程,所述方法包括:通过所述多个第一线程之一获取写请求并将数据写到缓冲区;通过所述第二线程将所述缓冲区中的数据写到非易失存储设备。
根据本发明的一个实施方式,进一步包括:通过所述第一线程将写请求的完成信息发送给写请求发出方。
根据本发明的一个实施方式,其中,通过第二线程将所述缓冲区中的数据聚合后写到存储设备。
根据本发明的一个实施方式,其中,所述第一线程每次获取写请求的数量是接近于1的较小整数。
根据本发明的一个实施方式,其中,多个第二线程的一些专用于将数据写入到第一存储设备,而多个第二线程的另一些专用于将数据写入到第二存储设备。
根据本发明的一个实施方式,其中,所述第二线程将所述缓冲区中的数据压缩后写到存储设备。
根据本发明的一个实施方式,其中,使用cgroup将CPU核划为第一组CPU核与第二组CPU核。
根据本发明的一个实施方式,其中,使用taskset为每个第一线程分配为其所独占的CPU核。
根据本发明的一个实施方式,其中,使用轮询和中断来获取写请求。
根据本发明的一个实施方式,其中,所述写请求发出方是网卡。
根据本发明的第二方面,还提供了一种存储系统中的数据访问设备,其中所述存储系统中包括第一组CPU核与第二组CPU核,其中第一组CPU核的每个专用于运行多个第一线程之一,第二组CPU核用于运行多个第二线程,所述设备包括:用于通过所述多个第一线程之一获取写请求并将数据写到缓冲区的装置;用于通过所述第二线程将所述缓冲区中的数据写到非易失存储设备的装置。
根据本发明的第三方面,还提供了一种存储系统中的数据访问方法,其中所述存储系统中包括第一组CPU核与第二组CPU核,其中第一组CPU核的每个专用于运行多个第一线程之一,第二组CPU核用于运行多个第二线程,所述方法包括:通过所述多个第一线程之一获取读请求并将读请求发送给存储设备;响应于所述存储设备完成读请求,通过所述多个第一线程之一将从所述存储设备读出的数据返回给读请求发出方。
根据本发明的第三方面的一个实施方式,其中,所述多个第一线程之一每次获取读请求的数量是接近于1的较小整数。
根据本发明的第三方面的一个实施方式,其中,所述多个第一线程之一每次从所述存储设备读出的数据对应的读请求数量是接近于1的较小整数。
根据本发明的第三方面的一个实施方式,其中,所述多个第一线程之一每次从所述存储设备读出的数据对应的读请求数量是接近于1的较小整数。
根据本发明的第三方面的一个实施方式,其中,所述读请求发出方是网卡。
根据本发明的第三方面的一个实施方式,其中,使用cgroup将cpu核划为第一组CPU核与第二组CPU核。
根据本发明的第三方面的一个实施方式,其中,使用taskset为每个第一线程分配为其所独占的CPU核。
根据本发明的第三方面的一个实施方式,其中,通过轮询和中断来获取读请求。
根据本发明的第四方面,还提供了一种存储系统中的数据访问设备,其中所述存储系统中包括第一组CPU核与第二组CPU核,其中第一组CPU核的每个专用于运行多个第一线程之一,第二组CPU核用于运行多个第二线程,所述设备包括:用于通过所述多个第一线程之一获取读请求并将读请求发送给存储设备的装置;用于响应于所述存储设备完成读请求,通过所述多个第一线程之一将从所述存储设备读出的数据返回给读请求发出方的装置。
根据本发明的第五方面,还提供了一种存储系统中的数据访问方法,其中所述存储系统中包括第一组CPU核与第二组CPU核,其中第一组CPU的每个专用于运行多个第一线程之一;第二组CPU核用于运行多个第二线程,所述方法包括:通过所述多个第一线程之一获取写请求并将数据写到缓冲区;通过所述多个第二线程之一将所述缓冲区中的数据写到非易失存储设备;通过所述多个第一线程之一获取读请求并将读请求发送给存储设备;响应于所述存储设备完成读请求,通过所述多个第一线程之一将从所述存储设备读出的数据返回给读请求发出方。
根据本发明的第五方面,还提供了一种存储系统中的数据访问设备,其中所述存储系统中包括第一组CPU核与第二组CPU核,其中第一组CPU的每个专用于运行多个第一线程之一;第二组CPU核用于运行多个第二线程,所述设备包括:用于通过所述多个第一线程之一获取写请求并将数据写到缓冲区的装置;用于通过所述多个第二线程之一将所述缓冲区中的数据写到非易失存储设备的装置;用于通过所述多个第一线程之一获取读请求并将读请求发送给存储设备的装置;用于响应于所述存储设备完成读请求,通过所述多个第一线程之一将从所述存储设备读出的数据返回给读请求发出方的装置。
根据本发明的第六方面,提供一种包含计算机程序代码的计算机程序,当被载入计算机系统并在计算机系统上执行时,所述计算机程序代码使所述计算机系统执行根据本发明一方面提供的存储系统中的数据访问方法或者根据本发明第三方面提供的存储系统中的数据访问方法或者本发明第五方面提供的存储系统中的数据访问方法。
根据本发明的第七方面,提供一种包括程序代码的程序,当被载入存储设备并在存储设备上执行时,所述计程序代码使所述存储设备执行根据本发明一方面提供的存储系统中的数据访问方法或者根据本发明第三方面提供的存储系统中的数据访问方法或者本发明第五方面提供的存储系统中的数据访问方法。
本发明能够兼顾存储系统的延迟,IOPS和带宽,特别是对于新型的基于闪存的存储系统,本发明提出的架构相对传统聚合方案在延迟和IOPS上有明显的优势。而且本发明不仅适用于基于闪存的存储系统,同样适用于采用磁盘、XPoint、PCRAM、MRAM、RRAM、FeRAM等存储介质的存储系统。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。其中在附图中,参考数字之后的字母标记指示多个相同的部件,当泛指这些部件时,将省略其最后的字母标记。在附图中:
图1示出了根据本发明的一个实施方式的CPU核和线程设定的结构示意图;
图2A示出了根据本发明的一个实施方式的存储系统中的数据访问方法的流程图;
图2B示出了根据本发明的一个实施方式的存储系统中的数据访问方法的流程图;
图3示出了根据本发明的一个实施方式的存储系统中的数据访问方法的示意图;
图4示出了根据本发明的另一个方面的存储系统中的数据访问装置的结构示意图;
图5示出了根据本发明的一个实施方式的存储系统中的数据访问方法的流程图;
图6示出了根据本发明的一个实施方式的存储系统中的数据访问方法的示意图;
图7示出了根据本发明的另一个方面的存储系统中的数据访问装置的结构示意图;
图8示出了根据本发明的一个实施方式的存储系统中的数据访问方法的流程图;
图9示出了根据本发明的另一个方面的存储系统中的数据访问装置的结构示意图。
在附图中,使用相同或类似的标号来指代相同或类似的元素。
具体实施方式
下面结合附图和具体的实施方式对本发明作进一步的描述。
对存储系统中的CPU资源进行重新划分和隔离,并对存储系统中IO处理流程拆分为几个阶段,不同阶段可以分别由不同线程执行。对存储系统中的IO处理流程区分出同步阶段和异步阶段,同时对工作线程划分为第一线程和第二线程。
图1示出了根据本发明的一个实施方式的CPU核和线程设定的结构示意图。
如图1所示,在存储系统中的非聚合线程组包括多个第一线程,其中每个第一线程绑定一个独立的CPU核。第一线程执行IO处理的同步阶段,例如写请求前端的处理和读请求的处理。聚合线程组包括表多个第二线程,其中第二线程共享一组CPU核。第二线程和第一线程所使用的CPU核不重合。第二线程执行IO处理的异步阶段,例如写请求后端的处理。优选地,为每个第一线程绑定一个独立的CPU核,使得第一线程的任务执行完成前,不会被抢占,从而减少因线程切换引入的开销,并确保第一线程所执行的IO处理阶段被快速完成。而第二线程在执行过程中可被调度或抢占,从而提升第二线程所执行的IO处理阶段被高效地完成,减少处理器等资源的浪费。
根据本发明的一个实施方式,对CPU核和线程设定的具体实现包括且不限于使用cgroup和/或taskset。使用cgroup将CPU核划为第一组CPU核与第二组CPU核,其中第一组CPU核的每个专用于运行多个第一线程之一,第二组CPU核用于运行多个第二线程。第一组CPU核数与第一线程的线程数一致。第二线程的线程数通常大于第二组CPU核数,第二线程之间允许被调度。
使用taskset为每个第一线程分配为其所独占的CPU核,taskset可以细粒度的设置某个第一线程只能运行某一个CPU核上。一般的,对CPU核和线程的设定通常在存储系统初始化时实施,并且在运行过程中根据需求也可以动态的调整。
图2A示出了根据本发明的一个实施方式的存储系统中的数据访问方法的流程图。
图3示出了根据本发明的一个实施方式的存储系统中的数据访问方法的示意图。
如图2A所示,存储系统中的数据访问方法包括:步骤S210:通过多个第一线程之一获取写请求并将数据写到缓冲区;步骤S220:通过第二线程将缓冲区中的数据写到非易失存储设备。
也参看图3,在步骤S210中,从写请求发出方获取写请求,写请求发出方可以为网卡、FC(光纤通道)适配器、InfiniBand卡等。在图3的实施例中写请求发出方为网卡。获取写请求的方式包括且不限于使用轮询和中断。作为举例,第一线程每次获取1个写请求。在另一个例子中第一线程获取写请求时,已经存在若干个(例如2个或3个)写请求,第一线程也一并获取并处理这些写请求。可选地,第一线程每次获取并处理的写请求数量是一个接近1的较小整数(例如2个、3个等),但第一线程的目标是加快写请求的处理速度,因而不希望为了一次处理多个写请求而等待写请求的到来。每个第一线程通过其独占的CPU核运行,从而保证这些线程将不会因为被调度而影响延迟,使得运行效率得到提高。
继续参看图2A与图3,在步骤S220中,第二线程执行“将缓冲区中的数据写入到非易失存储设备”的操作。在图3的实施例中,非易失存储设备为盘设备,由第二线程将缓冲区中的数据写到盘设备中。该操作包括且不局限于使用以下两种方法:每个盘设备对应一个第二线程,每个第二线程处理访问相对应的盘设备的写请求,将数据写到对应的盘设备;若干个第二线程处理访问任意盘设备的写请求,将数据写到这些盘设备中。盘设备包括且不局限于硬盘、固态硬盘(SSD)等。在进一步的实施例中,第二线程将缓冲区中来自多个写请求的数据聚合后,再写入盘设备。在依然进一步的实施例中,将数据聚合后写入磁盘之前可以对数据进行额外的操作,包括且不局限于去重、压缩等。
图2B示出了根据本发明的一个实施方式的存储系统中的数据访问方法的流程图。
如图2B所示,存储系统中的数据访问方法包括:步骤S210:通过多个第一线程之一获取写请求并将数据写到缓冲区;步骤S212:通过第一线程将写请求的完成信息发送给写请求发出方;步骤S220:通过第二线程将缓冲区中的数据写到非易失存储设备。
也参看图3,在第一线程将写请求的数据写入到缓冲区后,将写请求处理完成的消息发送给写请求发出方(步骤S212)。写请求发出方包括但不局限于网卡,例如还可以为FC(光纤通道)适配器、InfiniBand卡等。
所属领域技术人员将意识到的,由第一线程执行的步骤S212与由第二线程执行的步骤S220之间没有依赖性,可以同时发生。虽然在图2B中,步骤S212发生在步骤S220之前,在多种实施方式中,步骤S220也可发生在步骤S212之前。
根据本发明的一个实施方式,实施过程中需要注意缓冲区的配置。选择缓冲区的大小,使得磁盘写带宽波动时不影响用户的写IOPS。对于数据可靠性要求高的场景,需要保证缓冲区在断电后能够正常恢复。为实现这个目标可以将缓冲区放在非易失介质上,包括但不限于NVDIMM(Non-Volatile Dual In-line Memory Module)、NVRAM(Non-VolatileRAM)等。也可以由DRAM提供缓冲区。
继续参看图3,图3中用数字展示了根据本发明实施例的写请求处理的流程的各个阶段。(1)网卡接收来自用户或服务器的写请求;(2)第一线程之一将网卡接收的写请求写入缓冲区;(3)第一线程之一将写请求完成的消息返回给网卡;(4)网卡将写请求完成的消息返回给用户或服务器。其中处理流程(2)阶段与(3)阶段的第一线程可以是相同的线程,也可以是不同的第一线程。由第二线程将缓冲区的数据写入盘设备。(5)第二线程从缓冲区中取出数据,并写入盘设备。对于同一个写请求,其处理流程(5)阶段与(3)可以同时进行。而存储系统中,第一线程将写请求写入缓冲区的操作与第二线程从缓冲区中取出数据并写入盘设备的操作可以同时发生。在根据本发明的实施例中,多个第一线程并行地执行写请求处理流程的(2)阶段与(3)阶段,以及多个第二线程并行地执行写请求处理流程的(5)阶段。
根据本发明的另一个方面,本发明还提供一种存储系统中的数据访问设备,其中存储系统中包括第一组CPU核与第二组CPU核,其中第一组CPU核的每个专用于运行多个第一线程之一,第二组CPU核用于运行多个第二线程,如图4所示,该设备包括:用于通过多个第一线程之一获取写请求并将数据写到缓冲区的装置410;用于通过第二线程将缓冲区中的数据写到非易失存储设备的装置420。
图5示出了根据本发明的一个实施方式的存储系统中的数据访问方法的流程图。
图6示出了根据本发明的一个实施方式的存储系统中的数据访问方法的示意图。
如图5所示,存储系统中的数据访问方法包括:步骤S510:通过多个第一线程之一获取读请求并将读请求发送给存储设备;步骤S520:响应于存储设备完成读请求,通过多个第一线程之一将从存储设备读出的数据返回给读请求发出方。
结合图6,在步骤S510中,第一线程执行从读请求发出方获取读请求,并将读请求发送给存储设备的操作。读请求发出方可以为网卡、FC(光纤通道)适配器、InfiniBand卡等,在图6的实施例中,读请求发出方为网卡。在图6的实施例中,存储设备为盘设备。盘设备包括且不局限于硬盘、固态硬盘(SSD)等。获取读请求的方法包括且不限于使用轮询和中断。第一线程每次获取读请求的数量可以是1,也可以是一个接近1的较小整数(例如2个、3个等)。需要理解的是,第一线程的目标是加快读请求的处理速度,因而不希望为了一次处理多个读请求而等待读请求的到来。
对盘设备的操作是异步的,第一线程之一先向盘设备发送读请求,盘设备操作完成后第一线程之一会接收到通知。将读请求发送给盘设备的操作由第一线程之一执行。而从盘设备接收读请求处理完成的通知以及获取读请求的处理结果,则为步骤S520,也由第一线程之一执行。进一步的实施例中,获取读请求,并将读请求发送给盘设备的操作中可以附加额外的处理逻辑,包含且不局限于处理诸如读请求命中缓存的情形。
结合图6,在步骤S520中,第一线程执行将从盘设备获取到的数据返回给读请求发出方的操作。读请求发出方包括但不局限于网卡,例如还可以为FC(光纤通道)适配器、InfiniBand卡等。进一步的实施例中,该操作中可以对数据进行额外的处理,包括但不局限于解压缩、解密等。该操作返回的数据量可以对应一次读请求,也可以对应较小数量的多次读请求。从盘设备获取数据的机制包括且不限于中断和轮询。在步骤S520中获取数据的线程和在步骤S510中发送读请求线程可以相同,也可以不同。当获取数据的第一线程与发送读请求的第一线程是同一线程时,在等待盘设备返回读取结果期间可暂时使该第一线程让出CPU核。
继续参看图6,图6中用数字展示了根据本发明实施例的读请求处理的流程的各个阶段。(1)网卡接收来自用户或服务器的读请求;(2)第一线程之一基于网卡接收的读请求向盘设备发送读请求;(3)第一线程之一收到盘设备返回的读请求处理结果并发送给网卡;(4)网卡将读请求处理结果返回给用户或服务器。其中处理流程(2)阶段与(3)阶段的第一线程可以是相同的线程,也可以是不同的第一线程。在根据本发明的实施例中,多个第一线程并行地执行读请求处理流程的(2)阶段与(3)阶段。
根据本发明的另一个方面,本发明还提供一种存储系统中的数据访问设备,其中存储系统中包括第一组CPU核与第二组CPU核,其中第一组CPU核的每个专用于运行多个第一线程之一,第二组CPU核用于运行多个第二线程,如图7所示,该设备包括:用于通过多个第一线程之一获取读请求并将读请求发送给存储设备的装置710;用于响应于存储设备完成读请求,通过多个第一线程之一将从存储设备读出的数据返回给读请求发出方的装置720。
图8示出了根据本发明的一个实施方式的存储系统中的数据访问方法的流程图。
如图8所示,存储系统中的数据访问方法包括以下步骤:步骤S810:通过多个第一线程之一获取写请求并将数据写到缓冲区;步骤S820:通过多个第二线程之一将缓冲区中的数据写到非易失存储设备;步骤S830:通过多个第一线程之一获取读请求并将读请求发送给存储设备;步骤S840:响应于存储设备完成读请求,通过多个第一线程之一将从存储设备读出的数据返回给读请求发出方。
根据本发明的另一个方面,本发明还提供一种存储系统中的数据访问设备,其中存储系统中包括第一组CPU核与第二组CPU核,其中第一组CPU的每个专用于运行多个第一线程之一;第二组CPU核用于运行多个第二线程,如图9所示,该设备包括:用于通过多个第一线程之一获取写请求并将数据写到缓冲区的装置910;用于通过多个第二线程之一将缓冲区中的数据写到非易失存储设备的装置920;用于通过多个第一线程之一获取读请求并将读请求发送给存储设备的装置930;用于响应于存储设备完成读请求,通过多个第一线程之一将从存储设备读出的数据返回给读请求发出方的装置940。
根据本发明的另一个方面,本发明还提供一种包含计算机程序代码的计算机程序,当被载入计算机系统并在计算机系统上执行时,所述计算机程序代码使所述计算机系统执行上面所述的方法。
根据本发明的另一个方面,还提供一种包括程序代码的程序,当被载入存储设备并在存储设备上执行时,所述计程序代码使所述存储设备执行上面所述的方法。
本发明能够兼顾存储系统的延迟,IOPS和带宽,特别是对于新型的基于闪存的存储系统,本发明提出的架构相对传统IO聚合方案在延迟和IOPS上有明显的优势。本发明不仅适用于基于闪存的存储系统,同样适用于采用磁盘、XPo i nt、PCRAM、MRAM、RRAM、FeRAM等存储介质的存储系统。
应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以分别由包括计算机程序指令的各种装置来实施。这些计算机程序指令可以加载到通用计算机、专用计算机或其他可编程数据控制设备上以产生机器,从而在计算机或其他可编程数据控制设备上执行的指令创建了用于实现一个或多个流程图框中指定的功能的装置。
这些计算机程序指令还可以存储在可以引导计算机或其他可编程数据控制设备的计算机可读存储器中从而以特定方式起作用,从而能够利用存储在计算机可读存储器中的指令来制造包括用于实现一个或多个流程图框中所指定功能的计算机可读指令的制品。计算机程序指令还可以加载到计算机或其他可编程数据控制设备上以使得在计算机或其他可编程数据控制设备上执行一系列的操作步骤,从而产生计算机实现的过程,进而在计算机或其他可编程数据控制设备上执行的指令提供了用于实现一个或多个流程图框中所指定功能的步骤。
因而,框图和流程图的框支持用于执行指定功能的装置的组合、用于执行指定功能的步骤的组合和用于执行指定功能的程序指令装置的组合。还应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以由执行指定功能或步骤的、基于硬件的专用计算机系统实现,或由专用硬件和计算机指令的组合实现。
上述的不同块、操作以及技术的至少一部分可以被执行,通过使用硬件,控制设备执行固件指令,控制设备执行软件指令,或者及其任意组合。当采用执行固件以及软件指令的控制设备执行时,软件或固件指令可以被存储在任意计算机可读存储介质中,例如磁盘,光盘或者其他存储介质,在RAM或者ROM或者f l ash存储器,控制设备,硬盘,光盘,磁盘等等。同样地,软件和固件指令可以被传输到用户或者系统,通过任意已知的或者期望的传输方式包括,例如,在计算机可读盘或者其他便携式计算机存储机制或者通过通信媒介。通信媒介典型地具体化计算机可读指令,数据结构,序模块或者在已调制数据信号中的其它数据例如载波或者其他传输机制。通过示例,并非限制,通信介质包括有线介质例如有线网络或者单线连接,以及无线媒介,例如声、无线频率,红外以及其它无线介质。从而,软件和固件指令可以被传输给用户或者系统,通过通信信道,例如电话线,DSL线,电缆电视线,光纤线缆,无线信道,因特网,等等(通过便携式存储介质提供这样的软件,其被看作是相同的或者可互换的)。软件或者固件指令可以包括机器可读指令,这些可读指令在由控制设备执行时,导致控制设备执行不同动作。
当在硬件中执行时,硬件可以包括一个或多个离散组件,集成电路,应用的集成电路(AS I C),等等。
需要理解的是,本发明可以以纯软件、纯硬件、固件以及上述的各种组合来实现。硬件例如可以是控制设备、专用集成电路、大规模集成电路等等。
虽然当前发明参考的示例被描述,其只是为了解释的目的而不是对本发明的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本发明的范围。
这些实施方式所涉及的、从上面描述和相关联的附图中呈现的教导获益的领域中的技术人员将认识到这里记载的本发明的很多修改和其他实施方式。因此,应该理解,本发明不限于公开的具体实施方式,旨在将修改和其他实施方式包括在所附权利要求书的范围内。尽管在这里采用了特定的术语,但是仅在一般意义和描述意义上使用它们并且不是为了限制的目的而使用。

Claims (6)

1.一种存储系统中的数据访问方法,其中所述存储系统中包括第一组CPU核与第二组CPU核,其中第一组CPU核的每个专用于运行多个第一线程之一,使得第一线程的执行完成前不会被抢占,第二组CPU核用于运行多个第二线程,使得第二线程在执行过程中可被调度或抢占,所述方法包括:
第一线程接收来自用户或者服务器的读请求与写请求;
对于写请求,通过第一线程获取写请求并将数据写到缓冲区;通过所述第二线程将所述缓冲区中的数据写到非易失存储设备;
对于读请求,通过所述第一线程获取读请求并将读请求发送给存储设备;所述第一线程等待存储设备返回读取结果;响应于所述存储设备完成所述读请求,通过所述第一线程将从所述存储设备读出的数据返回给读请求发出方。
2.根据权利要求1所述的方法,进一步包括:通过所述第一线程将写请求的完成信息发送给写请求发出方。
3.根据权利要求1-2之一所述的方法,其中,通过第二线程将所述缓冲区中的数据聚合后写到存储设备。
4.根据权利要求1-2之一所述的方法,其中,所述第一线程每次获取写请求的数量是2个或3个。
5.根据权利要求1-2之一所述的方法,其中,多个第二线程的一些专用于将数据写入到第一存储设备,而多个第二线程的另一些专用于将数据写入到第二存储设备。
6.一种存储系统中的数据访问设备,其中所述存储系统中包括第一组CPU核与第二组CPU核,其中第一组CPU核的每个专用于运行多个第一线程之一,使得第一线程的执行完成前不会被抢占,第二组CPU核用于运行多个第二线程,使得第二线程在执行过程中可被调度或抢占,第一线程接收来自用户或者服务器的读请求与写请求;
所述设备包括:用于通过所述第一线程获取写请求并将数据写到缓冲区的装置;
用于通过所述第二线程将所述缓冲区中的数据写到非易失存储设备的装置;以及
用于通过所述第一线程获取读请求并将读请求发送给存储设备的装置;所述第一线程等待存储设备返回读取结果;用于响应于所述存储设备完成读请求,通过所述第一线程将从所述存储设备读出的数据返回给读请求发出方的装置。
CN201610067814.6A 2016-01-30 2016-01-30 一种低延迟高iops的数据访问方法 Active CN107025064B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201911036827.7A CN110764710B (zh) 2016-01-30 2016-01-30 低延迟高iops的数据访问方法与存储系统
CN201610067814.6A CN107025064B (zh) 2016-01-30 2016-01-30 一种低延迟高iops的数据访问方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610067814.6A CN107025064B (zh) 2016-01-30 2016-01-30 一种低延迟高iops的数据访问方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201911036827.7A Division CN110764710B (zh) 2016-01-30 2016-01-30 低延迟高iops的数据访问方法与存储系统

Publications (2)

Publication Number Publication Date
CN107025064A CN107025064A (zh) 2017-08-08
CN107025064B true CN107025064B (zh) 2019-12-03

Family

ID=59524724

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201610067814.6A Active CN107025064B (zh) 2016-01-30 2016-01-30 一种低延迟高iops的数据访问方法
CN201911036827.7A Active CN110764710B (zh) 2016-01-30 2016-01-30 低延迟高iops的数据访问方法与存储系统

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201911036827.7A Active CN110764710B (zh) 2016-01-30 2016-01-30 低延迟高iops的数据访问方法与存储系统

Country Status (1)

Country Link
CN (2) CN107025064B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109995855B (zh) * 2019-03-20 2021-12-10 北京奇艺世纪科技有限公司 一种数据获取方法、装置及终端
CN114327280B (zh) * 2021-12-29 2024-02-09 以萨技术股份有限公司 一种基于冷热分离存储的消息存储方法及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6078988A (en) * 1997-01-28 2000-06-20 Sony Corporation High speed data recording and reproducing apparatus and method that mutually monitors the using ratios of buffer memories to thereby control the reading or writing operation
CN101196835A (zh) * 2006-12-07 2008-06-11 国际商业机器公司 用于在线程之间通信的方法和装置
CN101840312A (zh) * 2009-12-31 2010-09-22 创新科存储技术有限公司 一种用于多核处理器的raid5写数据方法及装置
CN103345451A (zh) * 2013-07-18 2013-10-09 四川九成信息技术有限公司 一种在多核处理器中缓冲数据的方法
CN103593148A (zh) * 2013-11-08 2014-02-19 大唐移动通信设备有限公司 一种cdf侧离线话单数据快速存取的方法及装置
CN104598278A (zh) * 2015-01-16 2015-05-06 联想(北京)有限公司 一种数据处理方法及电子设备

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101630276B (zh) * 2009-08-18 2012-12-19 深圳市融创天下科技股份有限公司 一种高效的内存访问方法
CN101650698B (zh) * 2009-08-28 2011-11-16 曙光信息产业(北京)有限公司 直接存储器访问的实现方法
CN102098344B (zh) * 2011-02-21 2012-12-12 中国科学院计算技术研究所 一种缓存管理中同步版本方法和装置及其缓存管理系统
CN102866957B (zh) * 2012-07-31 2014-07-30 中国人民解放军国防科学技术大学 面向多核多线程微处理器的虚拟活跃页缓冲方法及装置
US9996402B2 (en) * 2014-04-07 2018-06-12 Oracle International Corporation System and method for implementing scalable adaptive reader-writer locks
US9778949B2 (en) * 2014-05-05 2017-10-03 Google Inc. Thread waiting in a multithreaded processor architecture
CN104484131B (zh) * 2014-12-04 2017-11-14 珠海金山网络游戏科技有限公司 多磁盘服务器的数据处理装置及对应的处理方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6078988A (en) * 1997-01-28 2000-06-20 Sony Corporation High speed data recording and reproducing apparatus and method that mutually monitors the using ratios of buffer memories to thereby control the reading or writing operation
CN101196835A (zh) * 2006-12-07 2008-06-11 国际商业机器公司 用于在线程之间通信的方法和装置
CN101840312A (zh) * 2009-12-31 2010-09-22 创新科存储技术有限公司 一种用于多核处理器的raid5写数据方法及装置
CN103345451A (zh) * 2013-07-18 2013-10-09 四川九成信息技术有限公司 一种在多核处理器中缓冲数据的方法
CN103593148A (zh) * 2013-11-08 2014-02-19 大唐移动通信设备有限公司 一种cdf侧离线话单数据快速存取的方法及装置
CN104598278A (zh) * 2015-01-16 2015-05-06 联想(北京)有限公司 一种数据处理方法及电子设备

Also Published As

Publication number Publication date
CN110764710B (zh) 2023-08-11
CN110764710A (zh) 2020-02-07
CN107025064A (zh) 2017-08-08

Similar Documents

Publication Publication Date Title
US9665404B2 (en) Optimization of map-reduce shuffle performance through shuffler I/O pipeline actions and planning
US9690705B1 (en) Systems and methods for processing data sets according to an instructed order
JP6385995B2 (ja) テーブル・オブ・コンテンツエントリを使用してデータを格納するためのシステムおよび方法
Bryk et al. Storage-aware algorithms for scheduling of workflow ensembles in clouds
US8108571B1 (en) Multithreaded DMA controller
CN109597818A (zh) 数据更新方法、装置、存储介质和设备
US10601901B2 (en) Methods, systems, and media for stored content distribution and access
US9529622B1 (en) Systems and methods for automatic generation of task-splitting code
CN105786448B (zh) 一种指令调度方法及装置
CN102073461B (zh) 输入输出请求调度方法、相关装置和存储阵列
CN107391270B (zh) 高性能无锁可缩放目标的系统和方法
CN105408875B (zh) 在存储器接口上的分布式过程执行和文件系统
CN106815251A (zh) 分布式数据库系统、数据库访问方法及装置
CN109729106A (zh) 处理计算任务的方法、系统和计算机程序产品
CN105793835B (zh) 用于支持计算环境中的i/o虚拟化的系统和方法
Yildiz et al. Chronos: Failure-aware scheduling in shared Hadoop clusters
US9594688B1 (en) Systems and methods for executing actions using cached data
US8028017B2 (en) Virtual controllers with a large data center
CN109408243A (zh) 一种基于rdma的数据处理方法、装置和介质
CN104994135B (zh) 存储系统中融合san及nas存储架构的方法及装置
CN107025064B (zh) 一种低延迟高iops的数据访问方法
CN103970714B (zh) 用于共享功能逻辑的设备和方法及其可重配置处理器
CN104679575B (zh) 输入输出流的控制系统及其方法
CN108733585A (zh) 缓存系统及相关方法
US10289329B2 (en) Burst buffer dynamic logical volume sizing in high performance computing environment

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
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing

Patentee after: Beijing yihengchuangyuan Technology Co.,Ltd.

Address before: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing

Patentee before: MEMBLAZE TECHNOLOGY (BEIJING) Co.,Ltd.