JP2017191603A - 高性能なロックレススケーラブルターゲットを提供するシステム及び方法 - Google Patents

高性能なロックレススケーラブルターゲットを提供するシステム及び方法 Download PDF

Info

Publication number
JP2017191603A
JP2017191603A JP2017076841A JP2017076841A JP2017191603A JP 2017191603 A JP2017191603 A JP 2017191603A JP 2017076841 A JP2017076841 A JP 2017076841A JP 2017076841 A JP2017076841 A JP 2017076841A JP 2017191603 A JP2017191603 A JP 2017191603A
Authority
JP
Japan
Prior art keywords
command
queue
path
thread
cpus
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
JP2017076841A
Other languages
English (en)
Other versions
JP6822887B2 (ja
JP2017191603A5 (ja
Inventor
ヴェンカタ バヌ プラカシュ ゴラップディ,
Bhanu Prakash Gollapudi Venkata
ヴェンカタ バヌ プラカシュ ゴラップディ,
ヴィジェイ ジャックラ,
Jakkula Vijaya
ヴィジェイ ジャックラ,
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics 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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2017191603A publication Critical patent/JP2017191603A/ja
Publication of JP2017191603A5 publication Critical patent/JP2017191603A5/ja
Application granted granted Critical
Publication of JP6822887B2 publication Critical patent/JP6822887B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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
    • 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/38Information transfer, e.g. on bus
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0036Small 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)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】ロックレススケーラブルターゲットのためのシステム及び方法を提供する。【解決手段】本発明の方法は、第1グループのCPU上でコマンドレシーバー経路及びコマンドトランスミッタ経路を各々含む複数の伝送スレッドを作動させる段階と、第2グループのCPU上でコマンド発行経路及びコマンド完了経路を各々含む複数のデータ経路スレッドを作動させる段階と、伝送スレッドのコマンドレシーバー経路を使用してI/Oコマンド発行キューにI/Oコマンドを配置し、データ経路スレッドのコマンド発行経路を使用してI/Oコマンドを処理する段階と、データ経路スレッドのコマンド完了経路を使用してI/O完了キューにI/O完了通知を配置し、伝送スレッドのコマンドトランスミッタ経路を使用してI/O完了通知を処理する段階と、を有する。【選択図】図1

Description

本発明は、データストレージシステムに関し、より詳しくは、高性能なロックレススケーラブルターゲットを提供するシステム及び方法に関する。
一般的なSAN(storage area network)において、ターゲットは、持続的なデータストレージ空間(例えば、論理ユニットナンバー(LUN:logical unit number)、名称空間(namespace))を光ファイバーコネクション又はスイッチングネットワークを通じて1つ以上のイニシエーター(initiator)に露出させる。イニシエーターは、インターフェイスセッション(例えば、SCSI(small computer system interface)セッション)を開始して、コマンド(例えば、SCSIコマンド)を伝送するエンドポイント(endpoint)を指す。ターゲットは、イニシエーターの作業要請を待って、入/出力(I/O)動作を遂行するエンドポイントを指す。一般的なコンピュータアーキテクチャにおいて、イニシエーターはクライアントと称され、ターゲットはサーバーと称される。1つのターゲットは複数のイニシエーターにサービスを提供し、イニシエーターに1つ以上のLUNを提供する。
ターゲットは、相互に合意されたSANプロトコルを通じて1つ以上のイニシエーターと通信する。SANプロトコルの例としては、FCP(Fibre Channel Protocol)、pSCSI(parallel SCSI)、iSCSI(internet SCSI)、HyperSCSI、ファイバチャンネル(Fibre Channel)、ATA(Advanced Technology Attachment)、SATA(Serial ATA)、AoE(ATA over Ethernet(登録商標))、InfiniBand、及びNVMe(Non−Volatile Memory Express) over Fabricsを含むが、これらに限定されない。
SANプロトコルは、イニシエーターがターゲットにI/Oコマンドを伝送できるようにする。データセンターのデータストレージ装置は、SANを通じて物理的及び/又は論理的に分散された複数のターゲットを含む。SANプロトコルは、データストレージ装置がローカルに接続されたように見える錯覚をホストに提供しながら、データストレージ装置をターゲットのアレイに統合する。
ストレージターゲットは、一般的に複数のコネクションを通じて複数のイニシエーターにバックエンド(backend)LUNを露出させる。各々のイニシエーターは、1つ以上のコネクションをターゲットに開放し、ターゲット内の1つ以上のLUNにアクセスする。入/出力(I/O)フローの観点から、データ経路内に確立された複数の同期点(synchronization point)は、特に、複数のセッションが同時に複数のLUNにアクセスする場合、I/O性能に影響を及ぼす。
フロントエンドI/Oスタック(frontend I/O stack)でのデータ経路は、伝送プロトコル階層(layer)とSCSIコア階層とに分けられる。伝送プロトコル階層での処理は、コネクション単位ベース(per−connection based)であり、SCSIコア階層での処理は、LUN単位ベース(per−LUN based)である。
伝送プロトコル階層での処理は、I/Oコマンドを特定のコネクションで発行(issue)することと、その特定のコネクションでI/Oコマンドを完了(complete)することとを含む。SCSIコア階層での処理は、I/Oコマンドを特定のLUNに発行することと、その特定のLUNに発行されたI/Oコマンドを完了することとを含む。全体のI/O経路が伝送プロトコル階層のスレッドコンテキスト(thread context)で実行される場合、多様な同期点がLUNレベルのみならず、コネクションレベルでも確立される、したがって、全体的なI/O性能に影響が及ぶ。これは、SCSIコア階層でのI/OコンテキストがLUN固有であるのに対して、伝送プロトコル階層でのI/Oコンテキストはコネクション固有であるためである。
米国特許第7355305号明細書 米国特許第7953878号明細書 米国特許第8566833号明細書 米国特許第7720064号明細書 米国特許第8139482号明細書 米国特許第8149854号明細書 米国特許第8180973号明細書 米国特許出願公開第2007/0156974号明細書 米国特許出願公開第2011/0252198号明細書
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、データストレージシステムにおいて、ロックレススケーラブルターゲットのためのシステム及び方法を提供することにある。
上記目的を達成するためになされた本発明の一態様による方法は、データストレージシステムのターゲットにアクセスする方法であって、複数のCPUを含むデータストレージシステムのターゲットに格納されたデータにアクセスするコマンドを受信する段階と、前記複数のCPUの中の第1グループのCPU上でコマンドレシーバー経路及びコマンドトランスミッタ経路を各々含む複数の伝送スレッドを作動させる段階と、前記複数のCPUの中の第2グループのCPU上でコマンド発行経路及びコマンド完了経路を各々含む複数のデータ経路スレッドを作動させる段階と、前記伝送スレッドの前記コマンドレシーバー経路を使用してI/Oコマンド発行キューにI/Oコマンドを配置し、前記データ経路スレッドの前記コマンド発行経路を使用して前記I/Oコマンドを処理する段階と、前記データ経路スレッドの前記コマンド完了経路を使用してI/O完了キューにI/O完了通知を配置し、前記伝送スレッドの前記コマンドトランスミッタ経路を使用して前記I/O完了通知を処理する段階と、を有し、前記I/Oコマンド発行キューは、第1キューアレイを含み、前記第1キューアレイの各々は、前記第1グループのCPUのそれぞれのCPUに対応し、前記I/O完了キューは、第2キューアレイを含み、前記第2キューアレイの各々は、前記第2グループのCPUのそれぞれのCPUに対応することを特徴とする。
上記目的を達成するためになされた本発明の一態様によるデータストレージシステムは、複数のCPUと、複数のターゲットと、I/Oフロー、I/Oコマンド発行キュー、及びI/O完了キューを処理するソフトウェアモジュールセットを格納するメモリと、を備え、前記ソフトウェアモジュールセットは、複数のCPUを含むデータストレージシステムのターゲットに格納されたデータにアクセスするI/Oコマンドを受信し、前記複数のCPUの第1グループのCPUの中の第1CPU上でコマンドレシーバー経路及びコマンドトランスミッタ経路を各々含む複数の伝送スレッドを作動させ、前記複数のCPUの第2グループのCPUの中の第2CPU上でコマンド発行経路及びコマンド完了経路を各々含む複数のデータ経路スレッドを作動させ、前記伝送スレッドの前記コマンドレシーバー経路はI/Oコマンドを前記I/Oコマンド発行キューに配置し、前記データ経路スレッドの前記コマンド発行経路は、前記I/Oコマンドを処理し、前記データ経路スレッドの前記コマンド完了経路は、I/O完了通知を前記I/O完了キューに配置し、前記伝送スレッドの前記コマンドトランスミッタ経路は、前記I/O完了通知を処理し、前記I/Oコマンド発行キューは、第1キューアレイを含み、前記第1キューアレイの各々は、前記第1グループのCPUのそれぞれのCPUに対応し、前記I/O完了キューは、第2キューアレイを含み、前記第2キューアレイの各々は、前記第2グループのCPUのそれぞれのCPUに対応することを特徴とする。
本発明によれば、データ経路で同期点及びロックの必要性を除去し、複数のセッションが同時に複数のLUNをアクセスする場合にI/O性能を向上させることができる。
本発明の一実施形態によるモノリシック(monolithic)スレッディングモデルにおけるデータ経路の例を示す図である。 本発明の一実施形態によるスレッディングモデルの例におけるデータ経路を示すブロック図である。 本発明の一実施形態による分割されたスレッディングモデルの例を示す図である。 本発明の一実施形態によるスレッディングモデルの例を示す概略図である。 本発明の一実施形態によるSPSCロックレス・キュー(single−producer single−consumer lockless queue)を示すブロック図である。 本発明の一実施形態によるMPMCロックレス・キュー(multi−producer multi−consumer lockless queue)の例を示すブロック図である。 本発明の一実施形態によるスレッディングモデルの例を示すブロック図である。 本発明の他の実施形態によるMPMCロックレス・キューの例を示すブロック図である。 本発明のさらに他の実施形態によるMPMCロックレス・キューの例を示すブロック図である。
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。 本明細書で説明する特徴及び構成の各々は、高性能なロックレススケーラブルターゲット(lockless scalable target)を提供するための他の特徴及び構成と共に又は分離されて利用される。これらの追加的な特徴及び構成が分離されるか又は結合されて利用される代表的な例の詳細な説明は、単に本発明の一態様を具現するために当業者に開示するものである。したがって、発明の詳細な説明に記載した特徴の組合せは、広い意味で開示する必要はなく、代わりに特に代表的な実施形態を説明するために開示する。
図面は、必ずしもスケール通りに示したものではなく、類似する構造又は機能の構成要素は、通常同じ参照番号で表示する。図面は、本明細書で説明する多様な実施形態の詳細な説明を可能にするために意図したものである。図面は、本明細書に記載したすべての構成を示すものではない。
以下の説明では、単なる説明の目的のために、特定の名称を、本発明の完全な理解のために示す。しかし、このような特定の細部事項は、本発明を実施するために必須ではないことは当業者に明らかである。
発明の詳細な説明の幾つかの部分は、アルゴリズム及びコンピュータメモリ内のデータビットに対する動作のシンボル表現で提示する。これらのアルゴリズム的な説明及び表現は、他の分野の通常の知識を有する技術者に作業の実体を効果的に伝達するために、データ処理分野の当業者によって使用される。ここで、アルゴリズムは、一般的に所望の結果を導く段階の一貫性のある手順である。段階は、物理量の物理的な操作が必要なものである。通常、必須ではないが、これらの量は、格納、伝達、結合、比較、及びその他の操作可能な電気信号又は磁気信号の形態を取る。これらの信号をビット、値、要素、シンボル、特徴、用語、数などと称することは、主に一般的な用法上の理由で便利である。
しかし、これらの用語及び類似の用語の全ては、適切な物理量に関連し、単にこれらの量に適用される便宜的なラベルである。具体的に、以下の説明で、「処理」、「コンピューティング」、「計算」、「決定」、「表示」等の用語を使用する論議は、コンピュータシステムのレジスター及びメモリ内で物理(電気)量として表されるデータを、コンピュータシステムのメモリ及びレジスター、又は他の情報ストレージ、伝送装置又は表示装置内で物理量として示される他のデータに処置して変換するコンピュータシステム又は同様の電子コンピューティング装置の活動及びプロセスを示す。
本明細書で説明するアルゴリズムは、本質的に任意の特定コンピュータ又は他の装置に関連しない。多様な汎用システム、コンピュータサーバー、又は個人用コンピュータは、本明細書の記載にしたがうプログラムと共に使用されるか、又は要求された方法の段階を遂行するための特化された装置を構成するのに便利である。このような多様なシステムのために要求される構造を以下で説明する。多様なプログラミング言語が本明細書に記載のように本発明を具現するのに使用される。
また、代表的な実施形態及び従属請求項の多様な特徴は、本発明のさらに有用な実施形態を提供するために、特に明示的に列挙しない方式で結合される。また、エンティティーグループ(groups of entities)のすべての値の範囲又は指示は、本発明の範囲を制限する目的のみならず、元の目的のための全ての可能な中間値又は中間エンティティーを開示する。また、明示的な基準及び図面に示した構成要素の寸法及び形状は、本発明がどのように実施されるのかを理解するのを助けるように設計されるが、実施形態に示した寸法及び形状に限定されない。
図1は、本発明の一実施形態によるモノリシック(monolithic)スレッディングモデルにおけるデータ経路の例を示す図である。
データ経路は、iSCSIレシーバー経路(iSCSI receiver path)101、SCSIコマンド発行経路(command issue path)102、SCSIコマンド完了経路(command completion path)103、及びiSCSIトランスミッタ経路(transmitter path)104のモノリシックシーケンスを含む。
ストレージシステムは、複数の中央処理装置(CPU:central processing unit)(例えば、N個のCPU)を含み、当該ストレージシステムの各CPUは、データ経路のライフサイクルに亘ってそれぞれのデータ経路の確立、処理、管理、及び完了を担当する。
データ経路(101〜104)のうち、iSCSIレシーバー経路101及びiSCSIトランスミッタ経路104は、イニシエーターとSCSIターゲットとの間の伝送プロトコル(即ち、iSCSI)で確立され、コネクション単位に基づく。例えば、ログイン/ログアウト、バッファ管理、及び作業管理処理(task management handling)は、コネクション単位に基づいてセッション/コネクションレベルで実行される。I/Oコマンドは、セッション/コネクションレベルでキューイング(queue)されて、追跡(track)される。
データ経路(101〜104)のうち、SCSIコマンド発行経路102及びSCSIコマンド完了経路103は、LUNレベルでSCSIターゲットとLUNとの間に確立される。例えば、ターゲットストレージ装置へのSCSIコマンド及びターゲットストレージ装置からのSCSIコマンド並びにエラー処理は、LUNレベルで追跡される。図1に示すモノリシックスレッドモデルでは、ターゲットシステムの利用可能なCPUリソースは、伝送プロトコル及びSCSIコアレベルプロトコルの両方を作動させるために共有される。モノリシックスレッディングモデルは、キャッシュ局所性(cache locality)を最大化しない。
本発明は、別個のスレッドで独立に伝送プロトコル及びSCSIコアプロトコルを分割して処理する新規なスレッディングモデル(threading model)を提供する。
本スレッディングモデルは、伝送プロトコルスレッドとSCSIコアスレッドとの間でロックレス・キュー設計(lockless queue design)を採用する。ロックレス・キュー設計は、伝送プロトコル及びSCSIコアプロトコルに対するスレッドを分割し、独立に作動させることによって、I/O性能を向上させる。
ストレージシステムのCPUリソースは、伝送プロトコル階層とSCSIコア階層との間で分配される。伝送プロトコルスレッドは、伝送プロトコル階層でのスレッド実行を処理するために割り当られたCPUでのみスケジューリングされる。SCSIコアスレッドは、SCSIコア階層で作動するスレッドを処理するために割り当られたCPUでのみスケジューリングされる。伝送プロトコルスレッドは、受信経路及び送信経路を処理する。SCSIコアスレッドは、特定のLUNに対するI/O要請及びその特定のLUNに対するI/O完了(completion)を処理する。
本発明のシステム及び方法は、複数のLUN及びそれらへのコネクションに対して高い拡張性(scalability)を提供する。本発明のシステム及び方法は、さらにキャッシュ局所性を最大化するために伝送プロトコルスレッド及びLUNスレッドを分離する。その上で、ロックレス・キュー設計は、複数のLUNが複数のコネクションを通じてアクセスされた時、ロック衝突(lock contention)を除去する。
本明細書ではiSCSIターゲットについて説明するが、本発明は、システムリソースを効率的に利用することと、同期化ボトルネックを回避するために高性能なターゲットI/O性能を提供することとを活用できる何れのSANプロトコル(例えば、FCP、pSCSI、iSCSI、HyperSCSI、Fibre Channel、ATA、SATA、AoE、InfiniBand、及びNVMe over Fabrics)にも適用される。例えば、NVMe over Fabricsプロトコルで、SCSIコア階層に相当するコア階層は、NVMeキューイングインターフェイス(NVMe Queuing interface)及びコマンドセットと称される。
図2は、本発明の一実施形態によるスレッディングモデルの例におけるデータ経路を示すブロック図である。
データ経路200は、コネクション特定経路251とLUN特定経路252とに分離される。コネクション特定経路251は、レシーバー201及びトランスミッタ211を含む。イニシエーター(クライアント)のレシーバー201は、ホストから命令語(instruction)を受信して、iSCSIコマンド202及び関連するデータ203を生成し、ターゲットとのコネクションを確立して、SCSI I/Oモジュール204とTM(task management) I/Oモジュール205とを通じてターゲットにiSCSIコマンド202及びデータ203を伝送する。
LUN特定経路252は、読出し、書込み、及びトリム(trim)のようなSCSIコマンドに関連するデータを格納するためのデータCDB(data command descriptor blocks)221、及び問合せ(inquiry)、読出し、及び容量のようなSCSIコマンドを格納するための制御CDB(control CDB)222を含む。iSCSIコマンド202及びデータ203は、それぞれデータCDB221及び制御CDB222に格納される。
LUN特定経路252は、SCSI管理コマンド(例えば、中断、LUNリセット)を格納するためのTM I/Oブロック223と、状態/データブロック224をさらに含む。ホストから受信したTMコマンドはTM I/Oブロック223に格納される。ターゲットから受信したターゲットの状態及び関連データは、状態/データブロック224に格納される。制御CDB222は、特定の制御コマンドに対する状態及びデータを更新するために、状態/データブロック224に直接アクセスする。I/O完了のようなターゲットに対する状態/データ情報は、コネクション特定経路251のトランスミッタ211に返送される。
図3は、本発明の一実施形態による分割されたスレッディングモデルの例を示す図である。
ターゲットシステムは、ワークロード(work load)の類型に基づいてiSCSI伝送プロトコルとSCSIコマンドとの間での処理のために分配された複数のCPUを含む。コネクション特定スレッド(即ち、伝送プロトコルでのiSCSI)は、イニシエーターとSCSIターゲットとの間の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とのシーケンスを含む。コネクション特定スレッドは1つ以上のM個のCPUに割り当られる。
iSICSIレシーバー経路301は、SCSIコマンド発行経路302(即ち、SCSIレシーバー)を含むSCSI I/O要請をキューイング(queue)する。SCSIコマンドが完了した後、SCSIターゲットはSCSIコマンド完了経路303(即ち、SCSIトランスミッタ)をキューイングする。
LUN単位に基づいて確立されたSCSIコマンド発行経路302及びSCSIコマンド完了経路303は、N個のCPUに割り当られる。SCSIコマンドが完了した後、SCSIターゲットは、イニシエーターとSCSIターゲットとの間の前に確立された伝送コネクション上のイニシエーターにI/O完了(例えば、iSCSIトランスミッタ経路304)をキューイングする。最後に、I/O完了は、イニシエーターとSCSIターゲットとの間のコネクション特定スレッドを確立したCPUによって処理される。
図4は、本発明の一実施形態によるスレッディングモデルの例を示す概略図である。本スレッディングモデルは、iSCSIレシーバー経路401、iSCSIトランスミッタ経路404、SCSIコマンド発行経路402、及びSCSIコマンド完了経路403を含むデータ経路を提供する。
I/Oコマンド発行経路で、iSCSIレシーバー経路401は、I/Oコマンド発行キュー410を使用してI/OコマンドをSCSIコマンド発行経路402に配置する。I/Oコマンド返送(return)経路で、SCSIコマンド完了経路403は、I/O完了キュー411を使用してI/O完了をiSCSIトランスミッタ経路404に配置する。
本実施形態で、I/Oコマンド発行キュー410及びI/O完了キュー411は、複数のコネクションからのI/Oコマンドが1つのLUNに到達し、1つのコネクションからのI/Oコマンドが複数のLUNに到達するMPMC(multi−producer and multi−consumer)ロックレス・キューである。
本発明の一実施形態において、キューの文脈で、生産者(producer)はイニシエーターと称し、消費者(consumer)はターゲットと称する。いくつかの実施形態で、生産者はターゲットと称し、消費者はイニシエーターと称する。例えば、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コア階層は生産者であり、伝送プロトコル階層は消費者である。
コネクション単位である伝送プロトコル階層によって生成された作業要請は、複数のLUNに伝達される。同様に、LUN単位であるSCSIコア階層によって生成された作業要請は、複数のコネクションに伝達される。伝送プロトコル階層とSCSIコア階層との間の通信は一般的にロック(lock)を要求する同期点を含む。
本発明の一実施形態によるシステムは、伝送プロトコル階層及びSCSIコア階層がロックレス方式でアクセスされるようにする。
図5は、本発明の一実施形態によるSPSC(single−producer single−consumer)ロックレス・キューを示すブロック図である。
ロックレス・キュー内の各ノードは、データコンテナ(data container)及びポインターを含み、一連のノードがリンクされたリスト(linked list)に連結される。
本実施形態によれば、図4のI/Oコマンド発行キュー410及びI/O完了キュー411の各々は、図5に示すロックレス・キューを含む。ロックレス・キューは、ヘッドノード501及びテールノード503を含む。キュー内にただ1つのノードしか存在しない場合、ヘッドノード501とテールノード503とは同一である。現在ノード(current node)502は、リストの開始点を意味し、開始点から消費者はリストトラバーサル(list traversal)を開始し、ノードを消費する。いくつかの実施形態で、現在ノード502は、消費者開始又は消費者ヘッド(生産者によって所有されるヘッドノード501に対して)と称される。
図5に示すリンクされたリストの各ノードは、データコンテナ511と、次のノードを示すポインター512とを含む。生産者は、新しいノード(例えば、新しいI/Oコマンドに対応するノード)を生成し、新しく生成されたノードをキューのテールノード503に連結して、新しいノードを示すようにテールノード503のポインターを更新する。このような方法で、新しいノードが既存のキューに加えられる。同様に、生産者は、消費されたノードをヘッドノード501から現在ノード502まで解放させる。
システムリソースが利用可能である場合、生産者は、消費者によるノード消費処理から独立して、消費されたノードを解放させる。この意味で、生産者による、消費されたノードを解放するプロセスは、レイジー削除(lazy delete)と称される。ヘッドノード501から現在ノード502の前までのノードは生産者によって所有され、現在ノード502からテールノード503までのノードは消費者によって所有される。消費者は、現在ノード502からテールノード503までリストをトラバース(traverse)し、現在ノード502でアイテムを消費し、後続のノードに現在のポインターを更新する。もし現在のポインターがテールノード503を示す場合、消費者はノードを消費しない。
本発明のロックレス・キューは、制御情報を保有してロックレスリストを管理する制御構造(control structure)を提供する。生産者は先頭及び最後のポインターを所有する。生産者によって新しいノードがロックレスリストに加えられると、最後のポインターが更新される。生産者が消費されたノードを削除すると、先頭のポインターが更新される。消費者が現在ノード502からテールノード503までリストをトラバースするので、現在のポインターは消費者によって更新される。
ロックレス・キューの現在のポインターの制御情報と所有権は、ロックレス・キューの制御構造を使用して生産者と消費者との間でシームレスに(seamlessly)交換されるので、本発明のロックレス・キューは、データ経路での同期点及びロックの必要性を除去し、特に、複数のセッションが同時に複数のLUNをアクセスする場合、I/O性能を向上させる。
図6は、本発明の一実施形態によるMPMCロックレス・キュー(multi−producer multi−consumer lockless queue)の例を示すブロック図である。MPMCロックレス・キューは、N個のヘッドノード(ヘッド1〜ヘッドN)の制御アレイ601を含む。ここで、Nは生産者が作動させる予定のスレッド数である。
生産者はN個のスレッドで作動させる予定であり、消費者はM個のスレッドで作動させる予定である。1つの生産者が複数のスレッドを作動させるので、生産者の数とスレッドの数(N)とは異なる。同様に、1つの消費者が複数のスレッドを作動させ、複数の生産者によって生産されたノードを消費できるので、消費者の数とスレッドの数(M)とは異なる。制御アレイ601で、生産者はノードを生成し、消費者はノードを消費する。N個のスレッドの各々に対応する制御構造はSPSCロックレス・キューを維持する。消費者はN個のスレッドの制御アレイ601を維持する。
本実施形態において、MPMCロックレス・キューは、スレッド識別子(ID)を利用してスレッドへの排他的なアクセスを提供する。
例えば、所定のスレッド上で実行作動させる生産者は、対応するキュー内に新しいノードを生成する必要がある。新しいノードを追加する場合、生産者は、自分のスレッド識別子(ID)を制御アレイ601にインデックス(index)することによって、キューに排他的にアクセスする。各々の生産者は、キューへの排他的なアクセスを獲得して新しいノードを生成するので、複数の生産者の間に競合がない。
所定のスレッド上で作動させる消費者は、複数の生産者に属する複数のノードを消費する。同様に、各々の消費者は、制御アレイ601にあるキューに排他的にアクセスするので、複数の消費者の間に競合がない。
図7は、本発明の一実施形態によるスレッディングモデルの例を示すブロック図である。本スレッディングモデルは、複数のiSCSIコネクションスレッド701及び複数のSCSI LUNスレッド751を含む。説明目的のために、iSCSIコネクションスレッド701は、3つのCPUで作動し、SCSI LUNスレッド751は2つのCPUで作動する。
iSCSIコネクションスレッド701の各々は、SCSI LUNスレッド751を作動させるCPUの各々に対応する2つのノード(即ち、ヘッド1a、ヘッド2a)を含む。SCSI LUNスレッド751の各々は、iSCSIコネクションスレッド701を作動させるCPUの各々に対応する3つのノード(即ち、ヘッド1b、ヘッド2b、ヘッド3b)を含む。本実施形態では、iSCSIコネクションスレッド701の各々をそれぞれ作動させるために割り当られた3つのCPU、及びSCSI LUNスレッド751の各々をそれぞれ作動させるために割り当られた2つのCPUを含むが、本スレッディングモデルは、本発明の技術的範囲から逸脱しない範囲内で、任意の数のiSCSIコネクションスレッド及びSCSI LUNスレッドに適用される。
各々のiSCSIコネクションスレッド(CT1、CT2、CT3)は、それぞれのCPU(CPU1、CPU2、CPU3)に割り当られる。同様に、各々のSCSI LUNスレッド(LT1、LT2)は、それぞれのCPU(CPU4、CPU5)に割り当られる。6個のiSCSIコネクション(C1〜C6)は、iSCSIスレッド(CT1、CT2、CT3)によってサービスされる。4個のLUN(L1〜L4)は、SCSI LUNスレッド(LT1、LT2)によってサービスされる。
生産者コネクションスレッド(例えば、iSCSIコネクションスレッド701)は、(処理される予定の)I/Oコマンドを、それぞれのCPU−IDによってインデックスされたLUN単位のキューに直接生成する。SCSI LUNスレッド751は、(完了された)I/Oコマンドを、それぞれのCPU−IDによってインデックスされるようにiSCSIコネクションスレッド701によって生成されたI/Oコマンドにしたがって、コネクション単位のキューに直接生成する。
消費者コネクションスレッド(例えば、SCSI LUNスレッド751)は、当該コネクションに属するI/Oコマンドを消費する。SCSI LUNスレッド751は、当該LUNに属するI/Oコマンドを消費する。
iSCSIコネクションスレッド701(生産者)は、I/Oコマンドを個別のSCSI LUNスレッド751(消費者)に直接発行し、SCSI LUNスレッド751(生産者)は、I/O完了を個別のiSCSIコネクションスレッド701(消費者)に直接発行する。各々のI/Oコマンドは、特定のスレッドを作動させるプロセッサに固有のCPU−IDによって識別され、それにより、独立して作動するスレッド間で同期点又はロックの必要性を除去する。
図8は、本発明の他の実施形態によるMPMCロックレス・キューの例を示すブロック図である。I/O発行経路内で、生産者は伝送プロトコル階層であり、消費者はSCSIコア階層である。伝送プロトコルスレッド(例えば、図3のiSCSIレシーバー経路301)は、N個のCPUのLUNアレイ801にアクセスする。ここで、Nは伝送プロトコルスレッドのために割り当られたCPUの数である。
アレイインデックスは、伝送プロトコルスレッドが作動中であるCPU番号(1〜N)を指す。アレイインデックスの各々は、ロックレスシングルリンクされたリスト(lockless single linked list)を含み、このロックレスシングルリンクされたリストで、伝送プロトコルスレッドは特定のLUNに発行されたI/Oコマンドの作業要請を生成する。
SCSIコアスレッド(例えば、図3のSCSIコマンド発行経路302)は、伝送プロトコルスレッドによってキューイングされる作業エントリを処理するSCSIコアCPUで実行される。SCSIコアスレッドは、対応するSCSIコアCPUで作動するスレッド内にある現在ポインターを更新する。SCSIモジュール(LUN)は、図8に示すようなデータ構造を有し、I/O要請を生成して配置するためにiSCSIモジュール(伝送プロトコル階層)にインターフェイスを提供する。
図9は、本発明のさらに他の実施形態によるMPMCロックレス・キューの例を示すブロック図である。I/O完了経路内で、生産者はSCSIコア階層であり、消費者は伝送プロトコル階層である。LUNスレッド(例えば、図3のSCSIコマンド完了経路303)は、M個のCPUのコネクション単位のアレイ901にアクセスする。ここで、MはSCSIコアスレッドのために割り当られたCPUの数である。
アレイインデックスは、SCSIコアスレッドが作動中であるCPU番号(1〜M)を指す。アレイインデックスの各々は、ロックレスシングルリンクされたリストを含み、このロックレスシングルリンクされたリストで、SCSIコアスレッドは特定のコネクションに対する完了されたI/Oコマンドの作業要請を生成する。
対応するCPUで実行される伝送プロトコルスレッド(例えば、図3のiSCSIトランスミッタ経路304)は、すべてのSCSIコアスレッドによってキューイングされるI/Oコマンドを処理する。iSCSIスレッドは、対応する伝送プロトコルCPUで作動するiSCSIスレッド内にある現在のポインターを更新する。iSCSIモジュール(iSCSIコネクション)は、図9に示すようなデータ構造を有し、I/O完了を生成して配置するためにSCSIモジュール(SCSIコア階層)にインターフェイスを提供する。
本発明のシステム及び方法は、伝送処理とデータ(又はコア)処理とを分離する。本発明のシステム及び方法は、伝送処理及びデータ処理に内在する同期化問題を解決するMPMC(multi−producer−multi−consumer)ロックレス設計を具現する。本発明のシステム及び方法は、伝送処理とデータ処理との間のリソース(例えば、CPU)共有を提供して、伝送階層及びコア階層の各々のリソースに対する互いに異なりかつ多様な要求に対応する。I/O書込み(IOW)及びCPUリソースの比率は、システム仕様に応じて異なる。
本発明の一実施形態による方法は、複数のCPUを含むデータストレージシステムのターゲットに格納されたデータにアクセスするコマンドを受信する段階と、複数のCPUの中の第1グループのCPU上でコマンドレシーバー経路及びコマンドトランスミッタ経路を各々含む複数の伝送スレッドを実行する段階と、複数のCPUの中の第2グループのCPU上でコマンド発行経路及びコマンド完了経路を各々含む複数のデータ経路スレッドを作動させる段階と、伝送スレッドのコマンドレシーバー経路を使用してI/Oコマンド発行キューにI/Oコマンドを配置し、データ経路スレッドのコマンド発行経路を使用してI/Oコマンドを処理する段階と、データ経路スレッドのコマンド完了経路を使用してI/O完了キューにI/O完了通知を配置し、伝送スレッドのコマンドトランスミッタ経路を使用してI/O完了通知を処理する段階と、を有し、I/Oコマンド発行キューは、第1キューアレイを含み、第1キューアレイの各々は、第1グループのCPUのそれぞれのCPUに対応し、I/O完了キューは、第2キューアレイを含み、第2キューアレイの各々は、第2グループのCPUのそれぞれのCPUに対応する。
伝送スレッドは、レシーバー及びトランスミッタを含み、レシーバーはI/Oコマンドをデータ経路に伝送する。
データ経路スレッドは、I/Oコマンドをターゲットに伝送し、ターゲットから状態及びデータの中の少なくとも1つを受信し、伝送スレッドのトランスミッタに状態及びデータの中の少なくとも1つを伝送する。
第1キューアレイは、データ経路スレッドに割り当られた第2グループのCPUに対応する第1の複数のノードを含む。
第1の複数のノードはヘッダーノード、テールノード、及び第1キューアレイのキューを示す現在ノードを含み、現在ノードからテールノードまでのノードは、消費者によって所有され、第1キューアレイの残りのノードは生産者によって所有される。
生産者はイニシエーターであり、消費者はターゲットである。
消費者はデータ経路スレッドの各々に固有のスレッド識別子を利用してキューへの排他的なアクセスを獲得する。
第2キューアレイは伝送スレッドに割り当られた第1グループのCPUに対応する第2の複数のノードを含む。
第2の複数のノードはヘッダーノード、テールノード、及び第2キューアレイのキューを示す現在ノードを含み、現在ノードからテールノードまでのノードは消費者によって所有され、第2キューアレイの残りのノードは生産者によって所有される。
生産者はターゲットであり、消費者はイニシエーターである。
消費者は、伝送スレッドの各々に固有のスレッド識別子を利用してキューへの排他的なアクセスを獲得する。
I/Oコマンド発行キュー及びI/O完了キューの各々は、MPMC(multi−producer multi−consumer)ロックレス・キューである。
1つ以上の伝送スレッドからの作業要請は、特定のデータ経路スレッドに到達し、特定の伝送スレッドからの作業要請は、1つ以上のデータ経路スレッドに到達する。同様に、1つ以上のデータ経路スレッドからの作業要請は、特定の伝送スレッドに到達し、特定のデータ経路スレッドからの作業要請は、1つ以上の伝送スレッドに到達する。
本発明の一実施形態によるデータストレージシステムは、複数のCPUと、複数のターゲットと、I/Oフロー、I/Oコマンド発行キュー、及びI/O完了キューを処理するソフトウェアモジュールセットを格納するメモリと、を備え、ソフトウェアモジュールセットは、複数のCPUを含むデータストレージシステムのターゲットに格納されたデータにアクセスするI/Oコマンドを受信し、複数のCPUの第1グループのCPUの中の第1CPU上でコマンドレシーバー経路及びコマンドトランスミッタ経路を各々含む複数の伝送スレッドを作動させ、複数のCPUの第2グループのCPUの中の第2CPU上でコマンド発行経路及びコマンド完了経路を各々含む複数のデータ経路スレッドを作動させ、伝送スレッドのコマンドレシーバー経路は、I/OコマンドをI/Oコマンド発行キューに配置し、データ経路スレッドのコマンド発行経路は、I/Oコマンドを処理し、データ経路スレッドのコマンド完了経路は、I/O完了通知をI/O完了キューに配置し、伝送スレッドのコマンドトランスミッタ経路は、I/O完了通知を処理し、I/Oコマンド発行キューは、第1キューアレイを含み、第1キューアレイの各々は、第1グループのCPUのそれぞれのCPUに対応し、I/O完了キューは、第2キューアレイを含み、第2キューアレイの各々は、第2グループのCPUのそれぞれのCPUに対応する。
伝送スレッドは、レシーバー及びトランスミッタを含み、レシーバーは、I/Oコマンドをデータ経路に伝送する。
データ経路スレッドは、I/Oコマンドをターゲットに伝送し、ターゲットから状態及びデータの中の少なくとも1つを受信し、伝送スレッドのトランスミッタに状態及びデータの中の少なくとも1つを伝送する。
第1キューアレイは、データ経路スレッドに割り当られた第2グループのCPUに対応する第1の複数のノードを含む。
第1の複数のノードは、ヘッダーノード、テールノード、及び第1キューアレイのキューを示す現在ノードを含み、現在ノードからテールノードまでのノードは、消費者によって所有され、第1キューアレイの残りのノードは、生産者によって所有される。
生産者はイニシエーターであり、消費者は前ターゲットである。
消費者は、データ経路スレッドの各々に固有のスレッド識別子を利用してキューへの排他的なアクセスを獲得する。
第2キューアレイは、伝送スレッドに割り当られた第1グループのCPUに対応する第2複数のノードを含む。
第2の複数のノードは、ヘッダーノード、テールノード、及び第2キューアレイのキューを示す現在ノードを含み、現在のノードからテールノードまでのノードは、消費者によって所有され、第2キューアレイの残りのノードは、生産者によって所有される。
生産者はターゲットであり、消費者はイニシエーターである。
消費者は、伝送スレッドの各々に固有のスレッド識別子を利用してキューへの排他的なアクセスを獲得する。
I/Oコマンド発行キュー及びI/O完了キューの各々は、MPMC(multi−producer multi−consumer)ロックレス・キューである。
1つ以上の伝送スレッドからの作業要請は、特定のデータ経路スレッドに到達し、特定の伝送スレッドからの作業要請は、1つ以上のデータ経路スレッドに到達する。同様に、1つ以上のデータ経路スレッドからの作業要請は、特定の伝送スレッドに到達し、特定のデータ経路スレッドからの作業要請は、1つ以上の伝送スレッドに到達する。
以上、本発明による高性能なロックレススケーラブルターゲットを提供するためのシステム及び方法の多様な実施形態について説明したが。本発明は、上述の実施形態に限定されるものではなく、本発明が属する技術分野で通常の知識を有する者は、本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
101、301、401 iSCSIレシーバー経路
102、302、402 SCSIコマンド発行経路
103、303,403 SCSIコマンド完了経路
104、304、404 iSCSIトランスミッタ経路
200 データ経路
201 レシーバー
202 iSCSIコマンド
203 データ
204 SCSI I/O(モジュール)
205 TM I/O(モジュール)
211 トランスミッタ
221 データCDB
222 制御CDB
223 TM I/O(ブロック)
224 状態/データ(ブロック)
251 コネクション特定経路
252 LUN特定経路
410 I/Oコマンド発行キュー
411 I/O完了キュー
501 ヘッドノード
502 現在ノード
503 テールノード
511 データコンテナ
512 ポインター
601 制御アレイ
701 iSCSIコネクションスレッド
751 SCSI LUNスレッド
801、901 LUNアレイ

Claims (20)

  1. データストレージシステムのターゲットにアクセスする方法であって、
    複数のCPUを含む前記データストレージシステムのターゲットに格納されたデータにアクセスするコマンドを受信する段階と、
    前記複数のCPUの中の第1グループのCPU上でコマンドレシーバー経路及びコマンドトランスミッタ経路を各々含む複数の伝送スレッドを作動させる段階と、
    前記複数のCPUの中の第2グループのCPU上でコマンド発行経路及びコマンド完了経路を各々含む複数のデータ経路スレッドを作動させる段階と、
    前記伝送スレッドの前記コマンドレシーバー経路を使用してI/Oコマンド発行キューにI/Oコマンドを配置し、前記データ経路スレッドの前記コマンド発行経路を使用して前記I/Oコマンドを処理する段階と、
    前記データ経路スレッドの前記コマンド完了経路を使用してI/O完了キューにI/O完了通知を配置し、前記伝送スレッドの前記コマンドトランスミッタ経路を使用して前記I/O完了通知を処理する段階と、を有し、
    前記I/Oコマンド発行キューは、第1キューアレイを含み、
    前記第1キューアレイの各々は、前記第1グループのCPUのそれぞれのCPUに対応し、
    前記I/O完了キューは、第2キューアレイを含み、
    前記第2キューアレイの各々は、前記第2グループのCPUのそれぞれのCPUに対応することを特徴とする方法。
  2. 前記伝送スレッドは、レシーバー及びトランスミッタを含み、
    前記レシーバーは、I/Oコマンドを前記データ経路に伝送することを特徴とする請求項1に記載の方法。
  3. 前記データ経路スレッドは、前記I/Oコマンドを前記ターゲットに伝送し、前記ターゲットから状態及びデータの中の少なくとも1つを受信し、前記伝送スレッドの前記トランスミッタに前記状態及びデータの中の少なくとも1つを伝送することを特徴とする請求項2に記載の方法。
  4. 前記第1キューアレイは、前記データ経路スレッドに割り当られた前記第2グループのCPUに対応する第1の複数のノードを含むことを特徴とする請求項1に記載の方法。
  5. 前記第1の複数のノードは、ヘッダーノード、テールノード、及び前記第1キューアレイのキューを示す現在ノードを含み、
    前記現在ノードから前記テールノードまでのノードは、消費者によって所有され、
    前記第1キューアレイの残りのノードは、生産者によって所有されることを特徴とする請求項4に記載の方法。
  6. 前記生産者は、イニシエーターであり、
    前記消費者は、前記ターゲットであることを特徴とする請求項5に記載の方法。
  7. 前記消費者は、前記データ経路スレッドの各々に固有のスレッド識別子を利用して前記キューへの排他的なアクセスを獲得することを特徴とする請求項6に記載の方法。
  8. 前記第2キューアレイは、前記伝送スレッドに割り当られた前記第1グループのCPUに対応する第2の複数のノードを含むことを特徴とする請求項1に記載の方法。
  9. 前記第2の複数のノードは、ヘッダーノード、テールノード、及び前記第2キューアレイのキューを示す現在ノードを含み、
    前記現在ノードから前記テールノードまでのノードは、消費者によって所有され、
    前記第2キューアレイの残りのノードは、生産者によって所有されることを特徴とする請求項8に記載の方法。
  10. 前記生産者は、前記ターゲットであり、
    前記消費者は、イニシエーターであることを特徴とする請求項9に記載の方法。
  11. 前記消費者は、前記伝送スレッドの各々に固有のスレッド識別子を利用して前記キューへの排他的なアクセスを獲得することを特徴とする請求項10に記載の方法。
  12. 前記I/Oコマンド発行キュー及び前記I/O完了キューの各々は、MPMC(multi−producer multi−consumer)ロックレス・キューであり、
    1つ以上の伝送スレッドからの作業要請は、特定のデータ経路スレッドに到達し、
    特定の伝送スレッドからの作業要請は、1つ以上のデータ経路スレッドに到達し、
    1つ以上のデータ経路スレッドからの作業要請は、特定の伝送スレッドに到達し、
    特定のデータ経路スレッドからの作業要請は、1つ以上の伝送スレッドに到達することを特徴とする請求項1に記載の方法。
  13. 複数のCPUと、
    複数のターゲットと、
    I/Oフロー、I/Oコマンド発行キュー、及びI/O完了キューを処理するソフトウェアモジュールセットを格納するメモリと、を備え、
    前記ソフトウェアモジュールセットは、
    複数のCPUを含むデータストレージシステムのターゲットに格納されたデータにアクセスするI/Oコマンドを受信し、
    前記複数のCPUの第1グループのCPUの中の第1CPU上でコマンドレシーバー経路及びコマンドトランスミッタ経路を各々含む複数の伝送スレッドを作動させ、
    前記複数のCPUの第2グループのCPUの中の第2CPU上でコマンド発行経路及びコマンド完了経路を各々含む複数のデータ経路スレッドを作動させ、
    前記伝送スレッドの前記コマンドレシーバー経路は、I/Oコマンドを前記I/Oコマンド発行キューに配置し、
    前記データ経路スレッドの前記コマンド発行経路は、前記I/Oコマンドを処理し、
    前記データ経路スレッドの前記コマンド完了経路は、I/O完了通知を前記I/O完了キューに配置し、
    前記伝送スレッドの前記コマンドトランスミッタ経路は、前記I/O完了通知を処理し、
    前記I/Oコマンド発行キューは、第1キューアレイを含み、
    前記第1キューアレイの各々は、前記第1グループのCPUのそれぞれのCPUに対応し、
    前記I/O完了キューは、第2キューアレイを含み、
    前記第2キューアレイの各々は、前記第2グループのCPUのそれぞれのCPUに対応することを特徴とするデータストレージシステム。
  14. 前記伝送スレッドは、レシーバー及びトランスミッタを含み、
    前記レシーバーは、I/Oコマンドを前記データ経路に伝送することを特徴とする請求項13に記載のデータストレージシステム。
  15. 前記データ経路スレッドは、前記I/Oコマンドを前記ターゲットに伝送し、前記ターゲットから状態及びデータの中の少なくとも1つを受信し、前記伝送スレッドの前記トランスミッタに前記状態及びデータの中の少なくとも1つを伝送することを特徴とする請求項14に記載のデータストレージシステム。
  16. 前記第1キューアレイは、前記データ経路スレッドに割り当られた前記第2グループのCPUに対応する第1の複数のノードを含むことを特徴とする請求項13に記載のデータストレージシステム。
  17. 前記第1の複数のノードは、ヘッダーノード、テールノード、及び前記第1キューアレイのキューを示す現在ノードを含み、
    前記現在ノードから前記テールノードまでのノードは、消費者によって所有され、
    前記第1キューアレイの残りのノードは、生産者によって所有されることを特徴とする請求項16に記載のデータストレージシステム。
  18. 前記生産者は、イニシエーターであり、
    前記消費者は、前記ターゲットであることを特徴とする請求項17に記載のデータストレージシステム。
  19. 前記消費者は、前記データ経路スレッドの各々に固有のスレッド識別子を利用して前記キューへの排他的なアクセスを獲得することを特徴とする請求項18に記載のデータストレージシステム。
  20. 前記第2キューアレイは、前記伝送スレッドに割り当られた前記第1グループのCPUに対応する第2の複数のノードを含むことを特徴とする請求項13に記載のデータストレージシステム。

JP2017076841A 2016-04-13 2017-04-07 高性能なロックレススケーラブルターゲットを提供するシステム及び方法 Active JP6822887B2 (ja)

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 2016-07-13
US15/209,566 US10146439B2 (en) 2016-04-13 2016-07-13 System and method for high performance lockless scalable target

Publications (3)

Publication Number Publication Date
JP2017191603A true JP2017191603A (ja) 2017-10-19
JP2017191603A5 JP2017191603A5 (ja) 2020-05-14
JP6822887B2 JP6822887B2 (ja) 2021-01-27

Family

ID=60038161

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017076841A Active JP6822887B2 (ja) 2016-04-13 2017-04-07 高性能なロックレススケーラブルターゲットを提供するシステム及び方法

Country Status (5)

Country Link
US (1) US10146439B2 (ja)
JP (1) JP6822887B2 (ja)
KR (1) KR20170117310A (ja)
CN (1) CN107391270B (ja)
TW (1) TWI745353B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020091554A (ja) * 2018-12-04 2020-06-11 株式会社日立製作所 マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
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
US11960933B2 (en) 2020-04-30 2024-04-16 Red Hat, Inc. Versioned progressive chunked queue for a scalable multi-producer and multi-consumer queue

Family Cites Families (29)

* Cited by examiner, † Cited by third party
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
US20040049603A1 (en) * 2002-09-05 2004-03-11 International Business Machines Corporation iSCSI driver to adapter interface protocol
TWI316044B (en) * 2004-02-28 2009-10-21 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
US7529886B2 (en) * 2004-11-03 2009-05-05 International Business Machines Corporation Method, system and storage medium for lockless InfiniBand™ poll for I/O completion
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
US7797514B2 (en) * 2006-11-16 2010-09-14 Texas Instruments Incorporated 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
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
JP5592493B2 (ja) 2010-04-13 2014-09-17 株式会社日立製作所 ストレージネットワークシステム及びその制御方法
JP5636109B2 (ja) * 2010-08-23 2014-12-03 エンパイア テクノロジー ディベロップメント エルエルシー コンテキスト切り替え
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
US9378059B2 (en) * 2012-10-19 2016-06-28 Argyle Data, Inc. Multi-threaded, lockless data parallelization
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
US10133489B2 (en) * 2014-09-16 2018-11-20 Oracle International Corporation System and method for supporting a low contention queue in a distributed data grid
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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020091554A (ja) * 2018-12-04 2020-06-11 株式会社日立製作所 マルチノードストレージシステム、及びマルチノードストレージシステムのキュー制御方法
CN111273854A (zh) * 2018-12-04 2020-06-12 株式会社日立制作所 多节点存储系统以及多节点存储系统的队列控制方法
CN111273854B (zh) * 2018-12-04 2023-05-09 株式会社日立制作所 多节点存储系统以及多节点存储系统的队列控制方法

Also Published As

Publication number Publication date
CN107391270B (zh) 2022-11-08
TWI745353B (zh) 2021-11-11
KR20170117310A (ko) 2017-10-23
TW201740279A (zh) 2017-11-16
CN107391270A (zh) 2017-11-24
JP6822887B2 (ja) 2021-01-27
US20170300228A1 (en) 2017-10-19
US10146439B2 (en) 2018-12-04

Similar Documents

Publication Publication Date Title
JP6822887B2 (ja) 高性能なロックレススケーラブルターゲットを提供するシステム及び方法
CN108776576B (zh) 用于聚合的网上NVMe装置的聚合存储方法
US9563423B1 (en) System and method for simultaneous shared access to data buffers by two threads, in a connection-oriented data proxy service
US7506009B2 (en) Systems and methods for accessing a shared storage network using multiple system nodes configured as server nodes
US9712427B1 (en) Dynamic server-driven path management for a connection-oriented transport using the SCSI block device model
US9256377B2 (en) Consistent distributed storage communication protocol semantics in a clustered storage system
US8874638B2 (en) Interactive analytics processing
US9647905B1 (en) System and method for optimized management of statistics counters, supporting lock-free updates, and queries for any to-the-present time interval
WO2017158799A1 (ja) ストレージ装置および情報処理方法
US7882283B2 (en) Virtualization support in a multiprocessor storage area network
US8677014B2 (en) Fine granularity exchange level load balancing in a multiprocessor storage area network
US9232000B1 (en) Method and system for balancing load across target endpoints on a server and initiator endpoints accessing the server
JP6853714B2 (ja) ゼロ競合並列データスタックを提供するデータ格納システムのデータ格納方法
WO2015145762A1 (ja) データベース管理システム、計算機、データベース管理方法
EP2087430B1 (en) Lock manager rotation in a multiprocessor storage area network
US9591099B1 (en) Server connection establishment over fibre channel using a block device access model
US9767311B2 (en) Stack isolation by a storage network switch
US10873543B2 (en) Fiber channel fabric login/logout system
US9407601B1 (en) Reliable client transport over fibre channel using a block device access model
US9237057B1 (en) Reassignment of a virtual connection from a busiest virtual connection or locality domain to a least busy virtual connection or locality domain
US9473590B1 (en) Client connection establishment over fibre channel using a block device access model
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
US9531765B1 (en) System and method for maximizing system data cache efficiency in a connection-oriented data proxy service
US9473591B1 (en) Reliable server transport over fibre channel using a block device access model

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200330

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200330

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200330

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200528

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200630

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200929

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20201222

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210107

R150 Certificate of patent or registration of utility model

Ref document number: 6822887

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250