CN106462525A - 使用远程直接内存访问(rdma)复制数据 - Google Patents

使用远程直接内存访问(rdma)复制数据 Download PDF

Info

Publication number
CN106462525A
CN106462525A CN201480079789.2A CN201480079789A CN106462525A CN 106462525 A CN106462525 A CN 106462525A CN 201480079789 A CN201480079789 A CN 201480079789A CN 106462525 A CN106462525 A CN 106462525A
Authority
CN
China
Prior art keywords
data
address
virtual address
rdma
synch command
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.)
Withdrawn
Application number
CN201480079789.2A
Other languages
English (en)
Inventor
道格拉斯·L·弗格特
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.)
Hewlett Packard Development Co LP
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
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 Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of CN106462525A publication Critical patent/CN106462525A/zh
Withdrawn legal-status Critical Current

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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2206/00Indexing scheme related to dedicated interfaces for computers
    • G06F2206/10Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
    • G06F2206/1014One time programmable [OTP] memory, e.g. PROM, WORM
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

示例实现方式涉及使用远程直接内存访问(RDMA)复制数据。在示例实现方式中,可响应于映射命令而注册地址。可使用RDMA复制数据。

Description

使用远程直接内存访问(RDMA)复制数据
背景技术
应用程序可以使用虚拟地址从易失性高速缓存读取数据并且将数据写入易失性高速缓存。写入易失性高速缓存的数据的主副本可以存储在本地非易失性存储器中。由应用程序使用的虚拟地址可以与本地非易失性存储器的相应物理地址对应。
附图说明
以下详细说明参考附图,其中
图1是包括编码有响应于映射命令而注册地址的指令的机器可读存储介质的示例装置的框图;
图2是包括编码有使恢复点目标能够实施的指令的机器可读存储介质的示例装置的框图;
图3是包括编码有使能够跟踪数据远同步的完成的指令的机器可读存储介质的示例装置框图;
图4是响应于映射命令而使地址能够注册的示例系统的框图;
图5是用于实施一顺序的示例系统的框图,其中数据以该顺序在远程存储实体中复制。
图6是用于数据远程同步的示例系统的框图。
图7是用于为远程直接内存访问注册地址的示例方法的流程图。
图8是用于在远程存储实体中复制数据的示例方法的流程图;以及
图9是用于实施恢复点目标的示例方法的流程图。
具体实施方式
在应用程序服务器上运行的应用程序可以将数据写入易失性高速缓存,并且将数据的本地副本存储在应用程序服务器的非易失性存储器中。数据的远程副本可以存储在远程位置(诸如存储服务器)的非易失性存储器中。使用远程直接内存访问(RDMA),数据可以从应用程序服务器传输到远程服务器。RDMA可以减少CPU在数据传输方面的开销,但是与内存访问相比,可能具有长的等待时间。每次启动RDMA,就会产生数据的本地副本,并且在将附加数据写入易失性高速缓存之前等待将要完成的RDMA,与通过使用RDMA进行数据传输节省的时间和资源相比,会消耗更多的时间和资源。鉴于以上所述,本发明的公开提供:响应于映射命令而注册地址,减少RDMA的等待时间。此外,本发明的公开在启动RDMA之前,使应用程序能够累积来自多个本地写入操作的数据,减少用于将数据传输到远程位置的RDMA的数量。
现在参考附图,图1是包括编码有响应于映射命令而注册地址的指令的机器可读存储介质的示例装置100的框图。如本文所使用的,术语“包含”、“具有”、以及“包括”是可互换的并且应该被理解为具有相同的含义。在一些实现方式中,装置100可以操作为应用程序服务器和/或可以是应用程序服务器的一部分。在图1中,装置100包括处理器102和机器可读存储介质104。
处理器102可以包括中央处理单元(CPU)、微处理器(例如,基于半导体的微处理器),和/或其它适于获取和/或执行存储在机器可读存储介质104中的指令的其它硬件器件。处理器102可以提取、解码和/或执行指令106、108和110。作为获取和/或执行指令的可替代方案或者除了获取和/或执行指令之外,处理器102可以包括电子电路,该电子电路包括用于执行指令106、108和/或110的功能的电子部件。
机器可读存储介质104可以是任何合适的电子的、磁性的、光学的、或者其它包含或存储可执行指令的物理存储装置。因此,机器可读存储介质104可以包括,例如,RAM、电可擦除可编程只读存储器(EEPROM)、存储装置、光盘等。在一些实现方式中,机器可存储介质104可以包括非瞬态存储介质,其中术语“非瞬态”不包括瞬态传播的信号。如在下面详细描述的,机器可读存储介质104可以编码有一组可执行指令106、108和110。
指令106可以响应于映射命令而注册由映射命令指定的多个第一虚拟地址。映射命令可以由在应用程序服务器上运行的应用程序发出,并且可以促使多个第一虚拟地址中的每一个第一虚拟地址被分配到应用程序服务器的非易失性存储器(NVM)的相应物理地址。如本文所使用的,术语“非易失性存储器”(缩写为“NVM”),应该被理解为指的是即使没有供电也会保留存储的数据的存储器。应用程序可以使用多个第一虚拟地址来访问在应用程序服务器的易失性存储器上的数据。应用程序写入到多个第一虚拟地址中的一个第一虚拟地址的数据也可以写入到与应用程序服务器的NVM的相应物理地址对应的位置,以使万一应用程序服务器断电,也可以获得数据的本地副本。
数据副本也可以在远程存储实体中产生,以使在数据的本地副本损坏或丢失的情况下可以获得数据副本。如在本文中所使用的,术语“远程存储实体”应该被理解为指的是存储数据且不同于发出映射命令的实体的实体。例如,映射命令可以来自应用程序服务器,其可以包括其中数据副本可以本地存储的NVM。数据副本也可以存储在远程存储实体的NVM中,其可以是存储服务器。在远程存储实体中存储数据副本的动作在本文中指的是“复制数据”。
注册多个第一虚拟地址会导致多个第一地址被传送到远程存储实体,其会生成要被用于远程存储实体的NVM的RDMA的多个第二虚拟地址。RDMA可以用于将数据传输到远程存储实体,使得用于复制数据的CPU开销可以被最小化。在一些实现方式中,多个第二虚拟地址可以由远程存储实体上的网络适配器生成。在一些实现方式中,多个第二虚拟地址可以由本地网络适配器(例如在应用程序服务器上)生成。网络适配器可以针对每个映射命令而生成虚拟地址的单独集合。虽然注册了多个第一虚拟地址,但是多个第一虚拟地址以及远程存储实体的NVM的数据复制在其中的地址可以被固定,以防止操作系统(OS)修改或移动存储在那些地址处的数据。
可以由在应用程序服务器上运行的应用程序发出同步命令。存储在由同步命令指定的虚拟地址处的数据在本文中指的是与同步命令“相关联”。响应于同步命令,与同步命令相关联的数据可以存储在应用程序服务器的NVM中。例如,响应于同步命令,应用程序服务器上的易失性高速缓存或者缓冲器可以被刷新到应用程序服务器的NVM,使得在易失性高速缓存/缓冲器中的数据的本地副本可以在应用程序服务器的NVM中被创建。在一些实现方式中,同步命令可以指定多个虚拟地址、虚拟地址范围或者多个虚拟地址范围。每个同步命令可以包括相应同步命令中的最后地址的端部处的边界指示。
尽管与同步命令相关联的数据在执行同步命令之后可以被立即复制,但是如果在远程存储实体中复制与同步命令相关联的数据之前执行多个同步命令,则资源(例如,用于注册地址和建立RDMA连接的时间和处理能力)可能被更加有效地使用。指令108可以识别与指定多个第一虚拟地址中的任意第一虚拟地址的多个同步命令相关联的数据。在一些实现方式中,指令108可以将与多个同步命令相关联的数据复制到用于累积要被复制的数据的数据结构。在一些实现方式中,指令108可以设定在页面表中的页面的复制位元,其包括与任意多个同步命令相关联的数据。
在与多个同步命令相关联的数据被复制之前,多个同步命令可都被执行(例如,与多个同步命令相关联的数据可以被复制到应用程序服务器上的NVM)。与多个同步命令相关联的数据可以响应于远程同步命令(rsync)而被复制。远程同步命令可以促使复制与在先前远程同步命令之后发出的任意同步命令相关联的所有数据。如果应用程序服务器上没有完成同步命令的执行(例如,如果响应于同步命令而从应用程序服务器的易失性高速缓存刷新的数据还没有到达应用程序服务器的NVM),则应用程序服务器不会将远程同步命令传送到远程存储实体;应用程序服务器可以等待,直到在传送远程同步命令之前已经完成所有未完成的同步命令的执行。执行远程同步命令可以产生应用程序一致性点,在该一致性点处,在易失性存储器中的数据的最新副本存在于本地NVM(例如,应用程序服务器的NVM)中以及存在于远程NVM(例如,存储服务器的NVM)中。响应于远程同步命令,远程存储实体的易失性高速缓存/缓冲器可以被刷新到远程存储实体的NVM。
指令110响应于远程同步命令,可以发起远程直接内存访问(RDMA)以根据多个同步命令中的边界指示而在远程存储实体中复制识别的数据。在数据结构用于累积要被复制的数据的实现方式中,远程同步命令可以促使数据结构中的数据使用RDMA传输到远程存储实体。在使用复制位元的实现方式中,远程同步命令可以促使在其相应的复制位元被设定的页面中的数据使用RDMA传输到远程存储实体。复制位元在这种数据传输之后可以被重新设定。在一些实现方式中,多个RDMA可以用于将所识别的数据传输到远程存储实体。
识别的数据可以利用多个第二虚拟地址中的虚拟地址进行传输,这些虚拟地址用于确定识别的数据复制到远程存储实体中的哪个位置处。多个同步命令中的边界指示可以用于,在RDMA期间以与通过多个同步命令分组的多个第一虚拟地址中的各地址相同的方式分组这些虚拟地址。因此,边界指示用于确保识别的数据在远程存储实体中以与在应用程序服务器的NVM中的相同方式被分组(即,识别的数据的远程副本等同于应用程序服务器上的本地副本)。在一些实现方式中,识别的数据可以在远程存储实体的基于忆阻器的NVM中复制。例如,识别的数据可以在存储服务器上的电阻式随机存取存储器(ReRAM)中复制。
在一些实现方式中,在下一个远程同步命令被传送到远程存储实体之前,RDMA可用于复制数据,其与第一远程同步命令之后发出的同步命令相关联。与第一远程同步命令和第二远程同步命令之间发出的同步命令相关联的且在第二远程同步命令传送到远程存储实体之前复制的数据,可以被跟踪,从而确保响应于第二远程同步命令,这种数据不被再次传输到远程存储实体。例如,这种数据不会被复制到上面关于指令108所论述的数据结构,或者不会设定包括这种数据的页面的复制位元。
图2是包括编码有使恢复点目标能够实施的指令的机器可读存储介质的示例装置200的框图。在一些实现方式中,装置200可以操作为应用程序服务器和/或可以是应用程序服务器的一部分。在图2中,装置200包括处理器202和机器可读存储介质204。
与图1的处理器102一样,处理器202可以包括CPU、微处理器(例如,基于半导体的微处理器),和/或适于获取和/或执行存储在机器可读存储介质204中的指令的其它硬件器件。处理器202可以提取、解码、和/或执行指令206、208、210、212、214和216,从而使恢复点目标能够实施,如下面所述。作为获取和/或执行指令的可替代方案或者除了获取和/或执行指令之外,处理器202可以包括电子电路,该电子电路包括用于执行指令206、208、210、212、214和/或216的功能的多个电子部件。
与图1的机器可读存储介质104一样,机器可读存储介质204可以是存储可执行指令的任何合适的物理存储装置。机器可读存储介质204上的指令206、208和210可以类似于(例如,具有功能和/或组件类似于)机器可读存储介质104上的指令106、108和110。指令206可以响应于映射命令而注册由映射命令指定的多个第一虚拟地址。指令208可以识别与指定多个第一虚拟地址中的任意第一虚拟地址的多个同步命令相关联的数据。指令212可以将多个第二虚拟地址中的每一个第二虚拟地址与多个第一虚拟地址中的相应一个第一虚拟地址关联。多个第二虚拟地址可以由网络适配器本地生成或由远程存储实体上的网络适配器生成,如上面关于图1论述的。所识别的数据可以在远程存储实体的存储器位置中复制,存储器位置对应于多个第二虚拟地址中的、与多个第一虚拟地址中由多个同步命令指定的相应第一虚拟地址相关联的相应第二虚拟地址。
应用程序服务器可以从远程存储实体(例如,从远程存储实体上的网络适配器)接收多个第二虚拟地址并且存储虚拟地址对。基于存储的虚拟地址对,可以确定多个第二虚拟地址中的、与多个第一虚拟地址中由多个同步命令指定的第一虚拟地址对应的第二虚拟地址。所确定的多个第二虚拟地址中的第二虚拟地址可以用于指定响应于远程同步命令而使用RDMA传输的数据(例如,与多个同步命令相关联的数据)复制在远程存储实体的何处。
指令214响应于映射命令可以启动计时器。计时器可以正数计时到等于应用程序服务器的恢复点目标(RPO)的值或者从该值倒数计时,或者正数计时到等于远程同步命令之间的最大数量时间的值或从该值倒数计时,这些值由应用程序指定。在一些实现方式中,应用程序可以指定RPO。在一些实现方式中,RPO可以是存储在由同步命令指定的地址处的文件的属性。
当计时器达到预定值时,指令216可以生成同步命令。在计时器倒数计时的实现方式中,预定值可以是零。在计时器正数计时的实现方式中,预定值可以等于RPO或者远程同步命令之间最大数量时间的值。
在一些实现方式中,生成的远程同步命令可以使用RDMA传送到远程存储实体,如下面关于图3进一步论述的。使用RDMA传送远程同步命令在本文可以指“带内”传送远程同步命令。在一些实现方式中,生成的远程同步命令可以“带外”(即,在没有使用RDMA的情况下)传送到远程存储实体。例如,经由两侧的CPU控制的正常通信通道,应用程序可以将远程同步命令传送到远程存储实体上的数据服务。响应于接收到远程同步命令,数据服务可以将远程存储实体的易失性高速缓存/缓冲器刷新到远程存储实体的NVM。
图3是包括编码有使能够跟踪数据远程同步的完成的指令的机器可读存储介质的示例装置300的框图。在一些实现方式中,装置300可以操作为应用程序服务器和/或可以是应用程序服务器的一部分。在图3中,装置300包括处理器302和机器可读存储介质304。
与图1的处理器102一样,处理器302可以包括CPU、微处理器(例如,基于半导体的微处理器),和/或适于获取和/或执行存储在机器可读存储介质304中的指令的其它硬件器件。处理器302可以提取、解码、和/或执行指令306、308、310、312和314,从而使能够跟踪数据远程同步的完成,如下面所述。作为获取和/或执行指令的可替代方案或除了获取和/或执行指令之外,处理器302可包括电子电路,该电子电路包括用于执行指令306、308、310、312、和/或314的功能的多个电子部件。
与图1中的机器可读存储介质104一样,机器可读存储介质304可以是存储可执行指令的任何合适的物理存储装置。机器可读存储介质304上的指令306、308和310可以类似于(例如,具有功能和/或组件类似于)机器可读存储介质104上的指令106、108和110。指令312可以在已经执行多个同步命令之后,使用RDMA传送远程同步命令。在一些实现方式中,远程同步命令可以在RDMA期间连同要被复制的数据(即,与多个同步命令相关联的数据)一起传送。在一些实现方式中,可以特定地发起单独的RDMA以用于传送远程同步命令。
在一些实现方式中,应用程序可以周期性地生成远程同步命令从而确保有规律地达到应用程序一致性点。如果自从完成上一个同步命令,没有发出远程同步命令,则响应于由应用程序发出的取消映射命令而生成远程同步命令。取消映射命令可以促使应用程序服务器和远程存储实体上的固定地址变为非固定的(例如,OS可以修改/移动存储在这种地址处的数据)。
指令314可以保持确认计数器以跟踪与多个同步命令相关联的数据的复制的完成。每次发出同步命令,确认计数器可以增加,并且当与同步命令相关联的数据在远程存储实体中复制时,确认计数器可以减少(例如,如由RDMA完成确认所指示的)。零的确认计数器值可以指示已经完成远程同步命令(例如,与多个同步命令相关联的数据响应于其而复制的远程同步命令)的执行。
图4是响应于映射命令而使地址能够注册的示例系统400的框图。在一些实现方式中,系统400可以操作为远程存储实体和/或可以是远程存储实体的一部分。例如,系统400可以在通信地联接到应用程序服务器的存储服务器中实现。网络适配器可以用于通信地联接服务器。
在图4中,系统400包括地址识别模块402、地址生成模块404、以及复制模块406。模块可以包括编码在机器可读存储介质上的并且由处理器可执行的一组指令。此外或作为可替代方案,模块可以包括硬件装置,该硬件装置包括用于实现下面的功能的电子电路。
地址识别模块402可以响应于映射命令而识别NVM中的多个存储器地址。映射命令可以包括多个第一虚拟地址。可以由应用程序服务器上运行的应用程序发出映射命令,并且在其中多个存储器地址被识别的NVM可以在存储服务器上。与指定多个第一虚拟地址中的任意第一虚拟地址的多个同步命令相关联的数据可以在与所识别的多个存储器地址对应的NVM的区域中复制。在一些实现方式中,NVM可以是基于忆阻器的NVM。例如,NVM可以是ReRAM。
地址生成模块404可以响应于映射命令而生成多个第二虚拟地址。多个第二虚拟地址中的每一个虚拟地址可以针对NVM的RDMA进行注册,并且可以与多个第一虚拟地址中的相应一个虚拟地址相关联。多个第二虚拟地址可以传送到从其发出映射命令的应用程序服务器,并且可以用于确定在存储服务器的NVM中的何处复制使用RDMA传输的数据。多个第二虚拟地址中的每一个虚拟地址可以与所识别的NVM中的多个存储器地址中的相应一个存储器地址对应。所识别的NVM中的多个存储器地址可以被固定,防止当多个第二虚拟地址注册时,OS移动或修改存储在这些地址处的数据。
复制模块406可以使用RDMA并响应于远程同步命令而复制与指定多个第一虚拟地址中的任意第一虚拟地址的多个同步命令相关联的数据。与多个同步命令相关联的数据可以根据多个同步命令中的边界指示而在NVM中复制。边界指示可以用于确保与多个同步命令相关联的数据的远程副本等同于应用程序服务器上的本地副本,如上面关于图1所论述的。在一些实现方式中,与多个同步命令相关联的数据可以在所识别的NVM中的多个存储器地址中的存储器地址处复制,该存储器地址对应于多个第二虚拟地址的、与多个第一虚拟地址中由多个同步命令指定的相应第一虚拟地址相关联的相应第二虚拟地址。在一些实现方式中,在与多个同步命令相关联的数据已经被复制之后,复制模块406可以传送完成通知。完成通知可以指示已经达到应用程序一致性点。
图5是用于实施一顺序的示例系统500的框图,数据以该顺序在远程存储实体中复制。在一些实现方式中,系统500可以操作为远程存储实体和/或可以是远程存储实体的一部分。例如,系统500可以在通信地联接到应用程序服务器的存储服务器中实现。
在图5中,系统500包括地址识别模块502、地址生成模块504、复制模块506、访问模块508、以及顺序模块510。模块可以包括编码在机器可读存储介质上并由处理器可执行的一组指令。除此之外或者作为可替代的方案,模块可以包括硬件装置,该硬件装置包括用于实现下述功能的电子电路。
系统500的模块502、504和506可以分别类似于系统400的模块402、404和406。访问模块508可以传送用于RDMA的认证令牌。认证令牌可以由网络适配器在远程存储实体上生成并且被传送到应用程序服务器。在一些实现方式中,认证令牌可以与由地址生成模块504生成的多个第二虚拟地址一起传送。应用程序服务器可以使用认证令牌来获得使用RDMA传输数据的授权。
顺序模块510可以实施一顺序,多个RDMA以该顺序执行。在一些实现方式中,可能期望以特定顺序执行RDMA,例如当多个RDMA在远程存储实体的NVM中写明相同存储位置时(如果多个同步命令指定相同的虚拟地址时这就会发生)。顺序号可以被分配到并嵌入在每个RDMA中。程序模块510可以在远程存储实体的NVM中保持顺序队列。顺序队列可以缓冲具有较后顺序号的RDMA直到具有较前顺序号的RDMA已经完成。
图6是用于数据远程同步的示例系统600的框图。在图6中,系统600包括应用程序服务器602和存储服务器608。应用程序服务器602可以分别包括图1、图2和图3的装置100、200、或者300。存储服务器608可以分别包括图4或图5的系统400或500。应用程序604可以在应用程序服务器602上运行,并且可以发出映射命令、取消映射命令、同步命令和远程同步命令。与由应用程序604发出的同步命令相关联的数据可以本地存储在应用程序服务器602的NVM606中。
存储服务器608可以包括数据服务610和NVM’612。数据服务610可以接收由应用程序604发出的映射命令和取消映射命令。在一些实现方式中,远程同步命令可以从应用程序604“带外”传送到数据服务610。在一些实现方式中,远程同步命令可以使用RDMA从NVM 606带内传送到NVM’612,如上面关于图3所论述的。存储在NMV 606中的数据可以使用RDMA传输到NVM’612并复制在NVM’612中。由应用程序604发出的同步命令中的边界指示可以用于确保存储服务器608中的、与这些同步命令相关联的数据的远程副本等同于应用程序服务器602上的本地副本,如上面关于图1所论述的。
关于图7-图9论述了在远程位置同步数据的、与使用RDMA有关的方法。图7是用于为RDMA注册地址的示例方法700的流程图。尽管参考图3的处理器302在下面描述了方法700的执行,但是应该理解的是,可以由其它合适的器件实施方法700的执行,诸如分别由图1和图2的处理器102和202。方法700可以以存储在机器可读存储介质上的可执行指令的形式和/或以电子电路的形式来执行。
方法700可以在框702开始,在该处,处理器302可以响应于映射命令而注册由映射命令指定的多个虚拟地址。多个虚拟地址的注册会导致多个虚拟地址被传送到远程存储实体,这会生成用于远程存储实体的NVM的RDMA的另外的多个虚拟地址,如上面关于图1所论述的。注册的地址可以被固定以防止OS修改或移动存储在那些地址处的数据。
接下来,在框704,处理器302可以识别与指定多个虚拟地址中的任意虚拟地址的多个同步命令相关联的数据。在一些实现方式中,处理器302可以将与多个同步命令相关联的数据复制到用于累积要被复制的数据的数据结构。在一些实现方式中,处理器302可以在页面表中设定页面的复制位元,该页面的复制位元包括与任意多个同步命令相关联的数据。
最终,在框706,处理器302可以传送远程同步命令以使用RDMA在远程存储实体中复制所识别的数据。所识别的数据可以根据多个同步命令中的边界指示复制。边界指示可以用于确保所识别的数据以与在应用程序服务器的NVM中的相同方式在远程存储实体中被分组,如上面关于图1所论述的。在一些实现方式中,所识别的数据可以在远程存储实体的基于忆阻器的NVM中复制。
图8是用于在远程存储实体中复制数据的示例方法800的流程图。尽管下面关于图3的处理器302描述了方法800的执行,但是应该理解的是,可以由其它合适的器件实施方法800的执行,诸如分别由图1和图2的处理器102和202实施。方法800的一些框可以与方法700一起执行和/或在方法700之后执行。方法800可以以存储在机器可读存储介质上的可执行指令的形式实现和/或以电子电路的形式实现。
方法800可以在框802开始,在该处,处理器302可以传送多个第一同步命令。响应于多个第一同步命令,与多个第一同步命令相关联的数据可以存储在应用程序服务器的NVM中。与多个第一同步命令相关联的数据还可以复制到数据结构或者通过复制位元识别,例如上面关于图1所论述的。
接下来,在框804,处理器302可以传送第一远程同步命令。在一些实现方式中,第一远程同步命令可以在多个第一同步命令已经执行之后,使用RDMA传送。在一些实现方式中,第一远程同步命令可以带外传送。响应于第一远程同步命令,与多个第一同步命令相关联的数据可以使用RDMA传输到远程存储实体中并在该远程存储实体中复制。
在框806,在传送第一远程同步命令之后且在传送第二远程同步命令之前,处理器302可以传送多个第二同步命令和多个第三同步命令。与多个第二同步命令相关联的数据可以在远程存储实体中使用在传送第一远程同步命令之后且在传送第二远程同步命令之前发生的各RDMA进行复制。与多个第三同步命令相关联的数据可以复制到数据结构或者利用复制位元识别,同时与多个第二同步命令相关联的数据不会复制到数据结构或利用复制位元识别。
在框808,处理器302可以传送第二远程同步命令。与多个第三同步命令相关联的数据可以在远程存储实体中使用在传送第二远程同步命令之后发生的各RDMA进行复制。与多个第三同步命令相关联的数据可以在传送第二远程同步命令之后传输到远程存储实体。在传送第二远程同步命令之后,与多个第二同步命令相关联的数据不会被传输到远程存储实体,因为在传送第二远程同步命令之前其已经被传输了。
图9是用于实施恢复点目标的示例方法900的流程图。尽管下面参考图2的处理器202描述了方法900的执行,但是应该理解的是,方法900的执行可以由其它合适的器件实施,诸如分别由图1和图3的处理器102和302实施。方法900的一些框可以与方法700和/或800一起执行和/或在方法700和/或800之后执行。方法900可以以存储在机器可读存储介质上的可执行指令的形式实现和/或以电子电路的形式实现。
方法900可以在框902开始,其中处理器202可以响应于映射命令而启动计时器。计时器可以从等于应用程序服务器的RPO的值正数计时或者从该值倒数计时,或者从等于远程同步命令之间的最大数量时间的值正数计时或从该值倒数计时,如由应用程序所指定。在一些实现方式中,应用程序可以指定RPO。在一些实现方式中,RPO可以是存储在由同步命令指定的地址处的文件的属性。
在框904,处理器202可以确定计时器是否达到预定值。在计时器倒数计时的实现方式中,预定值可以是零。在计时器正数计时的实现方式中,预定值可以等于RPO的值或者是远程同步命令之间的最大数量时间。在框904,如果处理器202确定计时器没有达到预定值,那么方法900可循环返回到框904。在框904,如果处理器202确定计时器已经达到预定值,那么方法900可以行进到框906,其中处理器202可以传送远程同步命令。远程同步命令可以带内或带外传送到远程存储实体。
前述公开描述了使用映射命令和同步命令中的信息以用于RDMA注册和数据传输。本文描述的示例实现方式能够降低RDMA等待时间和用于将数据传输到远程存储实体的RDMA的数量。

