JPWO2016056140A1 - インターフェースデバイス、及びインターフェースデバイスを含む計算機システム - Google Patents

インターフェースデバイス、及びインターフェースデバイスを含む計算機システム Download PDF

Info

Publication number
JPWO2016056140A1
JPWO2016056140A1 JP2016552796A JP2016552796A JPWO2016056140A1 JP WO2016056140 A1 JPWO2016056140 A1 JP WO2016056140A1 JP 2016552796 A JP2016552796 A JP 2016552796A JP 2016552796 A JP2016552796 A JP 2016552796A JP WO2016056140 A1 JPWO2016056140 A1 JP WO2016056140A1
Authority
JP
Japan
Prior art keywords
command
host
communication processor
computer system
storage
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
JP2016552796A
Other languages
English (en)
Other versions
JP6262360B2 (ja
Inventor
雄策 清田
雄策 清田
哲弘 後藤
哲弘 後藤
吉宏 豊原
吉宏 豊原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPWO2016056140A1 publication Critical patent/JPWO2016056140A1/ja
Application granted granted Critical
Publication of JP6262360B2 publication Critical patent/JP6262360B2/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/10Program control for peripheral devices
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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/0683Plurality of storage devices
    • 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/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

ホストメモリ及び複数のホストプロセッサを含むホスト計算機と、ストレージ装置と、前記ホスト計算機及び前記ストレージ装置に接続され、複数の通信プロセッサを含むインターフェースデバイスと、を含む計算機システムに於いて、前記ホストメモリの一部の領域である第1ホストメモリ領域と、前記複数のホストプロセッサの少なくとも1つと、前記複数の通信プロセッサの少なくとも1つと、を占有して割り当てる対象である第1論理パーティションを作成する。

Description

本発明は、I/Oコマンドを処理するインターフェースデバイスと、インターフェースデバイスを含み、論理パーティショニング機能を含む計算機システムと、に関する。
Host Bus Adapter(HBA)に搭載されるプロトコルチップは、接続プロトコルをオフロードするための通信プロセッサが実装されるのが一般的であるが、接続スピードの高速化及び仮想化技術の台頭によりHBAにかかる負荷は増加傾向にある。プロトコルチップ内の通信プロセッサの処理性能が性能ボトルネックになるため、一つのファイバチャネルポートを複数の通信プロセッサにて制御する方法がある(たとえば、下記特許文献1を参照。)。特許文献1の方法は、HBA上に複数の通信プロセッサを備え、ファイバチャネルポートで受信したフレームを複数のプロトコル制御回路で並列に制御する。
国際公開WO2013/001578号公報
しかしながら、特許文献1の方法では、ホスト上で動作し複数の通信プロセッサを制御するドライバが、I/Oコマンドの負荷をHBA上に備えられた複数の通信プロセッサ間を分散するが、分散される負荷にばらつきがあるという問題がある(第1の問題)。負荷にばらつきがあるため、通信プロセッサ数が増加してもトランザクション性能の向上を阻害することになる。
また、複数の通信プロセッサにI/Oコマンドの負荷が均一に分散したとしても、ストレージ装置へのI/OコマンドのI/O特性がシーケンシャルの場合、トランザクション性能が低下するという問題がある(第2の問題)。ストレージへのアクセスは、ブロックという単位で制御され、I/O特性に応じて性能が異なる。ここで言うI/O特性とは、ストレージ装置へのアクセスパターンがシーケンシャルかランダムかということである。
シーケンシャルアクセスでは、ブロックが連続して読み書きされ、ランダムアクセスでは細かなブロックをばらばらに読み書きする。同じデータ転送量でもシーケンシャルアクセスとランダムアクセスではストレージに対する読み書き要求数が異なり、例えば合計40[KB]のデータ量で、ブロックのサイズが4[KB]の場合、シーケンシャルアクセスならばストレージ装置でのディスクへの読み書き要求数は1回、ランダムらなら4[KB]で10回といった具合となる。
ストレージ装置にはシーケンシャルな読み出し、書き込みコマンドが連続した場合に、シーケンシャルアクセスを効率化するアルゴリズムが実装されるのが一般的であり、シーケンシャル性が崩れるとストレージ装置の応答性能が低下する。
また、ストレージ装置へのアクセスにおいてブロックサイズが小さいI/Oコマンドと大きいI/Oコマンドが混在した場合に、ブロックサイズが小さいI/Oコマンドによりトランザクション性能が低下するという問題がある(第3の問題)。HBAの同一ポートに接続されるファイバチャネルスイッチを介してテープ装置とディスク装置が接続された場合を例にあげて説明する。
ストレージはブロックと呼ばれる単位でデータ転送を制御しているが、テープ装置はディスク装置に対して大きい(たとえば、8倍〜64倍)ブロックサイズでデータ転送を制御する。よって、テープ装置に対するI/Oコマンド処理とディスク装置に対するI/Oコマンド処理を同一の通信プロセッサに要求した場合、ブロックサイズの大きいテープ装置のI/Oコマンドの処理時間が増大し、ファイバチャネルポートを共有しているブロックサイズの小さいディスク装置へのI/Oコマンド処理に待ち時間が発生し、性能低下を招く。
第3の問題に対しては、これまでディスク装置とテープ装置に接続されるHBAを分けるシステム設計によりテープ装置専用の通信帯域を確保し、システム全体の性能ボトルネックとならないような手法をとってきた。しかしながら、テープ専用のHBAを導入する必要があるため導入コストが増大してしまう。
第3の問題については接続先デバイスとしてテープ装置とディスク装置が混在した場合に限ったものではなく、ストレージ装置に格納されるデータベースの特性に依存しても発生する。同一ポートに接続されるストレージ装置内に業務系システム(OLTP)と情報系システム(DWH)が混在した場合を例にあげて説明する。
OLTPとはオンライントランザクション処理のことで、ネットワークで接続されたホストとユーザ端末間の間で一連の処理を行うための仕組みであり、一般にデータの入力と検索のトランザクションを扱う。一回のI/Oコマンドで処理されるブロックサイズは小さく(数キロバイト)、高速なレスポンス性能が求められる。
それに対し、DWH(データウェアハウス)とは近年のビックデータに代表されるような大量の業務データの中から、各項目間の関連性を分析するシステムのことである。DWHでは、I/Oコマンドのブロックサイズは大きく(数十キロバイト以上)レスポンス性能よりもスループット性能が求められる。
このように、OLTPはブロックサイズの小さいI/Oコマンドであるのに対し、DWHではブロックサイズの大きいI/Oコマンドで制御されることから、HBAの同一ポートにディスク装置とテープ装置を接続した場合に発生する問題と同様の問題が発生する。すなわち、OLTPとDWHのI/Oコマンド処理を同一の通信プロセッサに要求した場合、I/Oコマンドのブロックサイズの大きいDWHの処理時間が増大することによりI/Oコマンドのブロックサイズの小さいOLTP処理に待ち時間が発生する。このため、OLTPに求められるレスポンス性能が低下する。
また、別な視点から見た場合、特許文献1記載の技術では、ホスト上に作成された論理パーティション(以後、LPARと呼ぶ)に対してどのように通信プロセッサを割り当てるべきか開示していない。
本発明は、上述した問題を解決するため、ストレージ装置に対する処理性能の向上を図ることを目的とする。
本願において開示される発明の一側面となる計算機システムは、ホストメモリ及び複数のホストプロセッサを含むホスト計算機と、ストレージ装置と、前記ホスト計算機及び前記ストレージ装置に接続され、複数の通信プロセッサを含むインターフェースデバイスと、を含む計算機システムであって、前記ホスト計算機は、前記ホストメモリの一部の領域である第1ホストメモリ領域と、前記複数のホストプロセッサの少なくとも1つと、前記複数の通信プロセッサの少なくとも1つと、を占有して割り当てる対象である第1論理パーティションを作成することを特徴とする。
本発明の代表的な実施の形態によれば、ストレージ装置に対する処理性能の向上を図ることができる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
実施例1にかかるホストによる入出力制御例1を示す説明図である。 実施例1にかかるホストによる入出力制御例2を示す説明図である。 実施例1にかかるホストによる入出力制御例3を示す説明図である。 通信システムのハードウェア構成例を示すブロック図である。 ブロックサイズ情報(block_size_info)の記憶内容例を示す説明図である。 HBA内の詳細な構成を示す説明図である。 ホストの機能的構成例を示すブロック図である。 通信システムのシーケンスを示す説明図である。 図8に示した通信プロセッサ選択処理(ステップS803)の詳細な処理手順例を示すフローチャートである。 図9に示したアクセス判定処理(ステップS904)の詳細な処理手順例を示すフローチャートである。 実施例2の計算機システムの構成を示す図である。 実施例2のリソース割り当てを示す図である。
以下に実施例について説明する。なお、以下の例ではファイバーチャネルHBAを対象として説明するが、ホストとストレージ装置間の接続はファイバーチャネル以外であってもよい。これには例えばInfiniBand、Ethernet、PCI−Expressがある。HBAについても一例であり、実施例に開示の技術はホストをストレージ装置に接続する際のインターフェースデバイスであれば適用できる。なお、以後の説明にて登場する通信プロセッサ同士でハードウェア回路の共有が無い方が並列動作の観点上は望ましいが必須ではない。例えば、Intel社のHyper−Threading Technologyといった技術で提供される複数コアの各々を通信プロセッサとしてみなしてもよい。また、通信プロセッサにはコアが対応してもよいことはいうまでもない。これらはホストCPU401及びストレージプロセッサについても同様である。
実施例1では、ホストは、HBA内の複数の通信プロセッサを制御するドライバにて通信プロセッサ毎のI/O負荷やストレージ装置への要求I/Oコマンド種、アクセスアドレスによりI/O特性を判定する。また、サーバは、接続LUへのI/Oコマンドや特定のブロックサイズのI/Oコマンドを任意の通信プロセッサに占有制御させ、I/Oコマンドを処理する通信プロセッサを選択する。
これにより、複数の通信プロセッサ間のI/Oコマンドの負荷に偏りなく、並列に動作させることができ、ファイバチャネルポートのトランザクション性能の向上を図ることができる。また、HBAに接続されるストレージ装置に対するブロックサイズの大きいI/Oコマンドと小さいI/Oコマンドが混在する場合、これまでブロックサイズの大きいI/Oコマンド処理に影響してブロックサイズの小さいI/Oコマンドの処理性能の低下を抑制する。これにより、これまで接続ストレージ種やデータベースの特性に応じて分ける必要があったHBAを一枚に集約できるため、システム導入コストの低減を図ることができる。以下、本発明の実施例について図面を用いて説明する。
<入出力制御例1>
図1は、実施例1にかかるホストによる入出力制御例1を示す説明図である。入出力制御例1は、I/Oコマンドの負荷をHBA上に備えられた複数の通信プロセッサ間を均一に分散させるロードバランス方式により、トランザクション性能の向上を図る。
図1において、通信システム100は、ホスト101と、HBA102と、ストレージ装置の一例であるディスク装置103と、を有する。ホスト101は、HBA102を制御するHBAドライバ110を有し、HBA102は、複数のコア#0〜#3、およびポート120を有し、ディスク装置103にI/Oコマンドを転送する。実施例1では、一例としてコアの数を4個としているが、4個に限定されず、2個以上であればよい。ホスト101には、I/OコマンドA〜Eがアルファベット順に入力されるものとする。
ディスク装置103は、複数の論理ユニットLU#0〜LU#3を有する。実施例1では、一例として論理ユニットの数を4個としているが、4個に限定されず、2個以上であればよい。また、コアの数と同数でなくてもよい。
ホスト101は、複数のコア#0〜#3の負荷の状態を見て各I/OコマンドA〜Eの割当先となるコアを選択する。コア#1〜#3内の黒塗矩形は、I/OコマンドA〜Eよりも先に入力されたI/Oコマンドである。HBAドライバ110は、I/OコマンドAの割当先を、先行するI/Oコマンドの数が最少であるコア#0に割り当てる。つぎに、HBAドライバ110は、I/OコマンドBの割当先を、先行するI/Oコマンドの数が最少であるコア#0〜2のいずれかに割り当てる。割当先候補が複数ある場合は、番号の若いコアが選択されるものとする。
つぎに、HBAドライバ110は、I/OコマンドCの割当先を、先行するI/Oコマンドの数が最少であるコア#1に割り当て、その次のI/OコマンドDの割当先を、先行するI/Oコマンドの数が最少であるコア#1に割り当てる。このように、実行中のI/Oコマンドが多いとそれだけコアに負荷がかかるため、HBAドライバ110は、実行中のI/Oコマンドの数が最少のコアを選択して、I/Oコマンドを出力する。これにより、I/Oコマンドの負荷をHBA上に備えられた複数の通信プロセッサ間を均一に分散させることで、トランザクション性能の向上を図ることができる。
<入出力制御例2>
図2は、実施例1にかかるホストによる入出力制御例2を示す説明図である。入出力制御例2は、ストレージ装置へのI/OコマンドのI/O特性がシーケンシャルの場合にトランザクション性能の向上を図る。
図2において、ホスト101には、I/OコマンドA〜Eがアルファベット順に入力されるものとする。コマンド内のデータも、コマンドと同一符号を用いる。たとえば、コマンドA内のデータをデータAとする。データにはLU番号およびR/Wが付随する。ここでは、データ、LU番号およびR/Wの組み合わせで1つのI/Oコマンドとなる。
LU番号とは、そのデータのアクセス先となるディスク装置103内の論理ユニットを一意に特定する識別情報である。たとえば、LU番号が「0」のI/Oコマンドは、ディスク装置103の論理ユニットLU#0に出力される。R/Wは、そのI/Oコマンドがリードコマンドであるかまたはライトコマンドであるかというアクセス種別である。
HBAドライバ110は、I/OコマンドA、B、C、D、Eの順に取り込む。HBAドライバ110は、連続するI/Oコマンドの連続性およびアクセス種別の同一性を判定する。連続するI/Oコマンド(A,B)については、ともにアクセス種別が「R」(リード)である。アクセスするアドレスが連続していると判定された場合、連続するI/Oコマンド(A,B)は、同一のコアで処理される。本例の場合、HBAドライバ110は、連続するI/Oコマンド(A,B)をコア#0に渡し、コア#0はポート120を介して、連続するI/Oコマンド(A,B)をI/OコマンドA,Bの順で論理ユニットLU#0に転送する。
また、HBAドライバ110は、連続するI/Oコマンド(B,C)、(C,D)、(D,E)についても同様に判定する。HBAドライバ110は、図1に示したようなロードバランス方式にしたがって、I/OコマンドCをコア#1に、I/OコマンドDをコア#2に、I/OコマンドEをコア#3に割り当てる。
そして、コア#1は、I/OコマンドCを論理ユニットLU#1に転送し、コア#2は、I/OコマンドDを論理ユニットLU#2に転送し、コア#3は、I/OコマンドEを論理ユニットLU#3に転送する。これにより、複数のコア間のI/Oコマンドの負荷に偏りなく、並列に動作させることができ、ポート120のトランザクション性能の向上を図ることができる。
<入出力制御例3>
図3は、実施例1にかかるホスト101による入出力制御例3を示す説明図である。入出力制御例3は、ストレージ装置へのアクセスにおいてブロックサイズが小さいI/Oコマンドと大きいI/Oコマンドが混在した場合に、ブロックサイズが小さいI/Oコマンドによるトランザクション性能の向上を図る。入出力制御例3では、ストレージ装置の一例として、HBA102のポート120に接続されるファイバチャネルスイッチ(不図示)を介してテープ装置303とディスク装置103が接続された場合を例にあげて説明する。なお、テープ装置303を情報系システム(DWH)に、ディスク装置103を業務系システム(OLTP)に置き換えてもよい。
図3では、コア#0がテープ装置303専用の通信プロセッサであり、コア#1〜#3がディスク装置103専用の通信プロセッサとする。I/Oコマンド列300のうちI/Oコマンドa〜c、eは、ブロックサイズが小さいI/Oコマンドであり、I/Oコマンドd、fは、ブロックサイズが大きいI/Oコマンドである。
ホスト101内のHBAドライバ110は、順次入力されてくるI/Oコマンドa〜fのブロックサイズから転送先のコアを選択する。テープ装置203はディスク装置103に対して大きい(たとえば、8倍〜64倍)ブロックサイズでデータ転送を制御するため、HBAドライバ110は、I/Oコマンドd、fをその入力順でコア#0に転送する。
このように、ブロックサイズの大きいI/Oコマンドと小さいI/Oコマンドが混在する場合、ブロックサイズの大きいI/Oコマンドの処理に影響して低下していたブロックサイズの小さいI/Oコマンドの処理性能の向上を図ることができる。これにより、これまで接続ストレージ種やデータベースの特性に応じて複数に分ける必要があったHBA102を一枚に集約できるため、システム導入コストの低減を図ることができる。
また、HBAドライバ110は、I/Oコマンドa〜c、eをコア#1〜コア#3に振り分ける。この場合、I/Oコマンドa〜c、e内で指定されたLU番号に応じて、振分け先のコアが選択される。また、図2の入出力制御例2で示したように、HBAドライバ110は、連続するI/Oコマンドの連続性およびアクセス種別の同一性により、振分け先として同一コアを選択する。
たとえば、連続するI/Oコマンド(a,b)については、ともにアクセスするアドレスに連続性があり、かつ、アクセス種別が「R」(リード)とすると、論理ユニットLU#1に対応するコア#1に転送される。これにより、複数のコア間のI/Oコマンドの負荷に偏りなく、並列に動作させることができ、ポート120のトランザクション性能の向上を図ることができる。
<通信システム100のハードウェア構成例>
図4は、通信システム100のハードウェア構成例を示すブロック図である。通信システム100は、ホスト101と、HBA102と、ストレージ装置440と、を有する。ホスト101とHBA102は、PCIバスを介して接続されており、HBA102の先にはI/Oインターフェース制御部433(ポート120に該当)を介してストレージ装置440が接続される。ストレージ装置440は、1以上の記憶領域を有する。記憶領域とは、I/Oコマンドによりデータのリードまたはライトされる領域である。
たとえば、ストレージ装置440がディスク装置103の場合、図1に示したように1以上の論理ディスクを有する。また、ストレージ装置440は、1以上のテープ装置303でもよい。また、ストレージ装置340は、図2に示したように、ディスク装置103とテープ装置303とを含む構成でもよい。また、ストレージ装置340は、情報系システム(DWH)や業務系システム(OLTP)内のストレージ装置340でもよい。なお、ホスト101は、アクセス先となるストレージ装置340の種類が物理的なディスク装置103であってもテープ装置303であっても、論理ユニットとして扱う。
ホスト101は、ホストCPU(Central Processing Unit)401と、ホストメモリ402と、を有する。ホストCPU401はホスト101を制御する。ホストメモリ402は、ホストCPU401の作業エリアとなる。また、ホストメモリ402は、各種プログラムやデータを記憶する非一時的な記録媒体である。ホストメモリ402としては、たとえば、ROM(Read Only Memory)、RAM(Random Access Memory)、HDD(Hard Disk Drive)、フラッシュメモリがある。
ホストメモリ402は、プログラム領域410と、HBAドライバデータ領域420と、MMIO空間430と、を有する。プログラム領域410には、アプリケーション411、OS(Operating System)412およびHBAドライバ110が格納され、ホストCPU301により実行される。また、HBAドライバ110には、通信プロセッサ選択プログラム313がある。
HBAドライバデータ領域420には、通信プロセッサ情報群421と、接続LU情報群423と、ブロックサイズ情報(block_size_info)422と、が格納される。通信プロセッサ情報群421は、通信プロセッサごとの通信プロセッサ情報421−0〜321−Nである。通信プロセッサ情報とは、HBA102内の通信プロセッサ群のうち対応する通信プロセッサを管理する情報である。具体的には、通信プロセッサ情報421−0〜421−Nには、実行中コマンド数(exec_cmd_num)がある。実行中コマンド数(exec_cmd_num)は、現在処理中のI/Oコマンドの数である。実行中コマンド数(exec_cmd_num)の値が大きいほど、その通信プロセッサに負荷がかかっていることを示す。
接続LU情報群423は、論理ユニットごとの接続LU情報423−0〜423−Nである。接続LU情報423−0〜423−Nとは、論理ユニットを管理する情報である。具体的には、たとえば、接続LU情報423−0〜423−Nは、最終コマンド情報(last_cmd_info)と、連続判定情報(next_LBA_adr_info)と、占有割当情報(dev_info)と、最終コア情報(last_core_info)と、を有する。
最終コマンド情報(last_cmd_info)は、その論理ユニットに対して実行されたI/Oコマンドのアクセス種別が書き込み(W)か読み出し(R)であったかを示す情報である。
連続判定情報(next_LBA_adr_info)は、その論理ユニットへのアクセスパターンがシーケンシャルであるか否かを判定するための情報である。具体的には、たとえば、連続判定情報(next_LBA_adr_info)とは、その論理ユニットへのアクセスアドレスとアクセスするI/Oコマンドのブロックサイズとの和である。
占有割当情報(dev_info)は、転送先論理ユニットへのI/Oコマンドの制御を特定の通信プロセッサに占有割当てさせるための管理情報である。具体的には、たとえば、占有割当てさせる特定の通信プロセッサを一意に特定する識別情報である。
占有割当情報(dev_info)は、通信システム100導入時にオペレータがアプリケーション411を介してHBAドライバデータ領域320に設定するパラメータである。
最終コア情報(last_core_info)は、最後に当該論理ユニット宛てにI/Oコマンドを起動した通信プロセッサを管理する情報である。具体的には、たとえば、最後に当該LU宛てにI/Oコマンドを起動した通信プロセッサを一意に特定する識別情報である。
ブロックサイズ情報(block_size_info)422は、I/Oコマンドを制御する通信プロセッサをブロックサイズに応じて占有させる情報である。具体的には、たとえば、ブロックサイズ情報(block_size_info)422とは、通信プロセッサに対応付けられたI/Oコマンドのブロックサイズである。
MMIO空間430とは、Memory Mapped Input Output空間の略であり、HBAドライバ110がHBA102などのI/Oデバイス内レジスタへアクセスするために用いられるアドレス空間である。
HBA102は、複数の通信プロセッサ制御部430−0〜430−Nを有する。通信プロセッサ制御部430−0〜430−Nは、I/Oインターフェース制御部433を介して、対応する論理ユニットとアクセスする。通信プロセッサ制御部430−0〜430−Nは、I/Oコマンド起動レジスタ431−0〜431−Nと通信プロセッサ432−0〜432−Nとを有する。I/Oコマンド起動レジスタ431−0〜431−Nは、HBAドライバ110からのI/Oコマンドを保持する。つぎに、HBA102の内部構成については後述する。
図5は、ブロックサイズ情報(block_size_info)422の記憶内容例を示す説明図である。ブロックサイズ情報(block_size_info)422は、ブロックサイズと占有制御プロセッサ番号とを対応付けた情報である。ブロックサイズとは、I/Oコマンドのブロックサイズである。占有制御プロセッサ番号とは、占有制御する通信プロセッサの番号である。占有制御する通信プロセッサとは、対応するブロックサイズのI/Oコマンドを受け付けた場合に選択される通信プロセッサである。たとえば、I/Oコマンドのブロックサイズが16[KB]の場合、通信プロセッサ#3が占有制御される通信プロセッサである。したがって、当該I/Oコマンドの送出先は、通信プロセッサ#3となる。また、「未設定」は、占有制御する通信プロセッサが決められていないことを示す。
図6は、HBA102内の詳細な構成を示す説明図である。I/Oコマンド起動レジスタ431−0〜431−Nは、MMIO空間430にマッピングされる。これにより、HBAドライバ110は、I/Oコマンド起動レジスタ431−0〜431−Nにアクセスすることができ、I/Oコマンド起動レジスタ431−0〜431−Nは、ホスト101上で動作するHBAドライバ110が通信プロセッサに対してI/Oコマンド実行指示を行うことができる。
HBA102は、HBAドライバ110から指示されたI/OコマンドをI/Oコマンド起動キュー600に通信プロセッサ毎にスタックし、通信プロセッサ群432に対してI/Oコマンドの起動を通知する。その後、通信プロセッサ群432は、I/Oインターフェース制御部433を介してストレージ装置440にI/Oコマンドを送出する。なお、ホスト101とHBA102の接続400は、例えばPCI−Expressに基づく接続であることが考えられるが他の接続であってもよい。また、ホスト101はHBA102を内蔵する形態であってもよい。
<ホスト101の機能的構成例>
図7は、ホスト101の機能的構成例を示すブロック図である。ホスト101である制御装置700は、複数の記憶領域にアクセスするインターフェースに設けられた複数の記憶領域の各々に対応する複数のプロセッサを制御する制御装置である。複数の記憶領域とは、ストレージ装置440内の記憶領域であり、たとえば、ディスク装置103やテープ装置303の論理ユニットに該当する。複数のプロセッサとは、たとえば、通信プロセッサ群432であり、複数の記憶領域にアクセスするインターフェースとは、たとえば、通信プロセッサ群432を有するHBA102である。
制御装置700は、更新部701と、選択部702と、出力部703と、判定部704と、記憶部705と、を有する。更新部701〜判定部704は、具体的には、たとえば、図4に示したHBAドライバ110をホストCPU401に実行させることにより、その機能を実現する。また、記憶部705は、ホストメモリ402により、その機能を実現する。
更新部701は、各々が複数の記憶領域のいずれかに出力されるコマンド列が入力された場合、複数のプロセッサの各プロセッサが、当該プロセッサに対応する記憶領域に対して実行中であるコマンドによる負荷を更新する。具体的には、たとえば、更新部701は、通信プロセッサ情報群421の各通信プロセッサ情報321−0〜321−Nに記憶されている実行中コマンド数(exec_cmd_num)を更新する。すなわち、更新部701は、通信プロセッサにI/Oコマンドを発行した場合、実行中コマンド数(exec_cmd_num)を1インクリメントし、通信プロセッサから終了通知を受け取った場合に、1デクリメントする。
選択部702は、コマンド列の中のいずれかのコマンドについて、更新部701によって更新されたプロセッサごとの実行中のコマンドによる負荷に基づいて、いずれかのコマンドの割当先となるプロセッサを複数のプロセッサの中から選択する。具体的には、たとえば、選択部702は、実行中コマンド数(exec_cmd_num)が最少の通信プロセッサを割当先に選択する。
出力部703は、選択部702によって選択されたプロセッサに対しいずれかのコマンドを出力する。具体的には、たとえば、出力部703は、I/Oインターフェース制御部により、割当先の通信プロセッサに対応する論理ユニットにI/Oコマンドを送信する。
判定部704は、コマンド列のうち第1のコマンドおよび第1のコマンドの直後の第2のコマンドについて、複数の記憶領域のいずれかにアクセスされるアドレスに連続性があり、かつ、アクセス種別が同一であるか否かを判定する。具体的には、たとえば、判定部704は、連続するI/Oコマンドについてアドレスの連続性とアクセス種別の同一性を判定する。
より具体的には、たとえば、判定部704は、連続するI/Oコマンドのうち先行する第1のコマンドの連続判定情報(next_LBA_adr_info)と、連続するI/Oコマンドのうち後続する第2のコマンドのアクセス先アドレスとを比較する。連続判定情報(next_LBA_adr_info)とは、その論理ユニットへのアクセスアドレスとアクセスするI/Oコマンドのブロックサイズとの和である。一致する場合は、判定部704は、第1のコマンドと第2のコマンドとは連続性ありと判定する。
また、判定部704は、最終コマンド情報(last_cmd_info)を参照して、第1のコマンドのアクセス種別が書き込み(W)か読み出し(R)であったかを特定し、第2のコマンドのアクセス種別と一致するか否かを判定する。一致する場合は、判定部704は、第1のコマンドと第2のコマンドとはアクセス種別が同一であると判定する。
この場合、選択部702は、実行中コマンド数(exec_cmd_num)により第2のコマンドの割当先を選択しない。そして、選択部702は、判定部704によってアクセスされるアドレスに連続性があり、かつ、アクセス種別が同一であると判定された場合、複数のプロセッサのうち第1のコマンドがアクセスした記憶領域に対応するプロセッサを選択する。たとえば、第1のコマンドのアクセス先が論理ユニット#0である場合、第2のコマンドのアクセス先も論理ユニット#0となる。ただし、選択部702は、アドレスに連続性がない場合、または、アクセス種別に同一性がない場合には、実行中コマンド数(exec_cmd_num)により第2のコマンドの割当先を選択することになる。
記憶部705は、複数のプロセッサのうち特定のプロセッサの識別情報と、特定のプロセッサのアクセス先となる複数の記憶領域の中の特定の記憶領域の識別情報と、を対応付けた第1の対応情報を記憶する。第1の対応情報とは、接続LU情報423−0〜423−N内の占有割当情報(dev_info)である。すなわち、特定のプロセッサの識別情報とは、接続LU情報423−0〜423−Nで特定される論理ユニットの番号であり、特定の記憶領域の識別情報とは、占有割当情報(dev_info)に記憶された通信プロセッサの番号である。
第1の対応情報を用いる場合、判定部704は、第1の対応情報を参照して、第2のコマンドが保持する第2のコマンドのアクセス先の記憶領域の識別情報と、特定の記憶領域の識別情報とが一致するか否かを判定する。そして、選択部702は、判定部704によって、第2のコマンドのアクセス先の記憶領域の識別情報と、特定の記憶領域の識別情報とが一致すると判定された場合、特定のプロセッサを選択する。
たとえば、連続するI/Oコマンドのうち後続である第2のコマンドのアクセス先が論理ユニット#0であり、特定の記憶領域が論理ユニット#0である場合、選択部702は、第2のコマンドの割当先として、論理ユニット#0の接続LU情報423−0の占有割当情報(dev_info)に記憶された通信プロセッサの番号で指定される通信プロセッサを選択する。
また、記憶部705は、複数のプロセッサのうち特定のプロセッサの識別情報と、特定のプロセッサがアクセス先に出力するコマンドのサイズと、を対応付けた第2の対応情報を記憶する。第2の対応情報とは、ブロックサイズ情報(block_size_info)422である。
第2の対応情報を用いる場合、判定部704は、第2の対応情報を参照して、第2のコマンドのサイズと特定のプロセッサがアクセス先に出力するコマンドのサイズとが一致するか否かを判定する。そして、選択部702は、判定部704によって、第2のコマンドのサイズと特定のプロセッサがアクセス先に出力するコマンドのサイズとが一致すると判定された場合、特定のプロセッサを選択する。
たとえば、連続するI/Oコマンドのうち後続である第2のコマンドのブロックサイズが16.0[KB]であり、ブロックサイズ情報(block_size_info)422においてブロックサイズが16.0[KB]に対応する通信プロセッサの番号が「3」である場合、選択部702は、第2のコマンドの割当先として、通信プロセッサ#3を選択する。
<通信システム100のシーケンス>
図8は、通信システム100のシーケンスを示す説明図である。なお、アプリケーション411、OS412、HBAドライバ110といったプログラムを主語として説明を行う場合があるが、プログラムはホストCPU401によって実行されることで定められた処理を、ホストメモリ402を用いながら行うため、ホストCPU401を主語とした説明と同義とする。
まず、アプリケーション411は、OS412に対してストレージ装置440への送受信要求を実行する(ステップS801)。その要求を受信したOS412は、HBAドライバ110に対してI/Oコマンドを発行する(ステップS802)。HBAドライバ110の通信プロセッサ選択プログラム413は、I/Oコマンドを起動する通信プロセッサ選択処理を実行する(ステップS803)。ステップS803で選択された通信プロセッサを「選択通信プロセッサ」と称す。通信プロセッサ選択処理(ステップS803)の詳細については、図7で後述する。
HBAドライバ110は、出力部703により、選択通信プロセッサに対してI/Oコマンドを発行する(ステップS804)。I/Oコマンド発行後、HBAドライバ110は、更新部701により、I/Oコマンドの転送先論理ユニットにおける接続LU情報である連続判定情報(next_LBA_adr_info)と、最終コマンド情報(last_cmd_info)と、最終コア情報(last_core_info)とを更新する(ステップS805)。
具体的には、連続判定情報(next_LBA_adr_info)は、当該論理ユニットへのアクセスアドレスとアクセスブロックサイズとの和に更新される。最終コマンド情報(last_cmd_info)は、ステップS804で発行したI/Oコマンドが書き込みである場合は書込み(W)、読み出しである場合は読み出し(R)を示す制御情報に更新される。最終コア情報(last_core_info)は、通信プロセッサ選択処理(ステップS803)で選択された選択通信プロセッサの番号に更新される。
そして、HBAドライバ110は、選択通信プロセッサにおいて現在実行中のI/Oコマンドの数を更新する(ステップS806)。具体的には、選択通信プロセッサにて現在実行中のI/Oコマンドの数を示す実行中コマンド数(exec_cmd_num)に、ステップS804でI/Oコマンドを発行した分(1個)が加算される。なお、I/Oコマンド完了通知を選択通信プロセッサより受信すると、実行中コマンド数(exec_cmd_num)は減算される。
図9は、図8に示した通信プロセッサ選択処理(ステップS803)の詳細な処理手順例を示すフローチャートである。まず、HBAドライバ110は、判定部704により、ステップS802でOS412から発行されたI/Oコマンド(以下、起動コマンド)のブロックサイズが、特定の通信プロセッサに占有制御される設定であるか否かを判断する(ステップS901)。具体的には、たとえば、HBAドライバ110は、図4に示したブロックサイズ情報(block_size_info)322を参照して判断する。
すなわち、ブロックサイズに対応する占有制御プロセッサ番号が「未設定」の場合はステップS901:Noとなり、占有制御プロセッサ番号が有る場合はステップS901:Yesとなる。ステップS901:Yesの場合は、ステップS903に移行し、HBAドライバ110は、選択部702により、占有制御プロセッサ番号の通信プロセッサを選択する(ステップS903)。
ステップS901:Noの場合、HBAドライバ110は、判定部704により、起動コマンドの転送先論理ユニットが、特定の通信プロセッサに占有制御される設定であるか否かを判断する(ステップS902)。具体的には、たとえば、HBAドライバ110は、転送先論理ユニットの占有割当情報(dev_info)を参照して判断する。すなわち、転送先論理ユニットの占有割当情報(dev_info)に占有制御プロセッサ番号が「未設定」の場合はステップS902:Noとなり、占有制御プロセッサ番号が有る場合はステップS902:Yesとなる。ステップS902:Yesの場合は、ステップS903に移行し、HBAドライバ110は、選択部702により、占有制御プロセッサ番号の通信プロセッサを選択する(ステップS903)。
HBA102に接続されているLUがディスク装置103とテープ装置203である場合、テープ装置203のLUに対するI/Oコマンド制御を特定の通信プロセッサに占有割り当てすることで一つのHBA102の先にテープ装置203とディスク装置103を接続した場合に発生する性能低下を防ぐことができる。
ステップS901:Noの場合、HBAドライバ110は、判定部704により、アクセス判定処理を実行する(ステップS904)。アクセス判定処理(ステップS904)の詳細については図8で後述するが、アクセス判定処理(ステップS904)では、転送先論理ユニットに対するアクセスがシーケンシャルアクセスであるか否かが判定される。
転送先論理ユニットに対するアクセスがシーケンシャルアクセスである場合(ステップS905:Yes)、ステップS906に移行し、シーケンシャルアクセスでない場合(ステップS905:No)、ステップS907に移行する。
シーケンシャルアクセスである場合(ステップS905:Yes)、HBAドライバ110は、選択部702により、最終コア情報(last_core_info)を参照して、転送先論理ユニットに対して最後にI/Oコマンドを発行した通信プロセッサを特定し、当該通信プロセッサを選択する(ステップS906)。
一方、シーケンシャルアクセスでない場合(ステップS905:No)、HBAドライバ110は、選択部702により、複数の通信プロセッサのうち、滞留中のI/Oコマンドの負荷が最も少ない通信プロセッサを選択する(ステップS907)。たとえば、HBAドライバ110は、実行中コマンド数(exec_cmd_num)が最少の通信プロセッサを選択する。
図10は、図9に示したアクセス判定処理(ステップS904)の詳細な処理手順例を示すフローチャートである。まず、HBAドライバ110は、判定部704により、起動コマンドが転送先論理ユニットに対して最後に実行したアクセス種別と同一種別であるか否かを判定する(ステップS1001)。具体的には、HBAドライバ110は、起動コマンドのアクセス種別と最終コマンド情報(last_cmd_info)で特定されるアクセス種別とが一致するか否かを判定することになる。同一種別でない場合(ステップS1001:No)、HBAドライバ110は、起動コマンドがランダムアクセスであると判定する(ステップS1004)。ランダムアクセスであるため、ステップS1004に移行する。
一方、同一種別である場合(ステップS1001:Yes)、シーケンシャルアクセスであるため、HBAドライバ110は、判定部704により、起動コマンドが転送先論理ユニットにて最後に実行されたアドレスと連続するか否かを判定する(ステップS1002)。具体的には、HBAドライバ110は、転送先論理ユニットに対して最後に実行したI/Oコマンドのアドレスとそのブロックサイズから計算された連続判定情報(next_LBA_adr_info)を参照して、連続判定情報(next_LBA_adr_info)と起動コマンドのアドレスとが一致するかを判定する。
一致する場合(ステップS1002:Yes)、HBAドライバ110は、判定部704により、起動コマンドがシーケンシャルアクセスであると判定し(ステップS1003)、不一致の場合(ステップS1002:No)、起動コマンドがランダムアクセスであると判定する(ステップS1004)。ステップS1003、S1004のあとは、ステップS905に移行して、アクセス判定処理(ステップS904)を終了する。
なお、ステップS1002において、連続判定情報(next_LBA_adr_info)と起動コマンドのアドレスとが一致した場合を例に説明したが、ストレージ装置440におけるシーケンシャルアクセス判定アルゴリズムはアクセスアドレスが連続していなかった場合にも動作する場合がある。
たとえば、連続判定情報(next_LBA_adr_info)から数百バイトの範囲内であればストレージ装置440ではシーケンシャルアクセスとみなして動作する場合がある。したがって、HBAドライバ110によるアドレス判定方法はこの数百バイト以内のアドレスのずれであれば、シーケンシャルアクセスとみなす判定としてもよい。また、このアドレス範囲のずれをパラメータ化し、接続されるストレージ装置440のシーケンシャルアクセスアルゴリズムに応じて変更可能な方法をとってもよい。
このように、実施例1では、HBA102を制御するHBAドライバ110が通信プロセッサ毎のI/O負荷やストレージ装置440へのアクセス種別、アクセスアドレス、ブロックサイズによりI/O特性を判定し、I/Oコマンドを起動する通信プロセッサを選択する。これにより、HBA102のトランザクション性能の向上を図ることができる。また、接続されるLUへのI/Oコマンド処理を特定の通信プロセッサに占有制御させることで、性能ボトルネックのないデータ転送を実現することができる。
なお、本発明は上述した実施例に限定されるものではなく、様々な変形例が含まれる。たとえば、上述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、説明した全ての構成を備えるものに限定するものでない。また、図6〜図8で説明した処理順序を適宜入れ替えて実現してもよい。
次に実施例2について説明する。
<LPARを用いた計算機システムの構成>
実施例2の計算機システムの構成を示す図である。本実施例ではホスト101内にLPARが作成されている点、ストレージ装置440内部を開示している点が異なる。その他の点、特にHBA102内部構成については実施例1で説明済みのため省略する。なお、図11に存在しないが実施例1に存在するエンティティは単に記載を省略しているだけで、そのエンティティを積極的に除外する意図はない。なお、図11中のHBA102に含まれる「Proc」432は通信プロセッサ432を、ストレージ装置440に含まれる「Proc」44011はストレージプロセッサを表す。また、HBA102にはデータ転送エンジン1021が含まれる(図11中では「E」と省略している)。
なお、図11の例では実装の容易化のため、HBA102のポート毎に用いることのできる通信プロセッサ432が決められているように示しているが、これは必須ではない。なお、データ転送エンジン1021の例としてはDMAエンジン、HBA102のフレーム送受信を制御するエンジンがあるが、ストレージ装置440とホストメモリ402とのデータ転送を行うエンティティであればこれらに限定されない。
<<LPAR>>
LPAR10110は、ホスト101内に生成される論理的なホストであって、ホストCPU401、及びホストメモリ402の一部の領域又は定められたメモリ量と、が割り当てられる。これら割り当てられたホストリソースによってLPAR10110はアプリケーション411、OS412、又はHBAドライバ110を実行する。なお、HBAドライバ110とOS412とは別なソフトウェアモジュールであってもよいが、そうでなくてもよい。同様にHBAドライバ110とアプリケーション411とは別なソフトウェアモジュールでなくてもよい。
なお、LPAR10110は典型的には下記によって生成される:
*ハイパーバイザ方式:ハイパーバイザプログラムをホストCPU401で実行する。
*コンテナ方式:LPAR10110毎にOS412やHBAドライバ110を実行する代わりに、LPAR10110間で共通のOS412やHBAドライバ110を実行する。LPAR10110は内部で実行するアプリケーション411に対して使用するホストCPU401及びホストメモリ402の領域又は量を区切ったエンティティとみなすことができる。
しかしLPAR10110の生成方式はこれ以外であってもよい。なお、以後の説明ではハイパーバイザ方式を前提に説明する。
<LPAR10110に対する通信プロセッサ432の割り当て>
上述のLPAR10110はホストリソースを占有して使用できるため、通常の計算用途ではLPAR10110間での性能競合を大部分軽減(通常の用途ではほぼ解消)することができる。一方で、近年のアプリケーションは高いI/O負荷を発生させる場合があり、又I/Oに関係するデバイス、装置が共有されているため、性能競合が発生する。特に近年はCPUのマルチコア化、ホストメモリ402の容量の大容量化が達成された結果、1つのHBA102で処理すべきI/Oコマンド数が増え、HBA102自体のI/Oコマンド処理限界を考慮すべき事態となっている。そのため、実施例2では下記のHBA102内の通信プロセッサ432の割り当てを行う:
*管理計算機は、I/O性能(特にIOPS)が求められるLPAR10110に対して特定の通信プロセッサ432を占有割り当てする。これによって他のLPAR10110から当該特定の通信プロセッサ432が使用されなくなる。これによって他のLPAR10110との性能競合を解消することができる。さらに、アクセスパターンの異なる複数のアプリケーション411を別々なLPAR10110内で実行すれば、より効率的なI/O処理が可能となる。その一例がOLTPとDWHである。
*管理計算機は、I/O性能が求められないLPAR10110が存在する場合は、事前に定めた共有の通信プロセッサ432を割り当てる(共有割り当て)。通信プロセッサ432が全て占有されてしまうと、このようなLPAR10110がI/Oコマンド送信に用いる通信プロセッサ432が無くなってしまう事態に対する対策である。
<LPAR10110に対するストレージリソースの割り当て>
しかし、I/Oコマンドに関する性能競合はストレージ装置440内でも発生し得る。IOPSの視点では下記ストレージリソースがボトルネックとなり得る:
*ストレージプロセッサ44011:HBA102からI/Oコマンドを受信し、解釈し、ストレージ装置440内のデータ転送エンジン(図示は省略)と連携してデータ転送を行う。
*プール:プール内部には複数の記憶デバイスが含まれ、典型的にはこれら複数の記憶デバイスを並列動作させながらI/Oコマンドの対象データの転送を行う。そのため、プールに含まれる記憶デバイスの数が処理可能なIOPS限界に影響する。さらに、記憶デバイスにはヘッドの移動を伴うHDDと、ヘッドの移動が不要な不揮発メモリ(例えばフラッシュメモリ)が存在するため、記憶デバイスの種類もプールのIOPS限界に影響する。
また、転送帯域(単に帯域と呼ぶ)の視点では下記ストレージリソースがボトルネックとなり得る:
*ポート:接続規格によって限界帯域が定まる。
*プール:記憶デバイス自体の転送能力の限界の他、記憶デバイスとストレージコントローラ44010との間の接続の帯域限界が関係するため、典型的には記憶デバイスの数が多いほどよい。また、帯域についても記憶デバイスの種類が関係する。
レスポンスタイムの視点は、これらIOPSの視点、帯域の視点も関係し、さらにキャッシュメモリ44012のヒット率が関係する。なお、アプリケーション411のアクセス特性が同じであれば、キャッシュメモリ44012の量が多いほど、ヒット率は向上する傾向がある。そのため、他のLPAR10110でキャッシュメモリ44012の使用量が増加し、重要なアプリケーションが実行中のLPAR10110で使用できるキャッシュメモリ量が減少するとキャッシュヒット率が低下し、レスポンスタイムが悪化する場合がある。
<統合リソースグループ>
統合リソースグループ11000は、LPAR10110に対して占有割り当てしたホストリソース及びストレージリソースを含む論理的なエンティティである。図11の例では、LPAR#4の統合リソースグループに、ホストCPU401が1つ、ホストメモリ402が提供する全領域の一部(領域1011P)、HBA#2(102)の通信プロセッサ#7、ストレージ装置440のストレージプロセッサ#D、キャッシュメモリ44012の一部の領域44012P、そしてプール#Cが含まれることを表している。
なお、複数のLPAR10110で統合リソースグループ11000のストレージリソースを共有してもよい。これは例えば下記の通りである:
*同じホスト101の複数のLPAR10110で統合リソースグループを共有する場合は、ストレージリソースと、通信プロセッサ432の共有を行ってもよい。この例はHBA102内の通信プロセッサ432の数がLPAR10110の数以下の場合に比較的現実的な選択肢となる。
*異なるホスト101のLPAR10110同士で統合リソースグループを共有する場合は、ストレージリソースが共有対象となる。この例は当該LPAR10110間でHAクラスタリング又は性能クラスタリングを行う場合に好適である。処理すべき負荷は個々のLPAR10110ではなく、クラスタ全体として扱うべきであり、従って共有アクセス先であるストレージ装置440のストレージリソースは個々のLPAR10110に対してストレージリソースを割り当てるよりもクラスタ内で柔軟に調節し、クラスタ全体としてよりパフォーマンスが発揮できるようにすべきだからである。
なお、「(1以上の)LPAR10110に対して占有して割り当てる」とは、その割り当て対象が割り当て対象から外れたLPAR10110から使用されない事を指す。
なお、その他占有割り当て対象としてもよいストレージリソースとしては下記がある。しかし、下記をリソースとして統合リソースグループに含めてもかまわない:
*HBA102のデータ転送エンジン。
*ストレージプロセッサ44011によるIOPS及び帯域制御スロットリングがある場合はその設定IOPS及び設定帯域。なお、スロットリングの設定は、上記ストレージプロセッサ44011以外に、ポート、LU、プール、キャッシュメモリのほか、後述する内部LU、パリティグループでもよく、又はホスト101のNIC(図示せず)を対象にしてもよい。また、スロットリングの設定は、その他のホストリソースやストレージリソースを対象としてもよい。
*HBA102とストレージコントローラ間の接続装置、又は接続媒体の帯域。これにはHBA102のポートとストレージ装置440のポートが含まれる。
*LU、内部LU、パリティグループ、及びパリティグループに含まれる記憶デバイス。なお、内部LUとは、ストレージ装置440の1つ以上のポートそれぞれにLUNを伴って割り当てられることでLUとなるような関係である。
<HBA102のMMIO空間とホスト101の物理アドレス空間とLPAR物理アドレス空間の関係>
次にホスト101の物理アドレス空間とLPAR物理アドレス空間の関係について説明する。実施例2でも実施例1と同様に、HBA102のレジスタはMMIO空間の一部として、ホスト101の物理メモリアドレス空間1011(図11中ではPA1011と省略している)にマッピングされている。そしてハイパーバイザの処理によって、各LPAR10110にとっての物理アドレス空間(混乱を避けるため、以後はLPAR物理アドレス空間と呼ぶ)が生成される。なお、図11中では、このLPAR物理アドレス空間をLA11111と省略している。
<<第1方式:MMIOマッピング方式>>
MMIOマッピング方式では、HBA102のMMIO空間430は各LPAR10110のLPAR物理アドレス空間11111それぞれにマッピングされている(図11中のLA11111内の網掛けの領域)。そしてLPAR10110内のHBAドライバ110は、LPAR物理アドレス空間にマッピングされたMMIO空間にアクセスすることでI/OコマンドをHBA102に送信することができる。
<<第2方式:仮想インターフェースデバイス方式>>
仮想インターフェースデバイス方式では、ハイパーバイザが仮想のインターフェースデバイスを生成し、LPAR10110上のOS412に提供する。ハイパーバイザは、OS412による仮想インターフェースデバイスに対するI/Oコマンド発行を検知し、ハイパーバイザ上で実行するHBAドライバ110にI/Oコマンドを発行する。
<LPAR10110内でのI/Oコマンド発行からデータ格納まで>
次に、LPAR10110内でのI/Oコマンド発行からデータ格納までの動作について説明する。先ずはMMIO方式について動作を説明する。
<<第1方式:MMIOマッピング方式>>
LPAR10110に対して通信プロセッサ432を占有して割り当てた場合のI/Oコマンド処理をリード処理を例として説明すると下記の通りである。
(Step11−01)アプリケーション411は、OS412に対してリードデータ格納先のアドレスを仮想アドレス空間で指定したファイルリード要求を発行する。
(Step11−02)OS412は、ファイルリード要求を受信し、ファイルリード要求に基づいてリードコマンドを生成し、リードデータ格納先アドレスと共にリードコマンドをHBAドライバ110に発行する。
(Step11−03)HBAドライバ110は、受信したリードコマンドとリードデータ格納先アドレスをホストメモリ402に格納する。
(Step11−04)HBAドライバ110は、使用可能な通信プロセッサ432の中から受信したリードコマンド送信先となる通信プロセッサ432を選択する。なお、使用可能な通信プロセッサ432は、当該ファイルリード要求前に事前に把握している。例えば、HBAドライバ110の起動時に、同ドライバ110がハイパーバイザから使用可能な通信プロセッサ432の識別子リストを受信し、保持することが考えられるが、他の方法で把握してもよい。
(Step11−05)HBAドライバ110は、選択した通信プロセッサ432に対応するMMIO空間のレジスタにアクセスすることで、選択した通信プロセッサ432に送信したいリードコマンドが存在することを通知する。
(Step11−06)選択された通信プロセッサ432は、レジスタのアクセスを検知し、Step11−03でホストメモリ402に格納したリードコマンドと、リードデータ格納先アドレスと、を読み込む。
(Step11−07)選択された通信プロセッサ432は、HBA102のポートを介して、ストレージ装置440のポートに対してリードコマンドを送信する。
(Step11−08)選択された通信プロセッサ432は、データ転送エンジン1021に対して、ストレージ装置440から受信したデータをホストメモリ402のリードデータ格納先アドレスに書きこませる指示を送信する。
以上がリード処理を例としたI/Oコマンド処理である。ライト処理の場合は、上記ステップに対して例えば下記が差異となる:
*「ファイルリード要求」が「ファイルライト要求」に代わる。
*I/Oコマンドが「リードコマンド」から「ライトコマンド」に代わる。
*「リードデータ格納先のアドレス」が「ライトデータ格納先のアドレス」に代わる。
*Step11−08は「ストレージ装置440からの転送準備完了応答を待ち、データ転送エンジン1021に対してライトデータ格納先アドレスからストレージ装置440にライトデータを送信させる指示を送信する」に代わる。
なお、HBA102が受信したリード又はライトデータ格納先アドレスはLPAR物理アドレス空間でのアドレスで指しているため、データ転送エンジン向けに物理アドレス空間上でのアドレスに変換することが考えられる。そしてその変換処理はハイパーバイザ、HBA102、ホストCPU401のハードウェア機能、ホスト101上のチップセットが提供するハードウェア機能が行ってもよい。また、アプリケーションが発行する要求はファイル以外のブロックアクセス要求であってもよい。
<<第2方式:仮想インターフェースデバイス方式>>
第1方式の説明と同様に、LPAR10110に対して通信プロセッサ432を占有して割り当てた場合のI/Oコマンド処理をリード処理を例として説明する。
(Step12−01)アプリケーション411は、OS412に対してリードデータ格納先のアドレスを仮想アドレス空間で指定したファイルリード要求を発行する(方式1と同じ)。
(Step12−02)OS412は、ファイルリード要求を受信し、ファイルリード要求に基づいてリードコマンドを生成し、リードデータ格納先アドレスと共にリードコマンドを仮想インターフェースデバイスに発行する。
(Step12−02B)ハイパーバイザは、OS412による仮想インターフェースデバイスに対するリードコマンド発行を検知し、リードデータ格納先アドレスと共にリードコマンドをHBAドライバ110に発行する。
(Step12−03)HBAドライバ110は、受信したリードコマンドとリードデータ格納先アドレスをホストメモリ402に格納する。
(Step12−04)HBAドライバ110は、使用可能な通信プロセッサ432の中から受信したリードコマンド送信先となる通信プロセッサ432を選択する(選択方法は後述する)。
(Step12−05乃至Step12−08)Step11−05乃至Step11−08と同じ。
なお、Step12−04における選択方法としては、LUとLPAR10110の割り当て対応関係が1:Nの場合は、下記方法を採用することが考えられる。
(Step12−04A)HBAドライバ110は、LUと通信プロセッサ432との対応リストを管理計算機から受信し、把握する。なお、当該対応リストは、管理計算機が記憶する「各LPAR10110がアクセスするLUのリスト」と、「各LPAR10110に割り当てた通信プロセッサ432のリスト」と、に基づいて管理計算機が生成したリストである。
(Step12−04B)HBAドライバ110は、対応リストを参照し、受信したリードコマンドに含まれるLUに対応する通信プロセッサ432を選択する。
以上である。その他説明については方式1と同様のため、省略する。
<<両方式のメリット>>
以上の動作から上記2方式はそれぞれ以下のメリットを持つ。
*MMIOマッピング方式:ハイパーバイザにて仮想インターフェースデバイスの処理が不要のため、I/O処理のオーバーヘッドが小さい。
*仮想インターフェースデバイス方式:SATA(Serial ATA)等のより一般的な仮想インターフェースデバイスを提供できる場合は、より多くの種類のOS412に対して通信プロセッサ割り当てが適用可能である。そして、OS412等のLPAR10110上で動作するプログラムをエンハンスせず(または僅かにエンハンスするだけで)、通信プロセッサ割り当てが適用可能である。
<<他の実現方式>>
なお、上述のI/Oコマンド処理方式以外にも実現方式が考えられる。例えば下記である:
上記第1方式の仮想HBAの提供をHBA102が行う。ハイパーバイザは、その仮想HBAのMMIO空間を特定のLPAR物理アドレス空間にだけマッピングする。ハイパーバイザによる選択処理を行わずに済むが、HBA102にエンハンスが必要となる。
<I/O性能を求めないLPAR10110との共存>
前述の通り、LPAR10110によってはアプリケーション411が行うI/Oの頻度が高くないため、通信プロセッサ432やストレージリソースの占有割り当てが過度な割り当てとなる場合がある。このようなLPAR10110(便宜上I/O低優先度LPARと呼ぶ)に対応するため、管理計算機は、事前に前述の共有の通信プロセッサ432に加えてさらに共有のストレージリソースを設定し、I/O低優先度LPARに共有割り当てを行ってもよい。
このような設定によって、I/O低優先度LPARは他のI/O低優先度LPAR以外のLPAR10110に対して性能競合を発生させずに済む。また、事前の共有設定を行うことで、占有使用による共有リソースの枯渇を防止して、I/O低優先度LPARがI/Oコマンドを送信できない事態を防止できる。
<管理計算機>
図示は省略したが、計算機システムには管理計算機が含まれてもよい。この場合、管理計算機は、ユーザ入力を受信するユーザインターフェースと、管理プログラムを実行するCPUと、ホスト101やストレージ装置440等に代表される計算機システムのコンポーネントに関する構成情報を格納する記憶資源と、を含む。管理計算機は例えば以下の処理を行うことが考えられる:
*LPAR10110に対する通信プロセッサ割り当て。
*I/O性能要件に基づいた通信プロセッサ432及びストレージリソースの割り当て。
*テンプレートに基づいたホストリソース及びストレージリソースの割り当て。
以下、それぞれについて説明する。
<<LPAR10110に対する通信プロセッサ割り当て>>
これまで説明の通り、各LPAR10110に通信プロセッサ432を占有割り当てすることは非効率又は現実的でない。そのため、管理計算機は管理プログラムを実行することで以下の処理を行ってもよい:
*管理計算機は、ユーザインターフェースを通じてユーザからLPAR10110の識別子と、どの(またはどのぐらいの数の)通信プロセッサ432を割り当てるか、を含むユーザ入力を受信する。そして、管理計算機は、その受信に基づいてホスト101(より正確にはホスト101のハイパーバイザ、HBAドライバ110、又はHBA102)に対してユーザが指定したLPAR10110に対しての通信プロセッサ割り当て指示を送信する。
*管理計算機は、ホスト101(より正確にはホスト101のハイパーバイザ、HBAドライバ110、又はHBA102)から情報を取得し、LPAR10110と通信プロセッサ432の割り当て関係をユーザインターフェースに表示する。この表示には当該関係が占有割り当てか、共有割り当てかといった情報を表示してもよい。
なお、これら指示の送信方式は例えば下記の通りである:
*MMIOマッピング方式:LPAR10110にて実行中のHBAドライバ110各々に対して異なる通信プロセッサ432の識別子を送信することで、LPAR10110に対する通信プロセッサ432の占有割り当てを実現する。
*仮想インターフェースデバイス方式:所定の通信プロセッサ432を占有させたいLPAR10110がアクセスするLUに対してだけ、所定の通信プロセッサ432が対応するようなリストを作成し、送信する。
<<共有通信プロセッサと共有ストレージリソースの管理>>
管理計算機は、ユーザ入力に基づいて、所定の通信プロセッサ432及び所定のストレージリソースを共有用途として記憶する。そして、管理計算機は、以後のLPAR10110に対する占有割り当てを行う場合は、共有用途として管理された所定の通信プロセッサ432及び所定のストレージリソースは占有使用対象から除外するように割り当てのための処理を行う。
<<I/O性能要件に基づいた通信プロセッサ432及びストレージリソースの割り当て>>
アプリケーション411のSLO(Service Level Objective)等からLPAR10110に対して明確なI/O性能要件を持つ場合、管理計算機は、そのI/O性能要件(典型的にはユーザインターフェースを通じて受信する)に基づいて適切な数の通信プロセッサ432と、適切な数又は量のストレージリソースを算出し、ホスト101とストレージ装置440のそれぞれに対して割り当て要求を送信する。
図12は、実施例2のリソース割り当てを示す図である。図12の領域1201はIOPS要件と各通信プロセッサ432及びストレージリソースの限界能力との関係を表した図である。また、図12の領域1202は帯域要件と各通信プロセッサ432及びストレージリソースの限界能力との関係を表した図である。
なお、各領域の高さは要件の大きさか、各通信プロセッサ432又はストレージリソースの限界性能の大きさを表している。なお、IOPSと帯域については各要件に影響を及ぼす通信プロセッサ432及びストレージリソースの限界性能の最小値がLPAR10110の限界性能となる。ただし、プールについてはその前にキャッシュメモリ44012の効果があるため、その点は踏まえる必要がある。
領域1201ではLPAR#1の10KIOPSのIOPS要件に基づいて、通信プロセッサ432が2つ、ストレージプロセッサ44011が1つ、及びプール#Aの占有割り当てが好適と計算した例を示している。このように、IOPS要件を満たすためには、IOPSに影響を及ぼす通信プロセッサ432、及びストレージプロセッサ44011やプールの何れの限界性能もIOPS要件以上であることが原則である。
ただし、ストレージプロセッサ44011の例のように、僅かに限界性能が不足し、新たにストレージプロセッサ44011を割り当てると過度な割り当てとなる場合はこのような追加割り当てをしなくてもよい。このようにして管理計算機は、ユーザ入力で指定されたIOPS要件を満たすための通信プロセッサ432の数及びストレージリソースの数又は量の計算を行う。領域1202についても同様である。
なお、各種要件が所定の値未満である場合に、管理計算機は、その要件に対応するLPAR10110をI/O低優先度LPARとみなしてもよい。そして、I/O低優先度LPARか否かは要件毎に定めてもよい。例えば、IOPS要件についてのみI/O低優先度と判断した場合は、管理計算機は共有用途の通信プロセッサ432を当該LPARに共有割り当てしてもよい。
<<テンプレートに基づいたホストリソース及びストレージリソースの割り当て>>
引き続き図12を用いて説明する。上述のような具体的な数値で要件を指定することは、アプリケーション411及びそのアプリケーション411の用途等で定まるI/O特性を熟知していなければ困難である。よって割り当てテンプレートを管理計算機が保有し、ユーザがそのテンプレートを指定したらその指定されたテンプレートの内容に沿ってホストリソース、ストレージリソースを割り当てる。
図12ではその一例としてOLTP(On‐Line Transaction Processing) Goldテンプレートと、DWH(Data WareHouse) Silverテンプレートが示されている。なお、このテンプレートは、上述のI/O特性を熟知したユーザが事前作成した情報であって、図12の例ではOLTP Goldテンプレートでは、IOPS要件は10KIOPS、帯域要件は1GByte/sのが必要であると記述された例である。なお、テンプレートにはこのようなI/O性能要件の数値の代わりとして、ホストリソース、通信プロセッサ432、ストレージリソースの数や量が記述されていてもよい。さらに、テンプレートには、割り当てが占有が必須か、共有でもよいか示す情報が含まれていてもよい。
以上、実施例2について説明した。
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。

Claims (10)

  1. ホストメモリ及び複数のホストプロセッサを含むホスト計算機と、ストレージ装置と、前記ホスト計算機及び前記ストレージ装置に接続され、複数の通信プロセッサを含むインターフェースデバイスと、を含む計算機システムであって、
    前記ホスト計算機は、前記ホストメモリの一部の領域である第1ホストメモリ領域と、前記複数のホストプロセッサの少なくとも1つと、前記複数の通信プロセッサの少なくとも1つと、を占有して割り当てる対象である第1論理パーティションを作成する、
    計算機システム。
  2. 請求項1記載の計算機システムであって、
    前記計算機システムはさらに、管理計算機を含み、
    前記管理計算機は:
    (1)前記管理計算機のユーザインターフェースから、ユーザ入力を受信し、
    (2)前記ユーザ入力に基づいて前記第1論理パーティションに割り当てる通信プロセッサを前記複数の通信プロセッサから選択し、
    (3)前記選択した通信プロセッサを前記第1論理パーティションへ割り当てる第1要求を、前記ホスト計算機に送信する、
    計算機システム。
  3. 請求項2記載の計算機システムであって、
    前記ストレージ装置は、前記ホスト計算機が発行したI/Oコマンドを処理するための複数のストレージリソースを含み、
    前記管理計算機は:
    (4)前記ユーザ入力に基づいて、前記第1論理パーティションに割り当てるストレージリソースを前記複数のストレージリソースから選択し、
    (5)前記選択したストレージリソースを前記第1論理パーティションへ占有して割り当てる第2要求を前記ストレージ装置に送信し、
    (6)前記選択したストレージリソースを前記第1論理パーティションに割り当てる第3要求を前記ホスト計算機に送信する、
    計算機システム。
  4. 請求項3記載の計算機システムであって、
    前記(1)は前記ユーザ入力に基づいて単位時間当たりのI/Oコマンド数に関する第1要件を計算することを含み、
    前記(2)及び前記(4)の選択は、前記第1要件を満たすために必要な通信プロセッサの数を計算し、又前記第1要件を満たすためのストレージリソースの数又は量を計算する、ことを含む、
    計算機システム。
  5. 請求項3記載の計算機システムであって、
    前記管理計算機は:
    (7)前記複数のストレージリソースの少なくとも一部を、共有ストレージリソースとして管理し、
    前記(4)の選択が占有割り当てである場合は、前記共有ストレージリソースを選択の対象外とする、
    計算機システム。
  6. 請求項2記載の計算機システムであって、
    前記第1論理パーティション、又は前記第1論理パーティションを生成するハイパーバイザは、前記インターフェースデバイスのデバイスドライバを実行し、
    前記ホスト計算機は:
    (A)前記第1要求を受信し、
    (B)前記デバイスドライバに対して、前記第1要求で割り当てられた通信プロセッサの識別子を送信し、
    前記デバイスドライバは、
    (C)前記割り当てられた通信プロセッサの識別子を受信し、
    (D)前記第1論理パーティションにて実行するアプリケーションまたはOSからI/Oコマンドを受信した場合は、前記受信した識別子に基づいて、I/Oコマンドを送信する通信プロセッサを選択し、
    (E)前記(D)で選択した通信プロセッサに対応するMMIO空間のレジスタにアクセスすることで、前記割り当てられた通信プロセッサに対してI/Oコマンドを送信する、
    計算機システム。
  7. 請求項6記載の計算機システムであって、
    前記デバイスドライバが前記LPARで実行される場合は、複数の論理パーティションの各々で前記デバイスドライバが実行され、
    前記管理計算機は、各LPARで実行されている前記デバイスドライバに対して異なる通信プロセッサの識別子を送信することで、占有使用を各LPARに設定する、
    計算機システム。
  8. 請求項6記載の計算機システムであって、
    前記ハイパーバイザは:
    前記第1論理パーティションに対してストレージ装置が提供する所定のLUを占有で割り当て、
    前記第1論理パーティションに対して前記所定のLUに対してI/Oコマンドが送信できる仮想インターフェースデバイスを提供し、
    前記デバイスドライバを実行し、
    前記管理計算機は:
    前記第1論理パーティションに対して占有割り当てしたLUの識別子と、前記(C)で受信した通信プロセッサの識別子と、に基づいて占有割り当てしたLUの識別子と通信プロセッサの識別子との対応リストを生成し、
    前記生成した対応リストを前記デバイスドライバに送信し、
    前記デバイスドライバは:
    前記仮想インターフェースデバイスを介して受信したI/Oコマンドを前記ハイパーバイザから受信し、
    前記I/Oコマンドに指定されたLUと、前記受信した対応リストに基づいて前記(D)の選択を行う、
    計算機システム。
  9. 請求項1記載の計算機システムであって、
    前記ホスト計算機は、下記(i)乃至(iii)を占有して割り当てる第2論理パーティションを作成し:
    (i)前記第1ホストメモリ領域以外の前記ホストメモリの一部の領域である第2ホストメモリ領域と、
    (ii)前記第1論理パーティションに割り当てた以外の前記複数のホストプロセッサの少なくとも1つと、
    (iii)前記第1論理パーティションに割り当てた以外の前記複数の通信プロセッサの少なくとも1つ、
    前記第1論理パーティションにて実行する第1アプリケーションと、前記第2論理アプリケーションにて実行する第2アプリケーションとは、I/Oコマンドが対象とする転送データ長の平均値が異なる、
    計算機システム。
  10. 請求項1記載の計算機システムであって、
    前記第1論理パーティションは、前記複数の通信プロセッサが割り当てられており、デバイスドライバと、OSと、アプリケーションと、を実行し、
    前記デバイスドライバは、前記アプリケーションまたは前記OSからI/Oコマンドを受信した場合は、少なくとも前記I/Oコマンドが対象とする転送データ長に基づいて、送信先となる通信プロセッサを前記複数の通信プロセッサから選択する、
    計算機システム。
JP2016552796A 2014-10-10 2014-10-10 計算機システム Active JP6262360B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/077260 WO2016056140A1 (ja) 2014-10-10 2014-10-10 インターフェースデバイス、及びインターフェースデバイスを含む計算機システム

Publications (2)

Publication Number Publication Date
JPWO2016056140A1 true JPWO2016056140A1 (ja) 2017-07-06
JP6262360B2 JP6262360B2 (ja) 2018-01-17

Family

ID=55652792

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016552796A Active JP6262360B2 (ja) 2014-10-10 2014-10-10 計算機システム

Country Status (3)

Country Link
US (1) US10409519B2 (ja)
JP (1) JP6262360B2 (ja)
WO (1) WO2016056140A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170129114A (ko) * 2015-01-25 2017-11-24 이과지오 시스템스 엘티디. 애플리케이션 중심의 객체 저장
US10789253B2 (en) * 2016-04-27 2020-09-29 Hitachi, Ltd. Computing system and server
WO2018008103A1 (ja) * 2016-07-06 2018-01-11 株式会社日立製作所 割込制御方法、及び、インタフェース装置
US10318162B2 (en) 2016-09-28 2019-06-11 Amazon Technologies, Inc. Peripheral device providing virtualized non-volatile storage
US20180150331A1 (en) * 2016-11-30 2018-05-31 International Business Machines Corporation Computing resource estimation in response to restarting a set of logical partitions
US10733112B2 (en) * 2017-06-16 2020-08-04 Alibaba Group Holding Limited Method and apparatus for hardware virtualization
US11093140B2 (en) * 2018-01-19 2021-08-17 Micron Technology, Inc. Performance allocation among users for accessing non-volatile memory devices
US10705747B2 (en) * 2018-03-21 2020-07-07 Micron Technology, Inc. Latency-based storage in a hybrid memory system
JP2022144675A (ja) * 2021-03-19 2022-10-03 キオクシア株式会社 情報処理装置、制御方法、および情報処理システム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009230381A (ja) * 2008-03-21 2009-10-08 Hitachi Ltd ストレージシステム及びボリューム割当方法並びに管理装置
JP2012185660A (ja) * 2011-03-04 2012-09-27 Nec Corp コンピュータシステム及びコンピュータシステム起動方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7370326B2 (en) * 2004-04-02 2008-05-06 Emulex Design & Manufacturing Corporation Prerequisite-based scheduler
US7937616B2 (en) * 2005-06-28 2011-05-03 International Business Machines Corporation Cluster availability management
JP4681505B2 (ja) 2006-05-23 2011-05-11 株式会社日立製作所 計算機システム、管理計算機及びプログラム配布方法
JP2008152594A (ja) 2006-12-19 2008-07-03 Hitachi Ltd マルチコアプロセッサ計算機の高信頼化方法
US20140136740A1 (en) 2011-06-29 2014-05-15 Hitachi, Ltd. Input-output control unit and frame processing method for the input-output control unit

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009230381A (ja) * 2008-03-21 2009-10-08 Hitachi Ltd ストレージシステム及びボリューム割当方法並びに管理装置
JP2012185660A (ja) * 2011-03-04 2012-09-27 Nec Corp コンピュータシステム及びコンピュータシステム起動方法

Also Published As

Publication number Publication date
US20170277470A1 (en) 2017-09-28
JP6262360B2 (ja) 2018-01-17
US10409519B2 (en) 2019-09-10
WO2016056140A1 (ja) 2016-04-14

Similar Documents

Publication Publication Date Title
JP6262360B2 (ja) 計算機システム
CN107690622B (zh) 实现硬件加速处理的方法、设备和系统
US11093177B2 (en) Virtualized OCSSDs spanning physical OCSSD channels
JP7280508B2 (ja) 情報処理装置、情報処理方法および仮想マシン接続管理プログラム
KR20200017363A (ko) 호스트 스토리지 서비스들을 제공하기 위한 NVMe 프로토콜에 근거하는 하나 이상의 호스트들과 솔리드 스테이트 드라이브(SSD)들 간의 관리되는 스위칭
US10248460B2 (en) Storage management computer
US9092366B2 (en) Splitting direct memory access windows
JP5969122B2 (ja) ホストバスアダプタおよびシステム
CN104461735B (zh) 一种虚拟化场景下分配cpu资源的方法和装置
US20150026678A1 (en) Control method for computer, and computer
JP2003256150A (ja) 記憶制御装置および記憶制御装置の制御方法
JP2013531283A (ja) ストレージの仮想化機能と容量の仮想化機能との両方を有する複数のストレージ装置を含んだストレージシステム
WO2021008197A1 (zh) 资源分配方法、存储设备和存储系统
US9582214B2 (en) Data access method and data access apparatus for managing initialization of storage areas
US20220066928A1 (en) Pooled memory controller for thin-provisioning disaggregated memory
US9104601B2 (en) Merging direct memory access windows
CN111367472A (zh) 虚拟化方法和装置
US9239681B2 (en) Storage subsystem and method for controlling the storage subsystem
US11080192B2 (en) Storage system and storage control method
WO2021120843A1 (zh) 云主机内存分配方法及云主机、设备及存储介质
JP6653786B2 (ja) I/o制御方法およびi/o制御システム
WO2017113329A1 (zh) 一种主机集群中缓存管理方法及主机

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170227

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170801

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170906

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170919

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171110

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: 20171205

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171213

R150 Certificate of patent or registration of utility model

Ref document number: 6262360

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150