CN107391270A - 高性能无锁可缩放目标的系统和方法 - Google Patents
高性能无锁可缩放目标的系统和方法 Download PDFInfo
- Publication number
- CN107391270A CN107391270A CN201710236677.9A CN201710236677A CN107391270A CN 107391270 A CN107391270 A CN 107391270A CN 201710236677 A CN201710236677 A CN 201710236677A CN 107391270 A CN107391270 A CN 107391270A
- Authority
- CN
- China
- Prior art keywords
- thread
- queue
- path
- data
- node
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/543—User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0036—Small computer system interface [SCSI]
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
- Advance Control (AREA)
- Computer And Data Communications (AREA)
Abstract
用于访问存储于数据存储系统的目标中的数据的方法包含:在第一组CPU上运行多个传输线程,其中多个传输线程中的每个包括命令接收机通路和命令发送机通路;在第二组CPU上运行多个数据通路线程,其中多个数据通路线程中的每个包括命令发出通路和命令完成通路;利用传输线程的命令接收通路将I/O命令登记到I/O命令发出队列,并且利用数据通路线程的命令发出通路处理I/O命令;以及利用数据通路线程的命令完成通路,将I/O完成通知登记到I/O完成队列,并且利用传输线程的命令发送机通路,处理I/O完成通知。
Description
相关专利申请的交叉引用
本申请要求2016年4月13日提交的美国临时专利申请No.62/322,035的优先权的权益,在此通过引用整体并入该专利申请的公开内容。
技术领域
本公开一般地涉及数据存储系统,更具体地说,涉及提供高性能无锁可缩放(scalable)目标的系统和方法。
背景技术
在典型的存储区域网络(SAN)中,通过光纤连接或者交换网络,目标使永久数据存储空间(例如,逻辑单元号(LUN)、命名空间)受一个或者多个启动程序(initiator)的作用。启动程序指启动会话接口(例如,小型计算机系统接口(SCSI)会话)并且发送命令(例如,SCSI命令)的端点。目标指等待启动程序的工作请求并且执行输入/输出(I/O)操作的端点。在通用计算机体系结构的语境下,可以将启动程序称为客户,并且可以将目标称为服务器。单个目标可以服务多个启动程序并且为启动程序提供一个或者多个LUN。
目标可以通过双方同意的SAN协议与一个或者多个启动程序通信。SAN协议的例子包含并不局限于:光纤通道协议(FCP)、并行SCSI(pSCSI)、以太网小型计算机系统接口(iSCSI)、HyperSCSI、光纤通道、高级技术附件(ATA)、串行ATA(SATA)、通过以太网的ATA(AoE)、InfiniBand以及通过光纤的Non-Volatile Memory Express(NVMe)。SAN协议允许启动程序将I/O命令发送至目标。数据中心的数据存储装置可以包含以物理方法和/或逻辑方法分布于存储区域网络上的多个目标。SAN协议将数据存储装置合并为目标阵列,同时将数据存储装置看起来是本地连接的错觉(illusion)提供给主机。
通常,通过多个连接,存储目标可以使后端LUN受多个启动程序的作用。每个启动程序可以打开与目标的一个或者多个连接并且访问目标中的一个或者多个LUN。从输入/输出(I/0)的观点出发,特别是当多个会话(session)并行地访问多个LUN时,数据通路中建立的多个同步点能够影响I/O性能。
可以使前端I/O堆栈中的数据通路分裂为传输协议层和SCSI核心层。传输协议层中的处理是基于每个连接的,而SCSI核心层中的处理是基于每个LUN的。传输协议层中的处理包含通过特定连接发出I/O命令,并且通过该特定连接完成所述I/O命令。核心层中的LUN处理包含对特定LUN发出I/O命令,并且完成对特定LUN发出的I/O命令。如果在传输协议层的线程上下文中执行整个I/O通路,则可以在LUN级和在连接级建立各种同步点,因此,影响整个I/O性能。这是因为,传输协议层处的I/O上下文是特定于连接的,而SCSI核心层中的I/O上下文是特定于LUN的。
发明内容
根据一个实施例,一种方法包含:接收命令,以访问存储于数据存储系统的目标中的数据,其中数据存储系统包含多个CPU;在多个CPU的第一组CPU上运行多个传输线程,其中多个传输线程中的每个包括命令接收机通路和命令发送机通路;在多个CPU的第二组CPU上运行多个数据通路线程,其中多个数据通路线程中的每个包括命令发出通路和命令完成通路;利用传输线程的命令接收通路将I/O命令登记(posting)到I/O命令发出队列,并且利用数据通路线程的命令发出通路处理I/O命令;以及利用数据通路线程的命令完成通路,将I/O完成通知登记到I/O完成队列,并且利用传输线程的命令发送机通路,处理I/O完成通知。I/O命令发出队列包括第一阵列队列,并且该第一阵列队列中的每个分别对应于第一组CPU中各自的CPU。I/O完成队列包括第二阵列队列,并且第二阵列队列中的每个分别对应于第二组CPU中各自的CPU。
根据另一个实施例,数据存储系统包含:多个CPU;多个目标;以及存储器,存储用于处理I/O流和I/O命令发出队列以及I/O完成队列的一组软件模块。该组软件模块配置成:接收I/O命令,以访问存储于数据存储系统的目标中的数据,数据存储系统包含多个CPU;多个传输线程运行于多个CPU中的第一组CPU中的第一CPU上,其中多个传输线程中的每个包括命令接收机通路和命令发送机通路;并且多个数据通路线程运行于多个CPU中的第二组CPU中的第二CPU上,其中多个数据通路线程中的每个包括命令发出通路和命令完成通路。传输线程的命令接收机通路将I/O命令登记到I/O命令发出队列,并且数据通路线程的命令发出通路处理I/O命令。数据通路线程的命令完成通路将I/O完成通知登记到I/O完成队列,并且传输线程的命令发送机通路处理I/O完成通知。I/O命令发出队列包括第一阵列队列,并且第一阵列队列中的每个分别对应于第一组CPU中各自的CPU。I/O完成队列包括第二阵列队列,并且第二阵列队列中的每个分别对应于第二组CPU中各自的CPU。
现在将参考附图更具体地描述并且在权利要求中指出包含实施的各种新颖细节和事件的组合的上述以及其他优选特征。应当明白,在此描述的特定系统和方法仅作为说明示出,而不作为限制。本领域的技术人员应明白,在各种许多实施例中可以采用在此描述的原理和特征,而不脱离本公开的范围。
附图说明
作为本说明书的一部分包含的附图示出当前优选实施例并且与上面给出的概括描述和下面给出的优选实施例的详细描述一起用于解释和教导在此描述的原理。
图1示出根据一个实施例,线程化模型中的单片数据通路的说明图;
图2示出根据一个实施例,示例性线程化模型的方框图;
图3示出根据一个实施例,说明性分离式线程化模型;
图4示出根据一个实施例,示例性线程化模型的原理图;
图5示出根据一个实施例,示例性单一生产者单一消费者(single-producersingle-consumer,SPSC)无锁队列的方框图;
图6示出根据一个实施例,示例性多生产者多消费者(multi-producer multi-consumer,MPMC)无锁队列的方框图;
图7示出根据一个实施例,示例性线程化模型的方框图;
图8示出根据另一个实施例,示例性MPMC无锁队列的方框图;以及
图9示出又根据另一个实施例,示例性MPMC无锁队列的方框图。
附图不一定按比例示出并且出于说明的目的,在所有附图中,类似结构或者功能的元件通常由类似的参考编号表示。附图仅旨在有助于描述在此描述的各种实施例。附图未描述在此公开的教导的每个方面并且不限制权利要求的范围。
具体实施方式
在此公开的每个特征和教导能够被单独地或者结合其他特征和教导采用,以提供高性能无锁可缩放目标。参考附图进一步详细描述单独地或者组合地采用许多这些附加特征和教导的说明性示例。该详细描述仅旨在进一步详细教导本技术领域内的技术人员,从而实施本教导的方面,而不旨在限制权利要求的范围。因此,上面的详细描述中公开的特征的组合对于在最广泛的意义上实施本教导不是必需的,而是教导仅仅具体描述本教导的说明性示例。
在下面的描述中,仅出于解释的目的,为了全面理解本公开,阐述了特定术语。然而,本领域的技术人员将明白,实施本公开的教导不要求这些具体细节。
根据计算机存储器内数据位上的操作的算法和符号表示,呈现本文中详细描述的一些部分。数据处理技术领域内的技术人员利用这些算法描述和表示将其工作有效传达给本领域的其他技术人员。在此并且一般地将算法理解为产生要求的结果的一系列前后一致的步骤。步骤是要求物理量的物理操作的步骤。通常,尽管不是必需的,但是这些量采用能够被储存、传输、组合、比较以及其他操作的电信号或者磁信号的形式。主要出于常规适用的原因,已经证明,将这些信号称为位、值、元、符号、字符、项、数等等往往是方便的。
然而,应当考虑到,所有这些术语和类似术语与适当物理量关联并且仅仅是对这些量采用的方便标号。除非如从下面的讨论中看到的那样具体地陈述,应当理解,整个描述中采用诸如“处理”、“计算”、“运算”、“确定”、“显示”等等的术语的讨论指计算机系统或者类似电子计算装置的动作和处理,该动作和处理将计算机系统的寄存器和存储器中的表示为物理(电子)量的数据变换或者转换为类似地表示为计算机系统存储器或者寄存器中的或者其他这种信息存储装置、传输装置或者显示装置中的物理量的其他数据。
在此呈现的算法并非固有地与任何特定计算机或者其他设备有关。根据在此的教导,可以与程序一起使用各种通用系统、计算机服务器或者个人计算机,或者其可以证明,构建更专用设备来执行要求的方法步骤是方便的。由下面的描述将看出各种这些系统所需的结构。应当明白,各种编程语言可以用于实施如在此描述的公开的教导。
此外,代表性示例和从属权利要求的各种特征可以以非具体并且明确列举的方式组合,以提供本教导的附加有效实施例。还特请注意,出于原始公开的目的以及出于限制要求保护的主体的目的,实体的组的所有值范围或者值示数公开了每个可能的中间值或者中间实体。还特请注意,附图中所示的部件的尺寸和形状的目的是有助于理解如何实施本教导,而不旨在局限于示例中所示的尺寸和形状。
图1示出根据一个实施例,单片线程化模型中的数据通路的说明图。数据通路包含:一系列单片iSCSI接收通路101、SCSI命令发出通路102、SCSI命令完成通路103以及iSCSI发送机通路104。存储系统可以具有多个中央处理单元(CPU)(例如,N个CPU),并且存储系统中的每个CPU负责数据通路的整个生命周期中各自数据的建立、处理、管理和完成。在数据通路101-104中,在启动程序与SCIS目标之间并且基于每个连接以传输协议(例如iSCSI)建立数据通路101和104。例如,基于每个连接,在对话级/连接级,执行登入/登出、缓冲器管理和任务管理操作。在对话/连接级,对I/O命令排队并且跟踪I/O命令。在数据通路101-104中,在LUN级,数据通路102和103建立于SCSI目标与LUN之间。例如,在LUN级,跟踪到目标储存装置的和来自目标储存装置的SCSI命令和错误操作。根据图1所示的单片线程模型,共享目标系统的可用CPU资源,以既运行传输协议又运行SCSI核心层协议。单片线程化模型不将高速缓存的局部性最大化。
本公开提供了一种能够在独立线程上独立地分离并且操作传输协议和SCSI核心协议的新颖线程化模型。本线程化模型在传输协议线程与SCSI核心线程之间采用无锁队列设计。通过分离并且独立地运行传输协议和SISC核心协议的线程,无锁队列设计改善I/O性能。存储系统的CPU资源分布于传输协议层与SCSI核心层之间。仅在被指定用于操作运行于传输协议层中的线程的CPU上调度(schedule)传输协议线程。仅在被指定用于操作运行于SCSI核心层中的线程的CPU上调度SCSI核心线程。传输协议层处理接收通路和发送机通路。SCSI核心线程处理对特定LUN的I/O请求和该特定LUN上的I/O完成。
本系统和方法利用多个LUN和到其的连接提供高可缩放性。本系统和方法还使传输协议线程和LUN线程分离,以使缓存局部性最大化。此外,当通过多个连接访问多个LUN时,无锁队列设计消除了锁定争用。尽管针对iSCSI目标描述了本公开,但是应当明白,本公开可以应用于任何SYS协议(例如,FCP、pSCSI、iSCSI、HyperSCSI、Fibre通道、ATA、SATA、AoE、InfiniBand,和通过光纤的NVMe),以有效利用系统资源并且提供高性能目标I/O性能,以避免同步瓶颈。例如,在通过光纤的NVMe协议中,可以将等同于SCSI核心层的核心层称为NVMe排队接口和命令设定。
图2示出根据一个实施例,示例性线程化模型中的数据通路的方框图。可以将数据通路200划分为特定连接通路251和特定LUN通路252。特定连接通路251包含接收机201和发送机211。启动程序(客户)的接收机201从主机接收指令,产生iSCSI命令202和关联数据203,与目标建立连接,并且通过SCSI I/O模块204和任务管理(TM)I/O模块205将iSCSI命令202和数据203发送到目标。
特定LUN通路252包含:数据命令描述符块(CDB)221,用于存储与诸如读、写和修剪(trim)的SCSI命令关联的数据;控制CDB 222,用于存储诸如查询、读和容量(capacity)的SCSI命令。iSCSI命令和数据分别存储于数据CDB 221和控制CDB 222中。特定LUN通路252还包含:任务管理I/O块223,用于存储SCSI管理命令(例如,终止、LUN复位);以及状态/数据块224。从主机收到的TM命令可以存储于任务管理I/O块中。目标的状态和从目标收到的关联数据存储于状态/数据块224中。控制CDB 222可以直接访问状态/数据块224,用于更新特定控制命令的状态和数据。将目标的诸如I/O完成的状态/数据信息送回特定连接通路251的发送机211。
图3示出根据一个实施例,说明性分离式线程化模型。目标系统可以包含许多分布式的CPU,,用于基于工作负荷的类型在iSCSI传输协议与SCSI命令之间进行操作。在启动程序与SCSI目标之间,特定连接线程(即,传输协议中的iSCSI)包含iSCSI接收机通路301和iSCSI发送机通路304。特定连接线程是基于每个连接的。SCSI命令发出通路302和SCSI命令完成通路303建立于LUN级。在目标系统中的许多可用CPU之间,分配M个CPU用于建立数据通路、在启动程序与SCSI目标之间传输SCSI命令、以及在传输协议级完成建立的数据通路,而分配N个CPU用于处理、管理和操作SCSI目标与LUN之间的SCSI命令。
启动程序与SCSI目标之间的iSCSI协议运行对每个连接建立的并且包含一系列iSCSI接收机通路301和iSCSI发送机通路304的特定连接线程。对M个CPU中的一个或者多个CPU分配特定连接线程。iSCSI接收机通路301对包含SCSI命令发出通路302(即,SCSI接收机)的SCSI I/O请求排队。完成SCSI命令后,SCSI目标对SCSI命令完成通路303(即,SCSI发送机)排队。对N个CPU分配基于每个LUN建立的SCSI命令发出通路302和SCSI命令完成通路303。完成SCSI命令后,SCSI目标在之前在启动程序与SCSI目标之间建立的传输连接上对到启动程序的I/O完成(例如,iSCSI发送机通路304)排队。最后,由在启动程序与SCSI目标之间建立特定连接线程的CPU操作该I/O完成。
图4示出根据一个实施例,示例性线程化模型的原理图。本线程化模型提供数据通路,该数据通路包含:iSCSI接收机通路401、iSCSI发送机通路404、SCSI命令发出通路402和SCSI命令完成通路403。在I/O命令发出通路上,iSCSI接收机通路401利用I/O命令发出队列410将I/O命令登记到SCSI命令发出通路402。在I/O命令返回通路上,SCSI命令完成通路403利用I/O完成队列411将I/O完成登记到iSCSI发送机通路404。根据一个实施例,I/O命令发出队列410和I/O完成队列411是多生产者多消费者(MPMC)无锁队列,其中来自多个连接的I/O命令能够到达单个LUN,并且来自单个连接的I/O命令能够到达多个LUN。
在队列的语境中,根据一个实施例,生产者指启动程序,而消费者指目标。在一些实施例中,生产者可以指目标,而消费者可以指启动程序。例如,iSCSI接收机通路401和iSCSI发送机通路404可以由生产者拥有,而SCSI命令发出通路402和SCSI命令完成通路403可以由消费者拥有。在另一个示例中,SCSI命令发出通路402和SCSI命令完成通路403可以由生产者拥有,而iSCSI接收机通路401和iSCSI发送机通路404可以由消费者拥有。
在多生产者/多消费者(MPMC)队列中,生产者任务和消费者任务运行于多个线程上。例如,生产者任务运行于n个线程上,而消费者任务运行于m个线程上。能够存在多个绑定到特定生产者线程的生产者和多个绑定到特定消费者线程的消费者。在I/O发出通路中,传输协议层对SCSI核心层产生工作请求。在这种情况下,传输协议层是生产者,而SCSI核心层是消费者。另一方面,在I/O完成通路中,SCSI核心层对传输协议层产生工作请求。在这种情况下,SCSI核心层是生产者,而传输协议层是消费者。作为每个连接的传输协议层产生的工作请求能够转到(go to)多个LUN。类似地,作为每个LUN的SCSI核心层产生的工作请求能够转到多个连接。传输协议层与SCSI核心层之间的通信具有通常要求锁定的同步点。根据一个实施例,本系统允许以无锁方式访问传输协议层和SCSI核心层。
图5示出根据一个实施例,示例性单一生产者单一消费者(SPSC)无锁队列的方框图。无锁队列中的每个节点包含数据容器和指针,并且一系列节点以链接表的方式链接。根据一个实施例,图4所示的I/O命令发出队列410和I/O完成队列411中的每个都能够具有图5所示的无锁队列。本无锁队列具有头节点501、尾节点503。如果在该队列中仅存在单个节点,则头节点501和尾节点503相同。当前节点502指该表中的起始点,消费者能够从其开始表遍历(list traversal)并且消费(consume)该节点。在一些实施例中,当前节点502可以被称为消费者起始或者消费者头(与生产者拥有的头节点501相反)。
图5所示的链接表的每个节点具有数据容器511和指向下一个节点的指针512。生产者创建新节点,例如,对应于新I/O命令的节点,将新创建的节点连接到队列的尾节点503,并且更新尾节点503的指针,以指向新节点。这样,新节点能够附加到现有队列。类似地,生产者能够从头节点501到当前节点502释放消费节点。当系统资源独立于消费者的节点消费处理可用时,生产者可以释放消费节点。在这种状况下,将生产者释放消费节点的处理称为懒惰删除。从头节点501到当前节点502之前的节点中的节点由生产者拥有,而从当前节点502到尾节点503中的节点由消费者拥有。消费者从当前节点502到尾节点503遍历该表、在当前节点502消费项目、并且将当前指针更新为下面的节点。如果当前指针指向尾节点503,则消费者不消费节点。
当前无锁队列提供控制结构,该控制结构保持控制信息,以管理无锁表(locklesslist)。生产者拥有第一指针和最后指针。当生产者将新节点添加到无锁表时,更新最后指针。当生产者删除消费节点时,更新第一指针。在消费者从当前节点502到尾节点503遍历该表时,消费者更新当前指针。因为利用无锁队列的控制结构,无锁队列的当前指针的控制信息和拥有关系在生产者与消费者之间无缝交换,所以当前无锁队列消除了对同步点的需要,并且锁定在数据通路中,并且特别是当多个对话并行地访问多个LUN时,改善I/O性能。
图6示出根据一个实施例,示例性多生产者多消费者(MPMC)无锁队列的方框图。MPMC无锁队列具有N个头节点(头1-头N)的控制阵列601,其中N对应于在上面调度生产者从而运行的线程的数量。尽管调度生产者,以在N个线程上运行,但是调度消费者,以在M个线程上运行。因为单个生产者能够运行于单个线程上,所以生产者的数量和线程的数量N可以不同。类似地,因为单个消费者能够运行于单个线程上并且消费单个生产者产生的节点,所以消费者的数量和线程的数量M可以不同。在控制阵列601上,生产者能够生产节点,并且消费者能够消费节点。对应于N个线程中的每个线程的控制结构保持SPSC无锁队列。消费者保持N个线程的控制阵列601。
根据一个实施例,MPMC无锁队列提供利用线程标识符(ID)对线程的排他性访问。例如,运行于给定线程上的生产者可能需要产生进入相应队列中的新节点。当添加新节点时,通过将线程标识符(ID)索引到控制阵列601中,生产者能够对队列进行排他性访问。因为每个生产者需要获得对队列的排他性访问,以产生新节点,所以在多个生产者之间不存在争用(contention)。运行于给定线程上的消费者能够消费属于多个生产者的多个节点。类似地,因为每个消费者具有对控制阵列601中的队列的排他性访问,所以在多个消费者之间不存在争用。
图7示出根据一个实施例,示例性线程化模型的方框图。本线程化模型包含多个iSCSI连接线程701和多个SCSI LUN线程751。出于解释的目的,iSCSI连接线程701运行于三个CPU上,并且SCSI LUN运行于两个CPU上。iSCSI连接线程701中的每个包含两个对应于运行SCSI LUN线程751的每个CPU中的节点(即,头1a和头2a)。每个SCSI LUN线程751包含三个对应于运行iSCSI连接线程701的每个CPU的节点(即,头1b、头2b和头3b)。尽管本示例包含三个相应地分配从而运行三个iSCSI连接线程701中的每个的CPU和两个相应地分配从而运行每个SCSI LUN线程751的CPU,但是应当明白,本线程化模型能够应用于任何数量的iSCSI连接线程和SCSI LUN线程,而不脱离本公开的范围。将每个iSCSI连接线程(CT1、CT2、CT3)分配到每个CPU(CPU 1、CPU 2和CPU 3)。类似地,将每个SCSI LUN线程(LT1和LT2)分配到每个CPU(CPU 5和CPU 6)。6个iSCSI连接C1、……C6能够由iSCSI线程CT1、CT2和CT3提供服务。4个LUN 1、……L4能够由SCSI LUN线程提供服务。4个LUN L1、……L4能够由SCSI LUN线程LT1和LT2提供服务。
生产者连接线程(例如,iSCSI连接线程701)产生直接到由各自的CPU-ID索引的每个LUN队列的I/O命令(要处理的)。根据如各自的CPU-ID索引的iSCSI连接线程701产生的I/O命令,SCSI LUN线程751产生直接到每个连接队列的I/O命令(完成的)。消费者连接线程(例如,SCSI LUN线程)消费属于该连接的I/O命令。SCSI LUN线程751消费属于LUN的I/O命令。iSCSI连接线程701(生产者)能够将I/O命令直接发到各SCSI LUN线程751(消费者),并且SCSI LUN线程751(生产者)能够直接向各iSCSI连接线程701(消费者)发出I/O命令。每个I/O命令能够由对运行特定线程的处理器唯一的CPU-ID识别,从而消除了对独立运行的线程之间的同步点或者锁(locks)的需要。
图8示出根据另一个实施例,示例性MPMC无锁队列的方框图。在I/O发出队列中,生产者可以是传输协议层,并且消费者可以是SCSI核心层。传输协议线程(例如,图3的iSCSI接收机通路301)访问N个CPU的LUN阵列801,其中N是对传输协议线程分配的CPU的数量。阵列索引指传输协议线程运行于上面的CPU数量(1、2、…、N)。每个阵列索引具有无锁单链接表,在该无锁单链接表上,传输协议线程产生发给特定LUN的I/O命令的工作请求。SCSI核心线程(例如,图3的SCSI命令发出通路302)在处理由传输协议线程排队的工作项的相应SCSI核心CPU上执行。SCSI核心线程更新运行于相应SCSI核心CPU上的线程中的当前指针。SCSI模块(LUN)拥有如图8所示的数据结构,并且对iSCSI模块(传输协议层)提供接口,以产生并且登记I/O请求。
图9示出根据又另一个实施例,示例性MPMC无锁队列的方框图。在I/O完成通路中,生产者可以是SCSI核心层,并且消费者可以是传输协议层。LUN线程(例如,图3的SCSI命令完成通路303)访问M个CPU的每个连接阵列901,其中M是对SCSI核心线程分配的CPU的数量。阵列索引指上面运行SCSI核心线程的CPU数量(1、2、……、M)。每个阵列索引具有无锁单链接表,在该无锁单链接表上,SCSI核心线程对于特定连接产生已完成I/O命令的工作请求。相应CPU上执行的传输协议线程(例如,图3的iSCSI发送机通路304)处理由全部SCSI核心线程排队的I/O命令。iSCSI线程更新在相应传输协议CPU上运行的iSCSI线程中的当前指针。iSCSI模块(iSCSI连接)拥有如图9所示的数据结构,并且提供到SCSI模块(SCSI核心层)的接口,以产生并且登记I/O完成。
本系统和方法使传输处理与数据(或者核心)处理分离。本系统和方法实现多生产者多消费者无锁设计,这样解决传输处理和数据处理固有的同步问题。本系统和方法提供在传输处理与数据处理之间共享的资源(例如,CPU),以适应传输层和核心层中的每个对资源的不同的需要和变化的需要。I/O写(IOW)和CPU资源的比例能够基于系统配置变化。
根据一个实施例,方法包含:接收命令,以访问存储于数据存储系统的目标中的数据,其中数据存储系统包含多个CPU;在多个CPU的第一组CPU上运行多个传输线程,其中多个传输线程中的每个包括命令接收机通路和命令发送机通路;在多个CPU的第二组CPU上运行多个数据通路线程,其中多个数据通路线程中的每个包括命令发出通路和命令完成通路;利用传输线程的命令接收通路将I/O命令登记到I/O命令发出队列,并且利用数据通路线程的命令发出通路处理I/O命令;以及利用数据通路线程的命令完成通路,将I/O完成通知登记到I/O完成队列,并且利用传输线程的命令发送机通路,处理I/O完成通知。I/O命令发出队列包括第一阵列队列,并且该第一阵列队列中的每个对应于第一组CPU中各自的CPU。I/O完成队列包括第二阵列队列,并且第二阵列队列中的每个对应于第二组CPU中各自的CPU。
传输线程可以包含接收机和发送机,并且接收机可以将I/O命令发送到数据通路。
数据通路线程可以将I/O命令发送到目标并且接收来自目标的状态和/或者数据,并且将该状态和/或者数据发送到传输线程的发送机。
第一阵列队列可以包含对应于对数据通路线程分配的第二组CPU的数量的第一数量的节点。
第一数量的节点可以包含头节点、尾节点和指向第一阵列队列中的队列的当前节点,并且从当前节点到尾节点中的节点可以由消费者拥有,而第一阵列队列的剩余节点可以由生产者拥有。
生产者可以是启动程序,并且消费者可以是目标。
利用对数据通路线程中的每个是唯一的线程标识符,消费者可以获得对该队列的排他性访问。
第二阵列队列可以包含对应于对传输线程分配的第一组CPU的数量的第二数量的节点。
第二数量的节点可以包含头节点、尾节点和指向第二阵列队列中的队列的当前节点,并且从当前节点到尾节点中的节点可以由消费者拥有,而第一阵列队列的剩余节点可以由生产者拥有。
生产者可以是目标,并且消费者可以是启动程序。
利用对传输线程中的每个是唯一的线程标识符,消费者可以获得对队列的排他性访问。
I/O命令发出队列和I/O完成队列中的每个可以是多生产者多消费者(MPMC)无锁队列。来自一个或者多个传输线程的工作请求能够到达特定数据通路线程,并且来自特定传输线程的工作请求能够到达一个或者多个数据通路线程。类似地,来自一个或者多个数据通路线程的工作请求能够到达特定传输线程,并且来自特定数据通路线程的工作请求能够到达一个或者多个传输线程。
根据另一个实施例,数据存储系统包含:多个CPU;多个目标;以及存储器,存储用于处理I/O流和I/O命令发出队列以及I/O完成队列的一组软件模块。该组软件模块配置成:接收I/O命令,以访问存储于数据存储系统的目标中的数据,数据存储系统包含多个CPU;多个传输线程运行于多个CPU中的第一组CPU中的第一CPU上,其中多个传输线程中的每个包括命令接收机通路和命令发送机通路;并且多个数据通路线程运行于多个CPU中的第二组CPU中的第二CPU上,其中多个数据通路线程中的每个包括命令发出通路和命令完成通路。传输线程的命令接收机通路将I/O命令登记到I/O命令发出队列,并且数据通路线程的命令发出通路处理I/O命令。数据通路线程的命令完成通路将I/O完成通知登记到I/O完成队列,并且传输线程的命令发送机通路处理I/O完成通知。I/O命令发出队列包括第一阵列队列,并且第一阵列队列中的每个对应于第一组CPU中各自的CPU。I/O完成队列包括第二阵列队列,并且第二阵列队列中的每个对应于第二组CPU中各自的CPU。
传输线程可以包含接收机和发送机,并且接收机可以将I/O命令发送到数据通路。
数据通路线程可以将I/O命令发送到目标,并且接收来自目标的状态和/或者数据,并且将该状态和/或者数据发送到传输线程的发送机。
第一阵列队列可以包含对应于对数据通路线程分配的第二组CPU的数量的第一数量的节点。
第一数量的节点可以包含头节点、尾节点和指向第一阵列队列中的队列的当前节点,并且从当前节点到尾节点中的节点可以由消费者拥有,而第一阵列队列的剩余节点可以由生产者拥有。
生产者可以是启动程序,并且消费者可以是目标。
利用对每个数据通路线程是唯一的线程标识符,消费者可以获得对队列的排他性访问。
第二阵列队列可以包含对应于对传输线程分配的第一组CPU的数量的第二数量的节点。
第二数量的节点可以包含头节点、尾节点和指向第二阵列队列中的队列的当前节点,并且从当前节点到尾节点中的节点可以由消费者拥有,而第一阵列队列的剩余节点可以由生产者拥有。
生产者可以是目标,并且消费者可以是启动程序。
利用对每个传输线程是唯一的线程标识符,消费者可以获得对队列的排他性访问。
I/O命令发出队列和I/O完成队列中的每个可以是多生产者多消费者(MPMC)无锁队列。来自一个或者多个传输线程的工作请求能够到达特定数据通路线程,并且来自特定传输线程的工作请求能够到达一个或者多个数据通路线程。类似地,来自一个或者多个数据通路线程的工作请求能够到达特定传输线程,并且来自特定数据通路线程的工作请求能够到达一个或者多个传输线程。
为了说明实现提供高性能无锁可缩放目标的系统和方法的各种实施例,上面描述了上述示例性实施例。本领域的普通技术人员将想到对所公开的示例性实施例的各种修改和变更。所附的权利要求陈述了旨在落入不公开的范围内的主题。
Claims (24)
1.一种提供高性能无锁可缩放目标方法,包括:
接收命令,以访问存储于数据存储系统的目标中的数据,其中所述数据存储系统包含多个CPU;
在所述多个CPU的第一组CPU上运行多个传输线程,其中所述多个传输线程中的每个包括命令接收机通路和命令发送机通路;
在所述多个CPU的第二组CPU上运行多个数据通路线程,其中所述多个数据通路线程中的每个包括命令发出通路和命令完成通路;
利用传输线程的所述命令接收通路将I/O命令登记到I/O命令发出队列,并且利用数据通路线程的所述命令发出通路处理所述I/O命令;以及
利用所述数据通路线程的所述命令完成通路,将I/O完成通知登记到I/O完成队列,并且利用所述传输线程的所述命令发送机通路,处理所述I/O完成通知,
其中所述I/O命令发出队列包括第一阵列队列,并且所述第一阵列队列中的每个对应于第一组CPU中各自的CPU,以及
其中所述I/O完成队列包括第二阵列队列,并且所述第二阵列队列中的每个对应于所述第二组CPU中各自的CPU。
2.根据权利要求1所述的方法,其中所述传输线程包括接收机和发送机,并且其中所述接收机将所述I/O命令发送到所述数据通路。
3.根据权利要求2所述的方法,其中所述数据通路线程将所述I/O命令发送到所述目标并且接收来自所述目标的状态和/或者数据,并且将所述状态和/或者数据发送到所述传输线程的所述发送机。
4.根据权利要求1所述的方法,其中所述第一阵列队列包括对应于对所述数据通路线程分配的所述第二组CPU的数量的第一数量的节点。
5.根据权利要求4所述的方法,其中所述第一数量的节点包括头节点、尾节点和指向所述第一阵列队列中的队列的当前节点,并且其中从所述当前节点到所述尾节点中的节点由消费者拥有,并且所述第一阵列队列的所述剩余节点由生产者拥有。
6.根据权利要求5所述的方法,其中所述生产者是启动程序,并且所述消费者是目标。
7.根据权利要求6所述的方法,其中利用对所述数据通路线程中的每个是唯一的线程标识符,所述消费者获得对所述队列的排他性访问。
8.根据权利要求1所述的方法,其中所述第二阵列队列包括对应于对所述传输线程分配的所述第一组CPU的数量的第二数量的节点。
9.根据权利要求8所述的方法,其中所述第二数量的节点包括头节点、尾节点和指向所述第二阵列队列中的队列的当前节点,并且从所述当前节点到所述尾节点中的节点由消费者拥有,并且所述第一阵列队列的所述剩余节点由生产者拥有。
10.根据权利要求9所述的方法,其中所述生产者是所述目标,并且所述消费者是所述启动程序。
11.根据权利要求10所述的方法,其中利用对所述传输线程中的每个是唯一的线程标识符,所述消费者获得对所述队列的排他性访问。
12.根据权利要求1所述的方法,其中所述I/O命令发出队列和所述I/O完成队列中的每个是多生产者多消费者(MPMC)无锁队列,其中来自一个或者多个传输线程的工作请求能够到达特定数据通路线程,并且来自特定传输线程的工作请求能够到达一个或者多个数据通路线程,并且其中来自一个或者多个数据通路线程的工作请求能够到达特定传输线程,并且来自特定数据通路线程的工作请求能够到达一个或者多个传输线程。
13.一种数据存储系统包括:
多个CPU;
多个目标;以及
存储器,所述存储器用于存储用于处理I/O流和I/O命令发出队列以及I/O完成队列的软件模块的集合,
其中将所述软件模块的集合配置成:
接收I/O命令,以访问存储于数据存储系统的目标中的数据,所述数据存储系统包含多个CPU;
多个传输线程运行于所述多个CPU中的第一组CPU中的第一CPU上,其中所述多个传输线程中的每个包括命令接收机通路和命令发送机通路;以及
多个数据通路线程运行于所述多个CPU中的第二组CPU中的第二CPU上,其中所述多个数据通路线程中的每个包括命令发出通路和命令完成通路,
其中传输线程的所述命令接收机通路将I/O命令登记到I/O命令发出队列,并且数据通路线程的所述命令发出通路处理所述I/O命令,
其中所述数据通路线程的所述命令完成通路将I/O完成通知登记到所述I/O完成队列,并且所述传输线程的所述命令发送机通路处理所述I/O完成通知,
其中所述I/O命令发出队列包括第一阵列队列,并且所述第一阵列队列中的每个对应于所述第一组CPU中各自的CPU,以及
其中所述I/O完成队列包括第二阵列队列,并且所述第二阵列队列中的每个对应于所述第二组CPU中各自的CPU。
14.根据权利要求13所述的数据储存系统,其中所述传输线程包括接收机和发送机,并且其中所述接收机将所述I/O命令发送到所述数据通路。
15.根据权利要求13所述的数据储存系统,其中所述数据通路线程将所述I/O命令发送到所述目标,并且接收来自所述目标的状态和/或者数据,并且将所述状态和/或者数据发送到所述传输线程的所述发送机。
16.根据权利要求13所述的数据储存系统,其中所述第一阵列队列包括对应于对所述数据通路线程分配的所述第二组CPU的数量的第一数量的节点。
17.根据权利要求16所述的数据储存系统,其中所述第一数量的节点包括头节点、尾节点和指向所述第一阵列队列中的队列的当前节点,并且其中从所述当前节点到所述尾节点中的节点由消费者拥有,并且所述第一阵列队列的所述剩余节点由生产者拥有。
18.根据权利要求17所述的数据储存系统,其中所述生产者是启动程序,并且所述消费者是目标。
19.根据权利要求18所述的数据储存系统,其中利用对每个所述数据通路线程是唯一的线程标识符,所述消费者获得对所述队列的排他性访问。
20.根据权利要求13所述的数据储存系统,其中所述第二阵列队列包括对应于对所述传输线程分配的所述第一组CPU的数量的第二数量的节点。
21.根据权利要求20所述的数据储存系统,其中所述第二数量的节点包括头节点、尾节点和指向所述第二阵列队列中的队列的当前节点,并且其中从所述当前节点到所述尾节点中的节点由消费者拥有,并且所述第一阵列队列的所述剩余节点由生产者拥有。
22.根据权利要求21所述的数据储存系统,其中所述生产者是所述目标,并且所述消费者是所述启动程序。
23.根据权利要求22所述的数据储存系统,其中利用对每个所述传输线程是唯一的线程标识符,所述消费者获得对所述队列的排他性访问。
24.根据权利要求13所述的数据储存系统,其中所述I/O命令发出队列和所述I/O完成队列中的每个是多生产者多消费者(MPMC)无锁队列,其中来自一个或者多个传输线程的工作请求能够到达多个数据通路线程,并且来自特定传输线程的工作请求能够到达一个或者多个数据通路线程,并且其中来自一个或者多个数据通路线程的工作请求能够到达特定传输线程,并且来自特定数据通路线程的工作请求能够到达一个或者多个传输线程。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662322035P | 2016-04-13 | 2016-04-13 | |
US62/322,035 | 2016-04-13 | ||
US15/209,566 US10146439B2 (en) | 2016-04-13 | 2016-07-13 | System and method for high performance lockless scalable target |
US15/209,566 | 2016-07-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107391270A true CN107391270A (zh) | 2017-11-24 |
CN107391270B CN107391270B (zh) | 2022-11-08 |
Family
ID=60038161
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710236677.9A Active CN107391270B (zh) | 2016-04-13 | 2017-04-12 | 高性能无锁可缩放目标的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10146439B2 (zh) |
JP (1) | JP6822887B2 (zh) |
KR (1) | KR20170117310A (zh) |
CN (1) | CN107391270B (zh) |
TW (1) | TWI745353B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106020937A (zh) * | 2016-07-07 | 2016-10-12 | 腾讯科技(深圳)有限公司 | 一种创建虚拟机的方法、装置及系统 |
US10101963B2 (en) * | 2016-08-16 | 2018-10-16 | Hewlett Packard Enterprise Development Lp | Sending and receiving data between processing units |
US10635485B2 (en) * | 2018-03-23 | 2020-04-28 | Intel Corporation | Devices, systems, and methods for lockless distributed object input/output |
US10776289B2 (en) | 2018-09-21 | 2020-09-15 | Microsoft Technology Licensing, Llc | I/O completion polling for low latency storage device |
US10740258B2 (en) * | 2018-10-23 | 2020-08-11 | Microsoft Technology Licensing, Llc | Timer-based I/O completion polling for low latency storage device |
JP6920001B2 (ja) * | 2018-12-04 | 2021-08-18 | 株式会社日立製作所 | マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法 |
US11960933B2 (en) | 2020-04-30 | 2024-04-16 | Red Hat, Inc. | Versioned progressive chunked queue for a scalable multi-producer and multi-consumer queue |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1487417A (zh) * | 2002-09-05 | 2004-04-07 | �Ҵ���˾ | iSCSI驱动程序与适配器的接口协议 |
US20060095606A1 (en) * | 2004-11-03 | 2006-05-04 | International Business Machines Corporation | Method, system and storage medium for lockless InfiniBandTM Poll for I/O completion |
US20080120489A1 (en) * | 2006-11-16 | 2008-05-22 | Shinri Inamori | Scalable Multi-Threaded Sequencing/Synchronizing Processor Architecture |
US7720064B1 (en) * | 2007-12-21 | 2010-05-18 | Qlogic, Corporation | Method and system for processing network and storage data |
US7953878B1 (en) * | 2007-10-09 | 2011-05-31 | Netapp, Inc. | Multi-threaded internet small computer system interface (iSCSI) socket layer |
US20150331720A1 (en) * | 2012-10-19 | 2015-11-19 | uCIRRUS | Multi-threaded, lockless data parallelization |
US20160077739A1 (en) * | 2014-09-16 | 2016-03-17 | Oracle International Corporation | System and method for supporting a low contention queue in a distributed data grid |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5421014A (en) * | 1990-07-13 | 1995-05-30 | I-Tech Corporation | Method for controlling multi-thread operations issued by an initiator-type device to one or more target-type peripheral devices |
US6240335B1 (en) * | 1998-12-14 | 2001-05-29 | Palo Alto Technologies, Inc. | Distributed control system architecture and method for a material transport system |
US7353305B2 (en) | 2002-06-28 | 2008-04-01 | Brocade Communications Systems, Inc. | Apparatus and method for data virtualization in a storage processing device |
US7177716B2 (en) * | 2004-02-28 | 2007-02-13 | Applied Materials, Inc. | Methods and apparatus for material control system interface |
US7941645B1 (en) * | 2004-07-28 | 2011-05-10 | Nvidia Corporation | Isochronous pipelined processor with deterministic control |
US8149854B2 (en) * | 2005-06-30 | 2012-04-03 | Intel Corporation | Multi-threaded transmit transport engine for storage devices |
US7616563B1 (en) | 2005-08-31 | 2009-11-10 | Chelsio Communications, Inc. | Method to implement an L4-L7 switch using split connections and an offloading NIC |
US20070156974A1 (en) | 2006-01-03 | 2007-07-05 | Haynes John E Jr | Managing internet small computer systems interface communications |
US8566833B1 (en) | 2008-03-11 | 2013-10-22 | Netapp, Inc. | Combined network and application processing in a multiprocessing environment |
US8196147B1 (en) * | 2008-10-31 | 2012-06-05 | Netapp, Inc. | Multiple-processor core optimization for producer-consumer communication |
US8180973B1 (en) | 2009-12-23 | 2012-05-15 | Emc Corporation | Servicing interrupts and scheduling code thread execution in a multi-CPU network file server |
US9235354B2 (en) | 2010-04-13 | 2016-01-12 | Hitachi, Ltd. | Storage network system and its control method |
WO2012026877A1 (en) * | 2010-08-23 | 2012-03-01 | Empire Technology Development Llc | Context switching |
US8938598B2 (en) * | 2011-07-06 | 2015-01-20 | Nvidia Corporation | Facilitating simultaneous submission to a multi-producer queue by multiple threads with inner and outer pointers |
US9298652B2 (en) * | 2013-03-15 | 2016-03-29 | Microsoft Technology Licensing, Llc | Moderated completion signaling |
US9792162B2 (en) * | 2013-11-13 | 2017-10-17 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Network system, network node and communication method |
US20160321010A1 (en) * | 2015-04-28 | 2016-11-03 | Kabushiki Kaisha Toshiba | Storage system having a host directly manage physical data locations of storage device |
KR102403489B1 (ko) * | 2015-07-10 | 2022-05-27 | 삼성전자주식회사 | 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법 |
KR20170032502A (ko) * | 2015-09-14 | 2017-03-23 | 삼성전자주식회사 | 스토리지 장치 및 그것의 인터럽트 발생 방법 |
US10031786B2 (en) * | 2016-01-13 | 2018-07-24 | International Business Machines Corporation | Lockless multithreaded completion queue access |
US10101939B2 (en) * | 2016-03-09 | 2018-10-16 | Toshiba Memory Corporation | Storage system having a host that manages physical data locations of a storage device |
US10222995B2 (en) * | 2016-04-13 | 2019-03-05 | Samsung Electronics Co., Ltd. | System and method for providing a zero contention parallel data stack |
-
2016
- 2016-07-13 US US15/209,566 patent/US10146439B2/en active Active
-
2017
- 2017-02-27 KR KR1020170025700A patent/KR20170117310A/ko not_active Application Discontinuation
- 2017-03-02 TW TW106106752A patent/TWI745353B/zh active
- 2017-04-07 JP JP2017076841A patent/JP6822887B2/ja active Active
- 2017-04-12 CN CN201710236677.9A patent/CN107391270B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1487417A (zh) * | 2002-09-05 | 2004-04-07 | �Ҵ���˾ | iSCSI驱动程序与适配器的接口协议 |
US20060095606A1 (en) * | 2004-11-03 | 2006-05-04 | International Business Machines Corporation | Method, system and storage medium for lockless InfiniBandTM Poll for I/O completion |
US20080120489A1 (en) * | 2006-11-16 | 2008-05-22 | Shinri Inamori | Scalable Multi-Threaded Sequencing/Synchronizing Processor Architecture |
US7953878B1 (en) * | 2007-10-09 | 2011-05-31 | Netapp, Inc. | Multi-threaded internet small computer system interface (iSCSI) socket layer |
US7720064B1 (en) * | 2007-12-21 | 2010-05-18 | Qlogic, Corporation | Method and system for processing network and storage data |
US20150331720A1 (en) * | 2012-10-19 | 2015-11-19 | uCIRRUS | Multi-threaded, lockless data parallelization |
US20160077739A1 (en) * | 2014-09-16 | 2016-03-17 | Oracle International Corporation | System and method for supporting a low contention queue in a distributed data grid |
Also Published As
Publication number | Publication date |
---|---|
TW201740279A (zh) | 2017-11-16 |
US10146439B2 (en) | 2018-12-04 |
JP6822887B2 (ja) | 2021-01-27 |
JP2017191603A (ja) | 2017-10-19 |
CN107391270B (zh) | 2022-11-08 |
KR20170117310A (ko) | 2017-10-23 |
TWI745353B (zh) | 2021-11-11 |
US20170300228A1 (en) | 2017-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391270A (zh) | 高性能无锁可缩放目标的系统和方法 | |
US11757981B2 (en) | Efficient and reliable host distribution of totally ordered global state | |
CN105684377B (zh) | 一种创建支持mpp数据库中的可重读隔离级别的分布式事务管理器的系统和方法 | |
CN1704921B (zh) | 高性能计算系统和方法 | |
JP2008250631A (ja) | ストレージ装置及びその制御方法 | |
CN101375241A (zh) | 集群文件系统中的有效数据管理 | |
CN103299287A (zh) | 基于转置盒的网络调整 | |
CN102449961A (zh) | 用于分组路由的方法和装置 | |
CN102439910A (zh) | 包括分组成单元的节点的层级结构的网络拓扑 | |
CN106484322A (zh) | 一种挂载文件系统的方法、装置及设备 | |
CN107402823A (zh) | 提供零争用并行数据堆栈的系统和方法 | |
US9232000B1 (en) | Method and system for balancing load across target endpoints on a server and initiator endpoints accessing the server | |
CN104461862B (zh) | 数据处理系统以及线程崩溃后的资源恢复方法和装置 | |
CN104392377A (zh) | 一种云交易系统 | |
EP2318914B1 (en) | Method and apparatus for audit logging and role based security using one-way proxy architecture | |
US9407601B1 (en) | Reliable client transport over fibre channel using a block device access model | |
CN104126180A (zh) | 通过存储传输提供不同的服务水平 | |
US20090235048A1 (en) | Information processing apparatus, signal transmission method, and bridge | |
US9237057B1 (en) | Reassignment of a virtual connection from a busiest virtual connection or locality domain to a least busy virtual connection or locality domain | |
CN110399415A (zh) | 一种数据反序列化装置及计算终端 | |
US9270786B1 (en) | System and method for proxying TCP connections over a SCSI-based transport | |
US9509797B1 (en) | Client communication over fibre channel using a block device access model | |
TWI515576B (zh) | 巨資系統的資料分派處理方法及其系統 | |
CN106528475A (zh) | 一种支持单八路和双四路动态分区的多路计算机系统 | |
US9473589B1 (en) | Server communication over fibre channel using a block device access model |
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 |