Claims (15)

1.一种编码有由处理器可执行的指令的机器可读存储介质,所述机器可读存储介质包括:
用于响应于映射命令而注册由所述映射命令指定的多个第一虚拟地址的指令;
用于识别与指定所述多个第一虚拟地址中的任意第一虚拟地址的多个同步(sync)命令相关联的数据的指令;以及
用于响应于远程同步(rsync)命令而发起远程直接内存访问(RDMA)以根据所述多个同步命令中的边界指示而在远程存储实体中复制所识别的数据的指令。
2.根据权利要求1所述的机器可读存储介质,进一步包括:用于将多个第二虚拟地址中的每一个第二虚拟地址与所述多个第一虚拟地址中的相应一个第一虚拟地址相关联的指令,其中所识别的数据在所述远程存储实体的存储器位置中复制,所述存储器位置对应于所述多个第二虚拟地址中的、与所述多个第一虚拟地址中由所述多个同步命令指定的相应第一虚拟地址相关联的相应第二虚拟地址。
3.根据权利要求1所述的机器可读存储介质,其中所识别的数据在所述远程存储实体的基于忆阻器的非易失性存储器中复制。
4.根据权利要求1所述的机器可读存储介质,进一步包括:
用于响应于所述映射命令而启动计时器的指令;以及
用于当所述计时器达到预定值时生成所述远程同步命令的指令。
5.根据权利要求1所述的机器可读存储介质,进一步包括:用于在所述多个同步命令已经执行之后使用所述RDMA传送所述远程同步命令的指令。
6.根据权利要求1所述的机器可读存储介质,进一步包括:用于保持确认计数器以跟踪与所述多个同步命令相关联的数据的复制完成的指令。
7.一种系统,包括:
地址识别模块,所述地址识别模块用于响应于映射命令而识别非易失性存储器(NVM)中的多个存储器地址,其中所述映射命令包括多个第一虚拟地址;
地址生成模块,所述地址生成模块用于响应于所述映射命令而生成多个第二虚拟地址;其中:
所述多个第二虚拟地址中的每一个第二虚拟地址针对NVM的远程直接内存访问(RDMA)进行注册,并且与所述多个第一虚拟地址中的相应一个第一虚拟地址相关联;并且
所述多个第二虚拟地址中的每一个第二虚拟地址与所识别的所述NVM中的多个存储器地址中的相应一个存储器地址对应;以及
复制模块,所述复制模块用于使用RDMA并响应于远程同步(rsync)命令而复制与指定所述多个第一虚拟地址中的任意第一虚拟地址的多个同步命令(sync)相关联的数据。
8.根据权利要求7所述的系统,其中:
与所述多个同步命令相关联的数据根据所述多个同步命令中的边界指示而在NVM中复制;并且
与所述多个同步命令相关联的数据在所识别的所述NVM中的多个存储器地址中的存储器地址处复制,该存储器地址对应于所述多个第二虚拟地址中的、与所述多个第一虚拟地址中由所述多个同步命令指定的相应第一虚拟地址相关联的相应第二虚拟地址。
9.根据权利要求7所述的系统,进一步包括:访问模块,所述访问模块用于传送用于所述RDMA的认证令牌。
10.根据权利要求7所述的系统,其中:
所述NVM是基于忆阻器的NVM;并且
所述复制模块进一步用于,在与所述多个同步命令相关联的数据已经复制之后,传送完成通知。
11.根据权利要求7所述的系统,进一步包括:顺序模块,所述顺序模块实施一顺序,多个RDMA以所述顺序执行。
12.一种方法,包括:
响应于映射命令而注册由所述映射命令指定的多个第一虚拟地址;
识别与指定所述多个第一虚拟地址中的任意第一虚拟地址的多个第一同步(sync)命令相关联的数据;以及
传送第一远程同步(rsync)命令以使用远程直接内存访问(RDMA)在远程存储实体中复制所识别的数据,其中所识别的数据根据所述多个第一同步命令中的边界指示而复制。
13.根据权利要求12所述的方法,其中所述第一远程同步命令在所述多个第一同步命令已经执行之后使用所述RDMA传送。
14.根据权利要求12所述的方法,进一步包括:
在传送所述第一远程同步命令之后并且在传送第二远程同步命令之前,传送多个第二同步命令和多个第三同步命令,其中与所述多个第二同步命令相关联的数据在所述远程存储实体中使用在传送所述第一远程同步命令之后并且在传送所述第二远程同步命令之前发生的各RDMA进行复制;以及
传送所述第二远程同步命令,其中与所述多个第三同步命令相关联的数据在所述远程存储实体中使用在传送所述第二远程同步命令之后发生的各RDMA进行复制。
15.根据权利要求12所述的方法,其中所识别的数据在所述远程存储实体的基于忆阻器的非易失性存储器(NVM)中复制,所述方法进一步包括:响应于所述映射命令而启动计时器,其中当所述计时器达到预定值时,传送所述第一远程同步命令。
CN201480079789.2A 2014-06-10 2014-06-10 使用远程直接内存访问(rdma)复制数据 Withdrawn CN106462525A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2014/041741 WO2015191048A1 (en) 2014-06-10 2014-06-10 Replicating data using remote direct memory access (rdma)

Publications (1)

Publication Number Publication Date
CN106462525A true CN106462525A (zh) 2017-02-22

Family

ID=54833998

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480079789.2A Withdrawn CN106462525A (zh) 2014-06-10 2014-06-10 使用远程直接内存访问(rdma)复制数据

Country Status (4)

Country Link
US (1) US20170052723A1 (zh)
EP (1) EP3155531A4 (zh)
CN (1) CN106462525A (zh)
WO (1) WO2015191048A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111367721A (zh) * 2020-03-06 2020-07-03 西安奥卡云数据科技有限公司 一种基于非易失性存储器的高效远程复制系统

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160259836A1 (en) * 2015-03-03 2016-09-08 Overland Storage, Inc. Parallel asynchronous data replication
US9984002B2 (en) 2015-10-26 2018-05-29 Salesforce.Com, Inc. Visibility parameters for an in-memory cache
US9990400B2 (en) 2015-10-26 2018-06-05 Salesforce.Com, Inc. Builder program code for in-memory cache
US10013501B2 (en) 2015-10-26 2018-07-03 Salesforce.Com, Inc. In-memory cache for web application data
US9858187B2 (en) * 2015-10-26 2018-01-02 Salesforce.Com, Inc. Buffering request data for in-memory cache
US10769098B2 (en) * 2016-04-04 2020-09-08 Marvell Asia Pte, Ltd. Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access
CN108733506B (zh) * 2017-04-17 2022-04-12 伊姆西Ip控股有限责任公司 用于数据同步的方法、设备和计算机可读介质
US10642745B2 (en) 2018-01-04 2020-05-05 Salesforce.Com, Inc. Key invalidation in cache systems
CN111831337B (zh) * 2019-04-19 2022-11-29 安徽寒武纪信息科技有限公司 数据同步方法及装置以及相关产品
US11438414B2 (en) 2019-05-28 2022-09-06 Micron Technology, Inc. Inter operating system memory services over communication network connections
US11334387B2 (en) 2019-05-28 2022-05-17 Micron Technology, Inc. Throttle memory as a service based on connectivity bandwidth
US11100007B2 (en) 2019-05-28 2021-08-24 Micron Technology, Inc. Memory management unit (MMU) for accessing borrowed memory
US11150845B2 (en) * 2019-11-01 2021-10-19 EMC IP Holding Company LLC Methods and systems for servicing data requests in a multi-node system
US11288211B2 (en) 2019-11-01 2022-03-29 EMC IP Holding Company LLC Methods and systems for optimizing storage resources
US11294725B2 (en) 2019-11-01 2022-04-05 EMC IP Holding Company LLC Method and system for identifying a preferred thread pool associated with a file system
CN114201317B (zh) * 2021-12-16 2024-02-02 北京有竹居网络技术有限公司 数据传输方法、装置、存储介质及电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080267066A1 (en) * 2007-04-26 2008-10-30 Archer Charles J Remote Direct Memory Access
US20090024714A1 (en) * 2007-07-18 2009-01-22 International Business Machines Corporation Method And Computer System For Providing Remote Direct Memory Access
US20120102243A1 (en) * 2009-06-22 2012-04-26 Mitsubishi Electric Corporation Method for the recovery of a clock and system for the transmission of data between data memories by remote direct memory access and network station set up to operate in the method as a transmitting or,respectively,receiving station
CN102831018A (zh) * 2011-06-15 2012-12-19 塔塔咨询服务有限公司 低延迟先进先出消息交换系统
US20120331065A1 (en) * 2011-06-24 2012-12-27 International Business Machines Corporation Messaging In A Parallel Computer Using Remote Direct Memory Access ('RDMA')
CN103440202A (zh) * 2013-08-07 2013-12-11 华为技术有限公司 一种基于rdma的通信方法、系统及通信设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080109573A1 (en) * 2006-11-08 2008-05-08 Sicortex, Inc RDMA systems and methods for sending commands from a source node to a target node for local execution of commands at the target node
US8019940B2 (en) * 2006-12-06 2011-09-13 Fusion-Io, Inc. Apparatus, system, and method for a front-end, distributed raid

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080267066A1 (en) * 2007-04-26 2008-10-30 Archer Charles J Remote Direct Memory Access
US20090024714A1 (en) * 2007-07-18 2009-01-22 International Business Machines Corporation Method And Computer System For Providing Remote Direct Memory Access
US20120102243A1 (en) * 2009-06-22 2012-04-26 Mitsubishi Electric Corporation Method for the recovery of a clock and system for the transmission of data between data memories by remote direct memory access and network station set up to operate in the method as a transmitting or,respectively,receiving station
CN102831018A (zh) * 2011-06-15 2012-12-19 塔塔咨询服务有限公司 低延迟先进先出消息交换系统
US20120331065A1 (en) * 2011-06-24 2012-12-27 International Business Machines Corporation Messaging In A Parallel Computer Using Remote Direct Memory Access ('RDMA')
CN103440202A (zh) * 2013-08-07 2013-12-11 华为技术有限公司 一种基于rdma的通信方法、系统及通信设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111367721A (zh) * 2020-03-06 2020-07-03 西安奥卡云数据科技有限公司 一种基于非易失性存储器的高效远程复制系统

Also Published As

Publication number Publication date
US20170052723A1 (en) 2017-02-23
WO2015191048A1 (en) 2015-12-17
EP3155531A4 (en) 2018-01-31
EP3155531A1 (en) 2017-04-19

Similar Documents

Publication Publication Date Title
CN106462525A (zh) 使用远程直接内存访问(rdma)复制数据
CN102197384B (zh) 用于改进串行端口存储器通信等待时间和可靠性的方法和系统
CN101061467B (zh) 远程存储数据副本
US8583840B1 (en) Methods and structure for determining mapping information inconsistencies in I/O requests generated for fast path circuits of a storage controller
JP5191062B2 (ja) ストレージ制御システム、ストレージ制御システムに関する操作方法、データ・キャリア及びコンピュータ・プログラム
US8463746B2 (en) Method and system for replicating data
JP2018041506A (ja) データ送信方法、データ受信方法、及びストレージデバイス
CN104205078B (zh) 具有降低的延迟的远程直接存储器访问
US8751727B2 (en) Storage apparatus and storage system
WO2017219857A1 (zh) 一种数据处理方法和设备
US9753939B2 (en) Data synchronization method and data synchronization system for multi-level associative storage architecture, and storage medium
CN104937565B (zh) 从第一节点到第二节点的地址范围传送
CN101819543A (zh) 快照数据处理方法和系统以及存储设备
CN102306115A (zh) 异步远程复制方法、系统及设备
CN103902405B (zh) 一种准连续性数据复制方法及装置
CN104937564B (zh) 组表格的数据冲洗
CN103095769A (zh) 跨机房的数据同步方法以及系统
CN109460183A (zh) 具有页位图的高效事务表
CN103412822A (zh) 操作非易失性内存和数据操作的方法和相关装置
CN107239411A (zh) 一种车载控制器内存管理方法及系统
CN104937576B (zh) 协调存储在基于非易失性存储器的系统中的数据的复制
US20050154786A1 (en) Ordering updates in remote copying of data
CN107741965B (zh) 数据库同步处理方法、装置、计算设备及计算机存储介质
CN106598548A (zh) 存储单元读写冲突的解决方法及装置
CN103970620B (zh) 一种准连续性数据复制方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WW01 Invention patent application withdrawn after publication

Application publication date: 20170222

WW01 Invention patent application withdrawn after publication