"CPUと、Memoryと、複数のルートコンプレックスと、BMCとを有する演算部と、前記複数のルートコンプレックスと接続されるMRAPCIeスイッチと、前記MRAPCIeスイッチを管理するマネジメントモジュールと、前記MRAPCIeスイッチと接続されるI/Oデバイスとを有するI/O部とを備え、前記演算部の前記CPU上ではVMMが動作し、前記VMM上では複数のVMが動作し、前記VMMは、前記VMの構成変更時に、CPU、Memory及びI/Oの組み合わせを選択するVMリソース管理部を備え、前記VMリソース管理部は、I/Oの選択においては前記マネジメントモジュール上で動作するPCIマネージャにI/Oの変更指示を行い、前記PCIマネージャは、前記VMリソース管理部からの変更指示により指定されたI/Oの接続割り当てを行うI/O割り当て管理部を備えることを特徴とする計算機システム。前記VMリソース管理部は、指定されたCPU数分について、割り当て後のCPU同士が近距離となる組み合わせを優先して選択し、指定されたMemory分について、前記選択したCPUから近距離にあるMemoryを優先して選択し、前記選択したMemoryから近距離にあるルートコンプレックスを検索し、前記検索したルートコンプレックスの配下に指定されたI/Oの配置するよう、前記PCIマネージャーに変更指示を出力することを特徴とする請求項1記載の計算機システム。前記VMMは、前記CPU及び前記Memoryの位置情報を保持するノード構成テーブルと、前記ノード間の距離を格納するノード間距離テーブルとを有することを特徴とする請求項1記載の計算機システム。前記IO割り当て管理部は、前記PCIマネージャーが管理する物理PCIeスロットの番号、そのスロット上に搭載されるPCIeカードの種類、及びその割当先ブリッジ情報が格納されたI/O割り当てテーブルを有することを特徴とする請求項1記載の計算機システム。NUMAを採用するシステムにおいて、物理リソースを全て管理する単一OSを動作させる場合は、従来技術の通りOSレベルでのCPU、Memory、I/Oの位置情報を元にCPUとMemory間、CPUとI/O間、I/Oとメモリ間の関連付けを指定する方法が有効である。しかし、NUMAを採用するシステムを仮想化機構であるVMMVirtualMachineMonitorにより、物理リソースを分割してVMVirtualMachineに割り当てて使用する場合、CPU,Memoryはその汎用性から、必要量に対し性能が最適化される組を選択することが可能だが、I/Oに関しては特定の機能を有する為、CPUとMemory間、CPUとI/O間、I/Oとメモリ間すべてを最適化することが困難となる。上記課題を解決するための、本発明の一例を挙げるならば、CPUとMemoryと複数のルートコンプレックスとBMCとからなる演算部と、前記複数のルートコンプレックスと接続されるMRAPCIeスイッチと、前記MRAPCIeスイッチを管理するマネジメントモジュールと、前記MRAPCIeスイッチと接続されるI/OデバイスとからなるI/O部と、からなる計算機システムにおいて、前記演算部ではVMMと、前記VMM上で動作する複数のVMが動作し、前記VMMは、前記VMの構成変更時にCPU,Memory,I/Oを最適な組み合わせとなるよう選択するVMリソース管理部を備え、前記VMリソース管理部はI/Oの選択においては前記マネジメントモジュール上で動作するPCIマネージャにI/Oの変更指示を行い、前記PCIマネージャは前記VM構成制御部からの指示により指定されたI/Oの接続割り当てを行うI/O割り当て制御部を備えることを特徴とする。NUMAを採用するシステムにおいて、前記VMリソース管理部が、複数の構成をとり得るI/Oとメモリ間の利用可能な接続の中から、最も近距離となる構成を選択することにより、仮想マシンに割り当てる物理リソースを性能上最適な組み合わせにできる。以下、実施例を図面を用いて説明する。まず、本発明の実施例による計算機システムの構成について説明する。図1は、本発明を適用した計算機システムの、初期構成10aを示すブロック図である。計算機システム10は、演算部11とI/O部12aとから構成される。演算部11には4個のCPU101~104が搭載され、CPU101~104には図示しないメモリコントローラが内蔵される。それぞれのCPU101~104は、Memory111~114とCPU―Memory間接続131~134で接続される。CPU101~104は、マルチコアで構成されてもよい。CPU101~104は、互いにCPU間接続121~126で接続される。また、CPU101,CPU102はルートコンプレックス200aとCPU―ルートコンプレックス間接続141,142で接続され、CPU103,104はルートコンプレックス200bとCPU―ルートコンプレックス間接続143,144で接続される。ルートコンプレックス200内部には、CPUとPCIを変換するホストブリッジ201が内蔵されており、ホストブリッジ201を頂点としてPCIツリーを構成する。ホストブリッジ201は、仮想PCIバス202を介して、複数のルートブリッジ203と接続される。ルートブリッジ203は、ルートブリッジ-ルートポート間接続205によって、外部ポートであるルートポートに接続される。ルートコンプレックス200aは、サウスブリッジ210を介して管理コントローラであるBMC800と接続する。I/O部12aには、2個のMRAPCIeスイッチ600が搭載される。各MRAPCIeスイッチ600には、4個のI/Oデバイス410が接続される。I/Oデバイスの実装は、オンボード形式でもアドイン形式でもよい。I/Oデバイス種としては、NICやFiberChannelHBAを採用してもよい。マネジメントモジュール900は、2個のMRAPCIeスイッチ600の管理ポート604を介して、スイッチの制御を行う。MRAPCIeスイッチ600内部には、2個の上流ポート601-1,2より接続される上流ブリッジ603-1,2があり、それぞれ独立した仮想PCIブリッジ605-2,3により、下流ブリッジ607~608と接続する。さらに、管理用ポート604の下には、仮想PCIバス605-1により、下流ブリッジ606が接続される。下流ポート610には、初期状態として下流ブリッジ606に割り当てられている。マネジメントモジュール900上で動作するPCIマネージャ901により、下流ポートと下流ブリッジとの組み合わせは任意に設定が可能である。しかし、本実施例においては、複数の下流ポートで共有するマルチルートI/Oデバイスについては、対象としない。そのため、I/Oのホストへの割り当てにおいては、I/Oデバイス410は下流ポート607または608に占有して割り当てることになる。演算部11とI/O部12aとの接続は、ルートコンプレックス200aと2個のMRAPCIeスイッチ600a~bとがルートコンプレックス―MRAPCIeスイッチ間接続511aa,511abでそれぞれ接続され、ルートコンプレックス200bと2個のMRAPCIeスイッチ600a~bとがルートコンプレックス―MRAPCIeスイッチ間接続511ba、511bbでそれぞれ接続される構成をとる。さらに、BMC800とマネジメントモジュール900とが、BMC―マネジメントモジュール間接続801で、接続される。BMC―マネジメントモジュール間接続は、他の管理用目的と共通でも専用でもよい。参考として、従来技術による計算機システムの初期構成20を示すブロック図を、図2に示す。図2に示す従来の計算機システムと本発明を適用したシステム10との違いは、MRAPCIeスイッチ600の代わりにPCIeスイッチ300が搭載されている点である。PCIeスイッチ300のI/Oは1個の上流ポート301と複数の下流ポート307から構成される。PCIeスイッチ300の内部は上流ポート301と接続する上流ブリッジ303と、下流ポートと接続する下流ブリッジ305が仮想PCIバス304で相互に接続される構成をとる。PCIeスイッチ300はマルチルート非対応である為、図2に示す従来の計算機システムでは、ルートコンプレックスとPCIeスイッチとの接続は1対1となる。図3は、計算機システム10のソフトウエアハードウエアの構成を示す。CPU101~104上では、VMM700が動作する。さらに、VMMが提供する仮想ハードウエアである複数のVM701a~c上で、それぞれGuestOS710a~cが動作する。VMM700は、ハードウエアのNUMA情報として、ノード構成テーブル730と、ノード間距離テーブル740を備える。またVMM700は、VMリソース管理部720を備える。VMリソース管理部は、VMを構成する物理リソースを情報を管理するためにVMリソーステーブル750を用いる。マネジメントモジュール900では、マネジメントモジュールOS上でPCIマネージャ901が動作する。PCIマネージャ901はI/O割り当てを管理する、I/O割り当て管理部910を備える。I/O割り当て管理部はI/O割り当て情報を管理するためにI/O割り当てテーブル920を用いる。VMM700とPCIマネージャ901とは、CPU101~104,ルートコンプレック200,BMC800,マネジメントモジュール900を介して通信を行う。また、PCIマネージャ901は、マネジメントモジュール900からMRAPCIeスイッチ600に対して、VMMとは独立した制御を行うことができる。図4は、ノード構成テーブル730を示す。ノードはNUMAにおけるCPU、Memoryに付与される位置情報である。テーブルはCPUのノード情報を保持する730aと、メモリのノード情報を保持する730bに分かれる。図5は、ノード間距離テーブル740を示す。740aは2ノード間の距離を値として格納する。値は相対値であり、同一ノード間が10で、異種ノード間が20であるとき、異種ノード間は同一ノード間と比較して200の距離であることを意味する。740bはノードとルートコンプレックス間の距離を値として格納する。740aと同様値は相対値である。図6は、VMリソーステーブルを示す。CPUのリソーステーブル750a、Memoryのリソーステーブル760b、I/Oのリソーステーブル760cから構成される。それぞれのテーブルでは、VMMが保持している全リソースリストと、VMへの割り当て状態VMassinedおよび、割り当て先VM情報VMを格納する。図7は、I/O割り当てテーブル920を示す。I/O割り当てテーブル920はPCIマネージャが管理する全物理PCIeスロットの番号SLOTと、そのスロット上に搭載されるPCIeカードの種類PCIeCardと、その割り当て先ブリッジVS情報を格納する。テーブルの参照及び更新はI/O割り当て管理部910によって行われる。図8は、VMM700によるI/O構成変更フローである。ユーザーからVMの状態表示の指示を受領するとステップ1101、VMMはVMソーステーブル750からCPU,Memoryの割り当て状況を取得するステップ1102。次に、PCIMに利用可能なIOのリストを要求するステップ1103。次に、ユーザーへ現在使用中のVM状態及び利用可能なCPU,Memory,IOのリストを表示するステップ1104。ユーザーからのVM構成変更指示を受領するとステップ1105、構成変更は削除又は増設か減設かを判定するステップ1106。ステップ1106の判定結果が減設の場合、直後に構成変更は動的減設か否かを判定するステップ1107。ステップ1107の判定結果が動的減設の場合、VM上のGuestOSへのHotRemoveイベント通知によるGuestOSからのリソース切り離しを実施ステップ1108後、指定I/Oの撤去をPCIMに指示するステップ1109。ステップ1107の判定結果が動的減設でない場合は、ステップ1108を省略し直接ステップ1109に移る。ステップ1109の応答として、MRAPCIeSWからの指定I/OのPCIeHotRemoveイベント受信するステップ1111。次にVMリソーステーブル750への反映を行うステップ1119。1106の判定結果が増設の場合、指定CPU数分について割り当て後のCPU同士が近距離となる組み合わせを優先して割り当て選択するステップ1112。次に指定Memory分についてCPUから近距離にあるMeomoryを優先して割り当てを選択するステップ1113。次にMemoryから近距離にあるルートコンプレックスを検索するステップ1115。検索したルートコンプレックスの配下に指定I/Oの配置をPCIMに指示するステップ1116。MRAPCIeSWからの指定I/OのPCIeHotAddイベント受信ステップ1119。次に、構成変更は動的増設か否かを判定するステップ1117。ステップ1117の結果が動的増設である場合、VM上のGuestOSへのHotAddイベント通知によるGuestOSへのリソース追加を実施ステップ1118後にステップ1119へ移行する。ステップ1117の結果が動的増設でない場合、直接ステップ1119に移る。最後にユーザーへのVMの作成更新の結果を表示するステップ1120。図9は、PCIマネージャ901のI/O配置フローを示す。VMMからのI/Oの配置指示を受領ステップ1201すると、指定I/Oを管理ブリッジから切り離すステップ1202。次に、指示されたルートコンプレックス配下のブリッジに指定I/Oを接続するステップ1203。最後にブリッジレジスタの更新によるVMMへのPCIeHotAddイベントを通知するステップ1204。図10はPCIマネージャ901のI/O撤去フローを示す。VMMからのI/Oの撤去指示を受領するとステップ1301、ブリッジレジスタの更新によるVMMへのPCIeHotRemoveイベントを通知するステップ1302。次に、指定I/Oのブリッジからの切り離しを行うステップ1303。最後に管理ブリッジに指定I/Oを接続するステップ1304。次に、計算機システム10aに対するI/O割り当て手順を、具体的に説明する。例として、計算機システム10上で3個のVMを動作させるケースを挙げる。IOデバイス410aには、同種のNICカード、410bにはFCFiberChannelカードを搭載する。この計算機システム10aに対して、VM701a,VM701b,VM701cには、それぞれCPU,Memory,1/Oデバイスを物理資源に対して、逐次的に1/4,1/2,1/4の割合で割り当てを行う例を説明する。VM701aへのリソース割り当てが、図8のステップ1101~1105に示すフローでユーザーより指定されると、VMM700は、ステップ1106にてVMの新規作成指示であると判断する。すると、ステップ1112にてVMリソース管理部720はVMリソーステーブル750aを参照し、1CPU分=4Processor分として、同一ノード内の組であるProcessor0~3を選択する。結果、VMM701aには、CPU分の割り当てとして、CPU101の選択を行う。次に、ステップ1113にて、VMリソーステーブル750bを参照して、CPU101の属するノード0と同一ノードに属するMemory111の選択を行う。次に、ステップ1114にて、ノード間距離テーブル740bを参照して、選択したメモリの属するノード0から最も近距離にあるRC0=ルートコンプレックス200aを検索する。ステップ1115にてルートコンプレックス200aの配下へ、NIC1枚、FiberChannel1枚の割り当て指示を、PCIマネージャ901に行う。PCIマネージャ901は、ステップ1201でVMM700からのI/O割り当て指示を受け取ると、ステップ1202~1203にてNICカードを下流ブリッジ606a-1から切り離し607a-1へ接続し、FCカードを下流ブリッジ606b-1から切り離し、607b-1へ接続する。次に、ステップ1204にて接続された下流ブリッジのレジスタを更新することで、PCIマネージャ901は、VMM700へPCIeHotAddイベントを通知する。VMMは、ステップ1116でMRAPCIeスイッチ600aからNICカードのHotAddイベントを、PCIeスイッチ600bからFCカードのHotAddイベントを受信し、新規増設であるのでステップ1118のGuestOSへの通知は行わずVMM上リソースの変更のみにとどめる。次に、ステップ1119にて、VMM上のリソース管理テーブルを更新し、ステップ1120でユーザーに対してVM701aのリソース割り当て結果を表示する。次に、VM701bの割り当てがユーザーより指定されると、2CPU分の割り当てを検討する。ここで、2CPU=8Processorの選択には、ノード1-ノード2の組、ノード2-ノード3の組の2種類があるため、初めに各ノード間距離をテーブル740aを参照して比較する。その結果どちらも20であり等価であると判明し、次に、各ノードのルートコンプレックスとの距離関係を比較する為にテーブル740bを参照する。ここで、ノード2とノード3の組が共通の最短ルートコンプレックスを持つということが判明する。この結果、CPU103,CPU104が選択される。IOの割り当ては、VM701aと同様の手順にてルートコンプレックス200bの配下に、NIC2枚、FC2枚が割り当てられる。最後に、VM701cの割り当てが指定されると、VMMは、残りのリソースをVM701aと同様の手順で割り当てを行う。図11はI/O割り当て後の計算機システム10bを示す。各VM701a~cにはそれぞれ図12,図13,図14に示す物理リソースが割り当てられているように見える。このようにVMの構成に応じてPCIツリーを最適に構成することで、CPU―Memory間の性能だけでなく、CPU―I/O間、Memory―I/O間の性能が最適化され、システムが最大の性能を発揮できるようになる。"