CN110018782A - 一种数据读/写方法及相关装置 - Google Patents

一种数据读/写方法及相关装置 Download PDF

Info

Publication number
CN110018782A
CN110018782A CN201810020020.3A CN201810020020A CN110018782A CN 110018782 A CN110018782 A CN 110018782A CN 201810020020 A CN201810020020 A CN 201810020020A CN 110018782 A CN110018782 A CN 110018782A
Authority
CN
China
Prior art keywords
read
buffer memory
input
shared buffer
output request
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
Application number
CN201810020020.3A
Other languages
English (en)
Other versions
CN110018782B (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201810020020.3A priority Critical patent/CN110018782B/zh
Publication of CN110018782A publication Critical patent/CN110018782A/zh
Application granted granted Critical
Publication of CN110018782B publication Critical patent/CN110018782B/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/0662Virtualisation aspects
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请实施例提供了一种数据读/写方法及相关装置,其特征在于,所述方法包括:虚拟磁盘依次接收至少一个CPU进程发送的对应第一共享缓存的多个输入/输出请求,依次存储在所述第一共享缓存;所述虚拟磁盘接收到对应所述第一共享缓存的第一输入/输出请求时,生成第一事件通知,将所述第一事件通知发送至第一组件线程;所述第一组件线程接收所述第一事件通知,循环执行第一操作,对所述存储设备执行数据读/写操作,所述第一操作用于读取所述第一共享缓存中未被读取过的输入/输出请求。可见,本申请实施例中在接收到第一事件通知后,通过循环执行第一操作即能获得第一共享缓存中不断存储的输入/输出请求,提高存储设备的读/写操作的速度。

Description

一种数据读/写方法及相关装置
技术领域
本申请涉及互联网技术领域,尤其是涉及一种数据读/写方法及相关装置。
背景技术
随着分布式存储、计算存储分离等技术的发展,释放出更多的中央处理器(Central Processing Unit,CPU)资源和存储资源,存储设备的硬件速度也随之得到了较大幅度地提升。而随着硬件速度的加速,对软件层进行改进,提高对存储设备的读/写操作的速度,也变得日趋重要。
目前,对存储设备进行读/写操作的过程包括:读写设备通过CPU进程生成输入/输出(I/O)请求,将生成的I/O请求发送至驱动层,驱动层需要与应用层进行交互,使得应用层获得该I/O请求,并根据该I/O请求对存储设备执行读/写操作。
在上述过程中,如何能够减少I/O请求的传输延时,从而提高存储设备的读/写操作的速度,是目前亟待解决的技术问题。
发明内容
本申请实施例解决的技术问题在于提供一种数据读/写方法及相关装置,减少I/O请求的传输延时,从而提高存储设备的读/写操作的速度。
为此,本申请解决技术问题的技术方案是:
本申请提供了一种数据读/写方法,所述方法包括:
读写设备上位于驱动层的虚拟磁盘依次接收所述读写设备上创建的至少一个CPU进程发送的对应第一共享缓存的多个输入/输出请求,将所述多个输入/输出请求依次存储在所述第一共享缓存,所述虚拟磁盘包括所述第一共享缓存;
所述虚拟磁盘接收到对应所述第一共享缓存的第一输入/输出请求时,生成第一事件通知,将所述第一事件通知发送至第一组件线程;所述第一组件线程为读写组件上创建的线程,所述读写组件位于所述读写设备的应用层;
所述第一组件线程接收所述第一事件通知,循环执行第一操作,所述第一操作用于读取所述第一共享缓存中未被读取过的输入/输出请求;
所述第一组件线程根据循环执行所述第一操作所读取的输入/输出请求,对所述存储设备执行数据读/写操作。
可选的,所述虚拟磁盘接收到对应所述第一共享缓存的第一输入/输出请求之后,还包括:
所述虚拟磁盘接收到对应所述第一共享缓存的第二输入/输出请求时,生成第二事件通知,将所述第二事件通知发送至所述第一组件线程;
所述第一组件线程确定出当前正在执行所述第一操作,忽略所述第二事件通知。
可选的,还包括:
所述第一组件线程检测到满足停止条件时,停止执行所述第一操作;所述停止条件包括:在预设时间内未在所述第一共享缓存中读取到未被读取过的输入/输出请求。
可选的,所述方法还包括:
所述虚拟磁盘依次接收所述CPU进程发送的对应第二共享缓存的多个输入/输出请求,将所述对应所述第二共享缓存的多个输入/输出请求依次存储在所述第二共享缓存,所述虚拟磁盘包括所述第二共享缓存;
所述虚拟磁盘接收到对应所述第二共享缓存的第三输入/输出请求时,生成第三事件通知,将所述第三事件通知发送至第二组件线程,所述第二组件线程为所述读写组件上创建的线程;
所述第二组件线程接收所述第三事件通知,循环执行第二操作,所述第二操作用于读取所述第二共享缓存中未被读取过的输入/输出请求;
所述第二组件线程根据循环执行所述第二操作所读取的输入/输出请求,对所述存储设备执行数据读/写操作。
可选的,所述虚拟磁盘上记录有所述第一共享缓存与所述第一组件线程的对应关系;将所述第一事件通知发送至所述第一组件线程之前,所述方法还包括:
所述虚拟磁盘根据所述对应关系,确定出所述第一共享缓存对应的第一组件线程。
可选的,将所述多个输入/输出请求依次存储在所述第一共享缓存之前,还包括:
所述虚拟磁盘确定出执行所述CPU进程的当前CPU内核;
所述虚拟磁盘根据所述当前CPU内核与所述第一共享缓存的映射关系,确定出所述第一共享缓存。
可选的,所述第一组件线程根据循环执行所述第一操作所读取的输入/输出请求,对所述存储设备执行数据读/写操作,包括:
所述第一组件线程每次执行所述第一操作时分别读取到一组输入/输出请求,当每次读取到一组输入/输出请求时,利用该组输入/输出请求,对所述存储设备执行数据读/写操作。
可选的,所述第一组件线程根据循环执行所述第一操作所读取的输入/输出请求,对所述存储设备执行数据读/写操作,包括:
所述第一组件线程对循环执行所述第一操作所读取的输入/输出请求进行格式转换,并将格式转换后的输入/输出请求发送至所述存储设备。
可选的,所述将格式转换后的输入/输出请求发送至所述存储设备,包括:
通过同步发送方式将所述格式转换后的输入/输出请求发送至所述存储设备。
本申请提供了一种读写设备,包括:处理器、位于驱动层的虚拟磁盘和位于应用层的读写组件,所述虚拟磁盘包括第一共享缓存,所述读写组件上创建有第一组件线程;
处理器,用于创建至少一个CPU进程;
所述虚拟磁盘用于依次接收所述CPU进程发送的对应所述第一共享缓存的多个输入/输出请求,将所述多个输入/输出请求依次存储在所述第一共享缓存,其中,接收到对应所述第一共享缓存的第一输入/输出请求时,生成第一事件通知,将所述第一事件通知发送至所述第一组件线程;
所述第一组件线程用于接收所述第一事件通知,循环执行第一操作,所述第一操作用于读取所述第一共享缓存中未被读取过的输入/输出请求,所述第一组件线程还用于根据循环执行所述第一操作所读取的输入/输出请求,对所述存储设备执行数据读/写操作。
可选的,所述虚拟磁盘还用于接收到对应所述第一共享缓存的第二输入/输出请求时,生成第二事件通知,将所述第二事件通知发送至所述第一组件线程;
所述第一组件线程还用于确定出当前正在执行所述第一操作,忽略所述第二事件通知。
可选的,所述第一组件线程还用于检测到满足停止条件时,停止执行所述第一操作;所述停止条件包括:在预设时间内未在所述第一共享缓存中读取到未被读取过的输入/输出请求。
可选的,所述虚拟磁盘还包括第二共享缓存,所述读写组件上还创建有第二组件线程;
所述虚拟磁盘还用于,依次接收所述CPU进程发送的对应所述第二共享缓存的多个输入/输出请求,将所述对应所述第二共享缓存的多个输入/输出请求依次存储在所述第二共享缓存,其中,接收到对应所述第二共享缓存的第三输入/输出请求时,生成第三事件通知,将所述第三事件通知发送至所述第二组件线程;
所述第二组件线程用于,接收所述第三事件通知,循环执行第二操作,所述第二操作用于读取所述第二共享缓存中未被读取过的输入/输出请求;
所述第二组件线程还用于根据循环执行所述第二操作所读取的输入/输出请求,对所述存储设备执行数据读/写操作。
可选的,所述虚拟磁盘上记录有所述第一共享缓存与所述第一组件线程的对应关系;
所述虚拟磁盘还用于根据所述对应关系,确定出所述第一共享缓存对应的第一组件线程。
可选的,所述虚拟磁盘还用于,确定出执行所述CPU进程的当前CPU内核,根据所述当前CPU内核与所述第一共享缓存的映射关系,确定出所述第一共享缓存。
可选的,当根据循环执行所述第一操作所读取的输入/输出请求,对所述存储设备执行数据读/写操作时,所述第一组件线程具体用于,每次执行所述第一操作时分别读取到一组输入/输出请求,当每次读取到一组输入/输出请求时,利用该组输入/输出请求,对所述存储设备执行数据读/写操作。
可选的,当根据循环执行所述第一操作所读取的输入/输出请求,对所述存储设备执行数据读/写操作时,所述第一组件线程具体用于,所述第一组件线程对循环执行所述第一操作所读取的输入/输出请求进行格式转换,并将格式转换后的输入/输出请求发送至所述存储设备。
可选的,所述将格式转换后的输入/输出请求发送至所述存储设备时,所述读写设备具体用于,通过同步发送方式将所述格式转换后的输入/输出请求发送至所述存储设备。
通过上述技术方案可知,本申请实施例中,驱动层的虚拟磁盘依次接收对应所述第一共享缓存的多个输入/输出请求,将所述多个输入/输出请求存储在所述第一共享缓存,并且在接收到对应所述第一共享缓存的第一输入/输出请求时,向第一组件线程发送第一事件通知,第一组件线程接收到第一事件通知后,循环执行第一操作,即循环读取所述第一共享缓存中未被读取过的输入/输出请求,并根据读取到的输入/输出请求执行数据读/写操作,可见,本申请实施例中第一组件线程不需要每次都等待接收事件通知,才读取第一共享缓存中未被读取过的输入/输出请求,而是在接收到第一事件通知后,通过循环执行第一操作即能获得第一共享缓存中不断存储的输入/输出请求,因此减少了输入/输出请求在驱动层与应用层之间的传输延时,从而提高存储设备的读/写操作的速度。
并且,本申请实施例采用的是多接收线程的方式,提高了I/O请求的处理速率。尤其是对于处理并行I/O请求的情况,采用图1对应的方案时,会对并行I/O请求的处理速率造成比较大的限制,而采用本申请实施例中图2对应的方案时,由于采用的是多接收线程的方式,每个接收线程可以都能够对每一并行支路的I/O请求同时进行处理,从而较好地提升了并行I/O请求的处理速率,例如当读写组件为8线程时,并行I/O请求的处理速率为单接收线程时I/O请求的处理速率的6倍。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其它的附图。
图1为一种读/写操作的一种具体场景图;
图2位本申请实施例提供的一种具体场景图;
图3为本申请实施例提供的一种方法实施例的流程示意图;
图4为本申请实施例提供的一种装置实施例的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
为了更好地理解本申请实施例,下面首先对本申请实施例涉及的具体场景进行具体介绍。
本申请实施例中可以用于读写设备中,其中所述读写设备既包括终端侧设备,例如包括手机、平板电脑、台式机、笔记本等,也包括服务器侧设备,例如在计算存储分离的场景中,可以用于服务器的计算节点中。所述读写设备上创建有N个CPU进程,N大于或等于1,即相当于N个CPU进程被所述读写设备所打开。所述读写设备包括位于驱动层的虚拟磁盘和位于应用层的读写组件。其中,一个CPU进程指的是读写设备的一次运行活动,是系统进行资源分配和调度的基本单位,当读写设备上运行有至少一个应用程序时,可以针对每个应用程序分别创建对应的CPU进程。虚拟磁盘vrbd位于驱动层,包括多个共享缓存vring和每个共享缓存分别对应的描述表(descripttable),描述表用于记录对应的共享缓存的使用情况,共享缓存可以为环形的缓存。读写组件Tdc位于应用层,读写组件上可以创建有组件线程,组件线程能够从虚拟磁盘的共享缓存中读取数据,并且能够与本地或者远程的存储设备进行数据交互。其中,存储设备指的是具有存储功能的存储器、单个服务器、或者服务器集群等。
下面结合图1,对读/写操作的一种的常用实现方式进行说明。本申请实施例中的“/”符号用于表示或者。
读写设备上创建有N个CPU进程:CPU进程1、CPU进程2、…CPU进程N,N大于或等于1,该读写设备包括1个虚拟磁盘和1个读写组件,并且读写组件上创建有1个接收组件线程和至少1个发送组件线程。当一个或多个CPU进程具有读/写操作的需求时,该一个或多个CPU进程可以分别生成一个或多个I/O请求,并将生成的多个I/O请求依次发送至虚拟磁盘,其中I/O请求可以携带在软件上下文(software contexts)中。虚拟磁盘依次接收到CPU进程发送的多个I/O请求之后,可以将I/O请求存储在共享缓存中,其中,虚拟磁盘可以依次接收到1个CPU进程发送的多个IO请求,例如虚拟磁盘分3次接收到CPU进程1发送的3个I/O请求;或者虚拟磁盘也可以接收到多个CPU进程发送的多个I/O请求,例如虚拟磁盘分3次接收到CPU进程1发送的1个I/O请求和CPU进程2发送的2个I/O请求。
虚拟磁盘每次接收到I/O请求时,都会将接收到的I/O请求存储在共享缓存中,并生成一个事件通知发送至接收组件线程,该事件通知可以基于Linux系统的eventfd事件通知机制生成。例如,虚拟磁盘分3次接收到3个I/O请求,将该3个I/O请求存储在共享缓存中,并且会分别生成3个事件通知并发送至接收组件线程。接收组件线程每接收到一个事件通知,都会从共享缓存中读取I/O请求,例如,当接收组件线程分别接收到3个事件通知时,会分3次从共享缓存中读取到共3个I/O请求。接收组件线程每次接收到I/O请求时,都会将接收的I/O请求进行格式转换后,发送至存储设备,从而实现对存储设备的读/写操作。其中,接收组件线程可以采用异步发送的方式进行发送,即接收组件线程通过调用发送组件线程,将格式转换后的I/O请求发送至存储设备。
显然,上述实现方式中,由于接收组件线程需要每次都等待接收事件通知之后,才会读取共享缓存中存储的I/O请求,使得I/O请求在驱动层与应用层之间的传输延时较长,降低了存储设备的读/写操作的速度。并且,目前本领域中,由于不能很好地解决多线程并发冲突的问题(也就是说多线程时资源抢占问题不能很好地进行解决),因此采用的是单接收线程的方案,即读写组件创建一个接收组件线程,导致I/O请求的处理速率较低,尤其是对并行I/O请求的处理速率造成了较大的限制。此外,由于这种实现方式中I/O请求的传输延时较长,影响了读/写操作的速度,因此为使得读/写操作的速度在可接受的范围内,组件线程发送转换格式后的I/O请求时,通常采用的是异步发送的方式。然而异步发送的方式,不仅引入软件上下文切换的开销,而且需要进行线程切换从而造成CPU cache miss,影响cache利用率。
为了解决上述一个或多个技术问题,本申请实施例提供了一种数据读/写方法及相关装置,下面参考图2进行具体说明。
在本申请实施例中,读写设备上创建有N个CPU进程:CPU进程1、CPU进程2、…、CPU进程N,N大于或等于1。该读写设备包括至少一个虚拟磁盘和1个读写组件,并且读写组件上创建有多个组件线程,其中每个组件线程均为接收组件线程,即能够用于从共享缓存中读取I/O请求的组件线程。例如图2所示,该读写设备包括1个虚拟磁盘,每个虚拟磁盘包括M个共享缓存和M个共享缓存对应的M个描述表,读写组件上创建有M个组件线程,其中M大于1,每个共享缓存分别对应一个组件线程。该对应关系可以分别记录在虚拟磁盘中。需要说明的是,图2中以共享缓存和组件线程的对应方式为一对一为例,实际上本申请实施例中,共享缓存和组件线程的对应方式既可以是一对一,也可以是多对一,例如一个虚拟磁盘的多个共享缓存对应同一个组件线程,或者读写设备包括多个虚拟磁盘,多个虚拟磁盘中各有一个共享缓存对应同一个组件线程,本申请实施例对此并不加以限定。
下面以I/O请求在虚拟磁盘中的共享缓存1和组件线程1的传输过程为例进行说明,在其他共享缓存和组件线程的传输过程类似,具体不再赘述。
当一个或多个CPU进程具有读/写操作的需求时,该一个或多个CPU进程可以分别生成一个或多个I/O请求,并将生成的多个I/O请求依次发送至虚拟磁盘中,该多个I/O请求对应共享缓存1。其中I/O请求可以携带在软件上下文中。其中,虚拟磁盘初始化时,会初始化共享缓存和对应的描述表,同时根据CPU内核的个数确定CPU内核和共享缓存的映射关系,因此根据生成I/O请求的CPU进程在哪个CPU内核上执行,可以确定出对应的共享缓存。不同CPU进程可以在同一个CPU内核上执行,从而使得不同CPU进程生成的多个I/O请求对应同一个共享缓存。为了实现共享缓存以及组件线程充分的并行化处理,提高I/O请求的处理速率,可以将CPU进程的不同线程,在不同的CPU内核上执行。例如,CPU进程1的线程1,在CPU内核1或2上执行,CPU进程1的线程2,在CPU内核3或4上执行。
虚拟磁盘依次接收到CPU进程发送的对应共享缓存1的多个I/O请求之后,可以将多个I/O请求依次存储在虚拟磁盘的共享缓存1中,其中,虚拟磁盘可以依次接收到同一个CPU进程发送的多个IO请求;或者虚拟磁盘也可以依次接收到多个不同的CPU进程发送的多个I/O请求。
虚拟磁盘每次接收到I/O请求时,都会将接收到的IO请求存储在共享缓存1中,并且还可以每次都生成一个事件通知,并且将生成的事件通知发送至共享缓存1对应的组件线程1中,该事件通知可以基于Linux系统的eventfd事件通知机制生成。虚拟磁盘可以根据该虚拟磁盘上记录的共享缓存1与组件线程1的对应关系,确定出组件线程1,从而向组件线程1发送事件通知。其中,虚拟磁盘接收到对应共享缓存1的第一I/O请求时,生成第一事件通知。其中,第一I/O请求可以是对应共享缓存1的多个I/O请求中的任一个I/O请求,例如,第一I/O请求是共享缓存1的多个I/O请求中最先接收到的I/O请求。例如,虚拟磁盘分3次接收到3个对应共享缓存1的I/O请求,将该3个I/O请求存储在共享缓存1中,并且在第一次接收到对应共享缓存1的I/O请求时生成第一事件通知并发送至组件线程1,该第一次接收到的I/O请求即为第一I/O请求,其中虚拟磁盘还可以在第二次和第三次接收对应共享缓存1的I/O请求时,每次均生成一个事件通知并发送至组件线程1。其中需要说明的是,共享缓存1可以只对应组件线程1,即不与其他的组件线程相对应,因此不会将生成的事件通知发送至其他的组件线程,而组件线程1可以对应共享缓存1之外的其他共享缓存。
组件线程1接收到第一事件通知后,会循环执行第一操作,所述第一操作用于读取共享缓存1中未被读取过的I/O请求。例如,虚拟磁盘分3次接收到3个I/O请求,将该3个I/O请求存储在共享缓存1中,并在第一次接收到I/O请求时生成并发送第一事件通知,组件线程1接收到第一事件通知后,循环执行第一操作,其中第一次执行第一操作时从共享缓存1中读取到1个未被读取过的I/O请求,第二次执行第一操作时从共享缓存1中读取到2个未被读取过的I/O请求。其中,组件线程1在接收到第一事件通知时,确定出当前未在执行所述第一操作,因此循环执行第一操作。需要说明的是,虚拟磁盘可以向组件线程1发送多个事件通知,例如,在接收到第一I/O请求之后,所述虚拟磁盘接收到对应共享缓存1的第二I/O请求时,生成第二事件通知,将所述第二事件通知发送至组件线程1;组件线程1确定出当前正在执行所述第一操作,忽略所述第二事件通知,即不针对第二事件通知执行任何操作。
其中,组件线程1可以在检测到满足停止条件时,停止执行所述第一操作。例如,组件线程1在预设时间内未在所述共享缓存1中读取到未被读取过的I/O请求时,停止执行第一操作,直至收到新的事件通知。当组件线程1停止执行第一操作之后,虚拟磁盘再次接收到对应共享缓存1的多个I/O请求之后,还可以生成新的第一事件通知,并将该第一事件通知发送至组件线程1,组件线程1确定出当前未在执行第一操作,则再次循环执行第一操作。
组件线程1在每次执行所述第一操作时分别读取到一组I/O请求,在每次读取到一组I/O请求时,分别利用该组I/O请求,对所述存储设备执行数据读/写操作,即将该组I/O请求进行格式转换,即得到存储设备可识别的读/写请求后将其发送至存储设备。例如,第一次执行第一操作时读取到1个未被读取过的I/O请求,将该1个I/O请求进行格式转换后发送至存储设备,第二次执行第一操作时读取到2个未被读取过的I/O请求,将该2个I/O请求进行格式转换后发送至存储设备。其中既可以发送至本地的存储设备,也可以发送至远程的存储设备。例如利用远程过程调用(Remote Procedure Call,RPC)技术发送至远程的存储设备。存储设备接收到格式转换后的I/O请求后,根据该请求进行读/写操作。
显然,本申请实施例中,组件线程1不需要每次都等待接收事件通知,才读取共享缓存中未被读取过的I/O请求,而是在接收到第一事件通知后,通过循环执行第一操作即能获得共享缓存中不断存储的I/O请求,即采用了轮询(Polling)机制,因此减少了I/O请求在驱动层与应用层之间的传输延时,其中I/O请求在每个组件线程1和虚拟磁盘之间的传输延时能够减少50%左右,从而提高存储设备的读/写操作的速度。
并且,本申请实施例采用的是多接收线程的方式,提高了I/O请求的处理速率。尤其是对于处理并行I/O请求的情况,采用图1对应的方案时,会对并行I/O请求的处理速率造成比较大的限制,而采用本申请实施例中图2对应的方案时,由于采用的是多接收线程的方式,每个接收线程可以都能够对每一并行支路的I/O请求同时进行处理,从而较好地提升了并行I/O请求的处理速率,例如当读写组件为8线程时,并行I/O请求的处理速率为单接收线程时I/O请求的处理速率的6倍。
而且,每个共享缓存可以分别只对应1个组件线程,例如共享缓存1只对应组件线程1,而不对应的其他组件线程,因此使得每个组件线程对I/O请求的处理(包括I/O请求的收/发等操作)在本线程内完成,不需要调用其他的线程,因此解决了多线程时对共享缓存的存储资源以及组件线程的内部资源抢占的问题,从而很好地解决了多线程并发冲突的问题。
此外,由于本申请实施例中I/O请求的传输延时较低,因此可以采用同步发送的方式,即将组件线程1将转换格式后的I/O请求不经过其他线程,直接发送至存储设备,因此不需要引入软件上下文切换的开销,无需进行线程切换从而不会造成CPU cache miss,提高了cache利用率。
下面对本申请实施例提供的读/写方法的具体实施例进行详细说明。
请参阅图3,本申请提供了数据读/写方法的一种实施例。本实施例用于读写设备中,所述读写设备包括位于驱动层的虚拟磁盘和位于应用层的读写组件,所述虚拟磁盘包括第一共享缓存,所述读写组件上创建有第一组件线程,所述读写设备上创建有至少一个CPU进程。以图2为例,所述第一共享缓存可以为共享缓存1,第一组件线程可以为组件线程1。
本实施例的所述方法包括:
S301:所述虚拟磁盘依次接收所述至少一个CPU进程发送的对应所述第一共享缓存多个I/O请求,将接收的多个I/O请求依次存储在所述虚拟磁盘的第一共享缓存。
例如图2中,虚拟磁盘依次接收到至少一个CPU进程发送的对应共享缓存1的多个I/O请求之后,可以将接收的I/O请求存储在共享缓存1中,其中,虚拟磁盘可以依次接收到同一个CPU进程发送的多个IO请求;或者虚拟磁盘也可以依次接收到多个不同的CPU进程发送的多个I/O请求。
在一种可选的实施例中,将所述多个输入/输出请求依次存储在所述第一共享缓存之前,还包括:所述虚拟磁盘确定出执行所述CPU进程的当前CPU内核;根据所述当前CPU内核与所述第一共享缓存的映射关系,确定出所述第一共享缓存。
S302:所述第一虚拟磁盘接收到对应所述第一共享缓存的第一I/O请求时,生成第一事件通知,将所述第一事件通知发送至所述第一组件线程。
例如图2中,虚拟磁盘每次接收到I/O请求时,可以每次都生成一个事件通知并将生成的各个事件通知发送至组件线程1,其中,第一I/O请求可以是对应第一共享缓存的多个I/O请求中最先接收到的I/O请求,例如,在第一次接收I/O请求时生成第一事件通知并将该事件通知发送至组件线程1中。在接收第一I/O请求之后,接收到对应第一共享缓存的第二I/O请求时,生成第二事件通知,将所述第二事件通知发送至所述第一组件线程。
在一种可选的实施例中,所述第一虚拟磁盘上记录有所述第一共享缓存与所述第一组件线程的对应关系;将所述第一事件通知发送至所述第一组件线程之前,所述方法还包括:所述虚拟磁盘根据所述对应关系,确定出所述第一共享缓存对应的第一组件线程。
S303:所述第一组件线程接收所述第一事件通知,循环执行第一操作,所述第一操作用于读取所述第一共享缓存中未被读取过的I/O请求。
例如图2中,虚拟磁盘分3次接收到3个I/O请求,将该3个I/O请求存储在共享缓存1中,组件线程1接收到第一事件通知后,循环执行第一操作,第一次执行第一操作时从共享缓存中读取到1个未被读取过的I/O请求,第二次执行第一操作时从共享缓存中读取到2个未被读取过的I/O请求。当组件线程1接收到第二事件通知后,确定出当前正在执行所述第一操作,忽略所述第二事件通知。
在一种可选的实施例中,所述第一组件线程可以检测到满足停止条件时,停止执行所述第一操作。所述停止条件包括但不限于:在预设时间内未在所述共享缓存中读取到未被读取过的I/O请求。
S304:所述第一组件线程根据循环执行所述第一操作所读取的I/O请求,对所述存储设备执行数据读/写操作。
在一种可选的实施例中,所述第一组件线程每次执行所述第一操作时分别读取到一组I/O请求,当每次读取到一组I/O请求时,利用该组I/O请求,对所述存储设备执行数据读/写操作,例如将该组I/O请求中的每个I/O请求进行格式转换后,发送至存储设备。其中,第一组件线程可以通过同步发送方式将所述格式转换后的I/O请求发送至所述存储设备。
通过上述技术方案可知,本申请实施例中,驱动层的虚拟磁盘依次接收对应所述第一共享缓存的多个I/O请求,将所述多个I/O请求存储在所述第一共享缓存,并且在接收到对应所述第一共享缓存的第一I/O请求时向第一组件线程发送第一事件通知,第一组件线程接收到第一事件通知后,循环执行第一操作,即循环读取所述共享缓存中未被读取过的I/O请求,并根据读取到的I/O请求执行数据读/写操作,可见,本申请实施例中第一组件线程不需要每次都等待接收事件通知,才读取第一共享缓存中未被读取过的I/O请求,而是在接收到第一事件通知后,通过循环执行第一操作即能获得第一共享缓存中不断存储的I/O请求,因此减少了I/O请求在驱动层与应用层之间的传输延时,从而提高存储设备的读/写操作的速度。
在一种可选的实施例中,所述虚拟磁盘还包括第二共享缓存,所述读写组件上还创建有第二组件线程。所述方法还包括:所述虚拟磁盘依次接收所述CPU进程发送的对应所述第二共享缓存的多个I/O请求,将对应所述第二共享缓存的多个I/O请求依次存储在所述第二共享缓存;所述第二虚拟磁盘接收到对应所述第二共享缓存的第三I/O请求时生成第三事件通知,将所述第三事件通知发送至所述第二组件线程;所述第二组件线程接收所述第三事件通知,循环执行第二操作,所述第二操作用于读取所述第二共享缓存中未被读取过的I/O请求;所述第二组件线程根据循环执行所述第二操作所读取的I/O请求,对所述存储设备执行数据读/写操作。例如图2所示,第二共享缓存可以为图2中的共享缓存2,第二组件线程可以为图2中的组件线程2,对I/O请求的传输过程可以参照I/O请求在共享缓存1和组件线程1之间的传输过程,这里不再赘述。
可见,本申请实施例通过多接收线程的方式,提高了I/O请求的处理速率。尤其是对于处理并行I/O请求的情况,采用图1对应的方案时,会对并行I/O请求的处理速率造成比较大的限制,而采用本申请实施例中图2对应的方案时,由于采用的是多接收线程的方式,每个接收线程可以都能够对每一并行支路的I/O请求同时进行处理,从而较好地提升了并行I/O请求的处理速率,例如当读写组件为8线程时,并行I/O请求的处理速率为单接收线程时I/O请求的处理速率的6倍。
对应上述方法实施例,本申请还提供了对应的装置实施例。下面具体说明。
请参阅图4,本申请提供了读写设备的一种装置实施例,包括:处理器401、位于驱动层的虚拟磁盘402和位于应用层的读写组件402,所述虚拟磁盘包括第一共享缓存,所述读写组件403上创建有第一组件线程。
处理器401,用于创建至少一个CPU进程;
所述虚拟磁盘402用于依次接收所述CPU进程发送的对应所述第一共享缓存的多个输入/输出请求,将所述多个输入/输出请求依次存储在所述第一共享缓存,其中,接收到对应所述第一共享缓存的第一输入/输出请求时,生成第一事件通知,将所述第一事件通知发送至所述第一组件线程;
所述第一组件线程用于接收所述第一事件通知,循环执行第一操作,所述第一操作用于读取所述第一共享缓存中未被读取过的输入/输出请求,所述第一组件线程还用于根据循环执行所述第一操作所读取的输入/输出请求,对所述存储设备执行数据读/写操作。
可选的,所述虚拟磁盘还用于接收到对应所述第一共享缓存的第二输入/输出请求时,生成第二事件通知,将所述第二事件通知发送至所述第一组件线程;
所述第一组件线程还用于确定出当前正在执行所述第一操作,忽略所述第二事件通知。
可选的,所述第一组件线程还用于检测到满足停止条件时,停止执行所述第一操作;所述停止条件包括:在预设时间内未在所述第一共享缓存中读取到未被读取过的输入/输出请求。
可选的,所述虚拟磁盘还包括第二共享缓存,所述读写组件上还创建有第二组件线程;
所述虚拟磁盘还用于,依次接收所述CPU进程发送的对应所述第二共享缓存的多个输入/输出请求,将所述对应所述第二共享缓存的多个输入/输出请求依次存储在所述第二共享缓存,其中,接收到对应所述第二共享缓存的第三输入/输出请求时,生成第三事件通知,将所述第三事件通知发送至所述第二组件线程;
所述第二组件线程用于,接收所述第三事件通知,循环执行第二操作,所述第二操作用于读取所述第二共享缓存中未被读取过的输入/输出请求;
所述第二组件线程还用于根据循环执行所述第二操作所读取的输入/输出请求,对所述存储设备执行数据读/写操作。
可选的,所述虚拟磁盘上记录有所述第一共享缓存与所述第一组件线程的对应关系;
所述虚拟磁盘还用于根据所述对应关系,确定出所述第一共享缓存对应的第一组件线程。
可选的,所述虚拟磁盘还用于,确定出执行所述CPU进程的当前CPU内核,根据所述当前CPU内核与所述第一共享缓存的映射关系,确定出所述第一共享缓存。
可选的,当根据循环执行所述第一操作所读取的输入/输出请求,对所述存储设备执行数据读/写操作时,所述第一组件线程具体用于,每次执行所述第一操作时分别读取到一组输入/输出请求,当每次读取到一组输入/输出请求时,利用该组输入/输出请求,对所述存储设备执行数据读/写操作。
可选的,当根据循环执行所述第一操作所读取的输入/输出请求,对所述存储设备执行数据读/写操作时,所述第一组件线程具体用于,所述第一组件线程对循环执行所述第一操作所读取的输入/输出请求进行格式转换,并将格式转换后的输入/输出请求发送至所述存储设备。
可选的,所述将格式转换后的输入/输出请求发送至所述存储设备时,所述读写设备具体用于,通过同步发送方式将所述格式转换后的输入/输出请求发送至所述存储设备。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,物流管理服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (18)

1.一种数据读/写方法,其特征在于,所述方法包括:
读写设备上位于驱动层的虚拟磁盘依次接收所述读写设备上创建的至少一个CPU进程发送的对应第一共享缓存的多个输入/输出请求,将所述多个输入/输出请求依次存储在所述第一共享缓存,所述虚拟磁盘包括所述第一共享缓存;
所述虚拟磁盘接收到对应所述第一共享缓存的第一输入/输出请求时,生成第一事件通知,将所述第一事件通知发送至第一组件线程;所述第一组件线程为读写组件上创建的线程,所述读写组件位于所述读写设备的应用层;
所述第一组件线程接收所述第一事件通知,循环执行第一操作,所述第一操作用于读取所述第一共享缓存中未被读取过的输入/输出请求;
所述第一组件线程根据循环执行所述第一操作所读取的输入/输出请求,对所述存储设备执行数据读/写操作。
2.根据权利要求1所述的方法,其特征在于,所述虚拟磁盘接收到对应所述第一共享缓存的第一输入/输出请求之后,还包括:
所述虚拟磁盘接收到对应所述第一共享缓存的第二输入/输出请求时,生成第二事件通知,将所述第二事件通知发送至所述第一组件线程;
所述第一组件线程确定出当前正在执行所述第一操作,忽略所述第二事件通知。
3.根据权利要求1所述的方法,其特征在于,还包括:
所述第一组件线程检测到满足停止条件时,停止执行所述第一操作;所述停止条件包括:在预设时间内未在所述第一共享缓存中读取到未被读取过的输入/输出请求。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述虚拟磁盘依次接收所述CPU进程发送的对应第二共享缓存的多个输入/输出请求,将所述对应所述第二共享缓存的多个输入/输出请求依次存储在所述第二共享缓存,所述虚拟磁盘包括所述第二共享缓存;
所述虚拟磁盘接收到对应所述第二共享缓存的第三输入/输出请求时,生成第三事件通知,将所述第三事件通知发送至第二组件线程,所述第二组件线程为所述读写组件上创建的线程;
所述第二组件线程接收所述第三事件通知,循环执行第二操作,所述第二操作用于读取所述第二共享缓存中未被读取过的输入/输出请求;
所述第二组件线程根据循环执行所述第二操作所读取的输入/输出请求,对所述存储设备执行数据读/写操作。
5.根据权利要求1或4所述的方法,其特征在于,所述虚拟磁盘上记录有所述第一共享缓存与所述第一组件线程的对应关系;将所述第一事件通知发送至所述第一组件线程之前,所述方法还包括:
所述虚拟磁盘根据所述对应关系,确定出所述第一共享缓存对应的第一组件线程。
6.根据权利要求1所述的方法,其特征在于,
将所述多个输入/输出请求依次存储在所述第一共享缓存之前,还包括:
所述虚拟磁盘确定出执行所述CPU进程的当前CPU内核;
所述虚拟磁盘根据所述当前CPU内核与所述第一共享缓存的映射关系,确定出所述第一共享缓存。
7.根据权利要求1所述的方法,其特征在于,所述第一组件线程根据循环执行所述第一操作所读取的输入/输出请求,对所述存储设备执行数据读/写操作,包括:
所述第一组件线程每次执行所述第一操作时分别读取到一组输入/输出请求,当每次读取到一组输入/输出请求时,利用该组输入/输出请求,对所述存储设备执行数据读/写操作。
8.根据权利要求1所述的方法,其特征在于,所述第一组件线程根据循环执行所述第一操作所读取的输入/输出请求,对所述存储设备执行数据读/写操作,包括:
所述第一组件线程对循环执行所述第一操作所读取的输入/输出请求进行格式转换,并将格式转换后的输入/输出请求发送至所述存储设备。
9.根据权利要求8所述的方法,其特征在于,所述将格式转换后的输入/输出请求发送至所述存储设备,包括:
通过同步发送方式将所述格式转换后的输入/输出请求发送至所述存储设备。
10.一种读写设备,其特征在于,包括:处理器、位于驱动层的虚拟磁盘和位于应用层的读写组件,所述虚拟磁盘包括第一共享缓存,所述读写组件上创建有第一组件线程;其中:
所述处理器,用于创建至少一个CPU进程;
所述虚拟磁盘用于依次接收所述CPU进程发送的对应所述第一共享缓存的多个输入/输出请求,将所述多个输入/输出请求依次存储在所述第一共享缓存,其中,接收到对应所述第一共享缓存的第一输入/输出请求时,生成第一事件通知,将所述第一事件通知发送至所述第一组件线程;
所述第一组件线程用于接收所述第一事件通知,循环执行第一操作,所述第一操作用于读取所述第一共享缓存中未被读取过的输入/输出请求,所述第一组件线程还用于根据循环执行所述第一操作所读取的输入/输出请求,对所述存储设备执行数据读/写操作。
11.根据权利要求9所述的读写设备,其特征在于,所述虚拟磁盘还用于接收到对应所述第一共享缓存的第二输入/输出请求时,生成第二事件通知,将所述第二事件通知发送至所述第一组件线程;
所述第一组件线程还用于确定出当前正在执行所述第一操作,忽略所述第二事件通知。
12.根据权利要求9所述的读写设备,其特征在于,
所述第一组件线程还用于检测到满足停止条件时,停止执行所述第一操作;所述停止条件包括:在预设时间内未在所述第一共享缓存中读取到未被读取过的输入/输出请求。
13.根据权利要求9所述的读写设备,其特征在于,所述虚拟磁盘还包括第二共享缓存,所述读写组件上还创建有第二组件线程;
所述虚拟磁盘还用于,依次接收所述CPU进程发送的对应所述第二共享缓存的多个输入/输出请求,将所述对应所述第二共享缓存的多个输入/输出请求依次存储在所述第二共享缓存,其中,接收到对应所述第二共享缓存的第三输入/输出请求时,生成第三事件通知,将所述第三事件通知发送至所述第二组件线程;
所述第二组件线程用于,接收所述第三事件通知,循环执行第二操作,所述第二操作用于读取所述第二共享缓存中未被读取过的输入/输出请求;
所述第二组件线程还用于根据循环执行所述第二操作所读取的输入/输出请求,对所述存储设备执行数据读/写操作。
14.根据权利要求9或13所述的读写设备,其特征在于,所述虚拟磁盘上记录有所述第一共享缓存与所述第一组件线程的对应关系;
所述虚拟磁盘还用于根据所述对应关系,确定出所述第一共享缓存对应的第一组件线程。
15.根据权利要求9所述的读写设备,其特征在于,所述虚拟磁盘还用于,确定出执行所述CPU进程的当前CPU内核,根据所述当前CPU内核与所述第一共享缓存的映射关系,确定出所述第一共享缓存。
16.根据权利要求9所述的读写设备,其特征在于,当根据循环执行所述第一操作所读取的输入/输出请求,对所述存储设备执行数据读/写操作时,所述第一组件线程具体用于,每次执行所述第一操作时分别读取到一组输入/输出请求,当每次读取到一组输入/输出请求时,利用该组输入/输出请求,对所述存储设备执行数据读/写操作。
17.根据权利要求9所述的读写设备,其特征在于,当根据循环执行所述第一操作所读取的输入/输出请求,对所述存储设备执行数据读/写操作时,所述第一组件线程具体用于,所述第一组件线程对循环执行所述第一操作所读取的输入/输出请求进行格式转换,并将格式转换后的输入/输出请求发送至所述存储设备。
18.根据权利要求9所述的读写设备,其特征在于,所述将格式转换后的输入/输出请求发送至所述存储设备时,所述读写设备具体用于,通过同步发送方式将所述格式转换后的输入/输出请求发送至所述存储设备。
CN201810020020.3A 2018-01-09 2018-01-09 一种数据读/写方法及相关装置 Active CN110018782B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810020020.3A CN110018782B (zh) 2018-01-09 2018-01-09 一种数据读/写方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810020020.3A CN110018782B (zh) 2018-01-09 2018-01-09 一种数据读/写方法及相关装置

Publications (2)

Publication Number Publication Date
CN110018782A true CN110018782A (zh) 2019-07-16
CN110018782B CN110018782B (zh) 2022-06-17

Family

ID=67187812

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810020020.3A Active CN110018782B (zh) 2018-01-09 2018-01-09 一种数据读/写方法及相关装置

Country Status (1)

Country Link
CN (1) CN110018782B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111399781A (zh) * 2020-04-21 2020-07-10 中国科学院光电技术研究所 一种提高实时图像记录系统可靠性的存储方法
CN116069246A (zh) * 2022-11-30 2023-05-05 北京天融信网络安全技术有限公司 用于虚拟机的数据读写方法及系统

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070067573A1 (en) * 2005-09-20 2007-03-22 Bruening Derek L Thread-shared software code caches
US20110225372A1 (en) * 2009-04-27 2011-09-15 Lsi Corporation Concurrent, coherent cache access for multiple threads in a multi-core, multi-thread network processor
US20110289180A1 (en) * 2009-04-27 2011-11-24 Lsi Corporation Data caching in a network communications processor architecture
CN103365796A (zh) * 2012-04-05 2013-10-23 西门子公司 通过优化缓存重用在多处理器共享存储器系统上体积绘制
US20140177634A1 (en) * 2012-12-24 2014-06-26 Huawei Technologies Co., Ltd. Software defined network-based data processing method, node, and system
CN104662528A (zh) * 2012-08-07 2015-05-27 谷歌公司 媒体内容接收装置及利用社交网络和社交圈的媒体内容的分配
CN105354046A (zh) * 2015-09-15 2016-02-24 深圳市深信服电子科技有限公司 基于共享磁盘的数据库更新处理方法及系统
CN105630576A (zh) * 2015-12-23 2016-06-01 华为技术有限公司 一种虚拟化平台中的数据处理方法及装置
US20170091089A1 (en) * 2015-09-28 2017-03-30 Ikanos Communications, Inc. Reducing shared cache requests and preventing duplicate entries
US20170185401A1 (en) * 2014-09-19 2017-06-29 Huawei Technologies Co., Ltd. Data read/write method and apparatus, storage device, and computer system
CN107102897A (zh) * 2016-02-23 2017-08-29 深圳市知穹科技有限公司 一种多gpu并行处理的数据库主动防御方法

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070067573A1 (en) * 2005-09-20 2007-03-22 Bruening Derek L Thread-shared software code caches
US20110225372A1 (en) * 2009-04-27 2011-09-15 Lsi Corporation Concurrent, coherent cache access for multiple threads in a multi-core, multi-thread network processor
US20110289180A1 (en) * 2009-04-27 2011-11-24 Lsi Corporation Data caching in a network communications processor architecture
CN103365796A (zh) * 2012-04-05 2013-10-23 西门子公司 通过优化缓存重用在多处理器共享存储器系统上体积绘制
CN104662528A (zh) * 2012-08-07 2015-05-27 谷歌公司 媒体内容接收装置及利用社交网络和社交圈的媒体内容的分配
US20140177634A1 (en) * 2012-12-24 2014-06-26 Huawei Technologies Co., Ltd. Software defined network-based data processing method, node, and system
US20170185401A1 (en) * 2014-09-19 2017-06-29 Huawei Technologies Co., Ltd. Data read/write method and apparatus, storage device, and computer system
CN105354046A (zh) * 2015-09-15 2016-02-24 深圳市深信服电子科技有限公司 基于共享磁盘的数据库更新处理方法及系统
US20170091089A1 (en) * 2015-09-28 2017-03-30 Ikanos Communications, Inc. Reducing shared cache requests and preventing duplicate entries
CN105630576A (zh) * 2015-12-23 2016-06-01 华为技术有限公司 一种虚拟化平台中的数据处理方法及装置
CN107102897A (zh) * 2016-02-23 2017-08-29 深圳市知穹科技有限公司 一种多gpu并行处理的数据库主动防御方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
邸瑞华等: "应用驱动的并行程序性能优化研究", 《计算机科学》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111399781A (zh) * 2020-04-21 2020-07-10 中国科学院光电技术研究所 一种提高实时图像记录系统可靠性的存储方法
CN111399781B (zh) * 2020-04-21 2023-09-19 中国科学院光电技术研究所 一种提高实时图像记录系统可靠性的存储方法
CN116069246A (zh) * 2022-11-30 2023-05-05 北京天融信网络安全技术有限公司 用于虚拟机的数据读写方法及系统
CN116069246B (zh) * 2022-11-30 2023-08-29 北京天融信网络安全技术有限公司 用于虚拟机的数据读写方法及系统

Also Published As

Publication number Publication date
CN110018782B (zh) 2022-06-17

Similar Documents

Publication Publication Date Title
EP3718008B1 (en) Provisioning using pre-fetched data in serverless computing environments
US8949847B2 (en) Apparatus and method for managing resources in cluster computing environment
CN102831156B (zh) 一种云计算平台上的分布式事务处理方法
US8996469B2 (en) Methods and apparatus for job state tracking in cluster computing
US8943294B2 (en) Software architecture for service of collective memory and method for providing service of collective memory using the same
US9804889B2 (en) Methods and apparatus for state objects in cluster computing
US7484048B2 (en) Conditional message delivery to holder of locks relating to a distributed locking manager
CN113641457A (zh) 容器创建方法、装置、设备、介质及程序产品
EP1783609A1 (en) Processing management device, computer system, distributed processing method, and computer program
CN101150485A (zh) 一种零拷贝缓冲区队列网络数据发送的管理方法
CN109697120A (zh) 用于应用迁移的方法、电子设备
CN102662775A (zh) 一种进程通信方法和装置
CN104243617A (zh) 一种异构集群中面向混合负载的任务调度方法及系统
CN102662740A (zh) 非对称多核系统及其实现方法
CN110489225A (zh) 一种基于消息队列的服务扩容方法、装置及设备
US11422858B2 (en) Linked workload-processor-resource-schedule/processing-system—operating-parameter workload performance system
WO2024016596A1 (zh) 容器集群调度的方法、装置、设备及存储介质
CN110704465A (zh) 一种处理业务工单表的方法、装置及存储介质
CN110018782A (zh) 一种数据读/写方法及相关装置
CN105653347B (zh) 一种服务器、资源管理方法及虚拟机管理器
CN112835703B (zh) 任务处理方法、装置、设备及存储介质
EP1768024B1 (en) Processing management device, computer system, distributed processing method, and computer program
CN101634956B (zh) 多核处理器消息调度方法及调度器
CN111984393A (zh) 分布式大规模实时数据调度引擎系统及其数据调度方法
CN112052104A (zh) 基于多机房实现的消息队列的管理方法及电子设备

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40010945

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant