JP3882931B2 - 仮想計算機環境におけるディスパッチ機能の管理 - Google Patents

仮想計算機環境におけるディスパッチ機能の管理 Download PDF

Info

Publication number
JP3882931B2
JP3882931B2 JP2004111616A JP2004111616A JP3882931B2 JP 3882931 B2 JP3882931 B2 JP 3882931B2 JP 2004111616 A JP2004111616 A JP 2004111616A JP 2004111616 A JP2004111616 A JP 2004111616A JP 3882931 B2 JP3882931 B2 JP 3882931B2
Authority
JP
Japan
Prior art keywords
virtual machine
work
lock
work queue
queue
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.)
Expired - Fee Related
Application number
JP2004111616A
Other languages
English (en)
Other versions
JP2004326755A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2004326755A publication Critical patent/JP2004326755A/ja
Application granted granted Critical
Publication of JP3882931B2 publication Critical patent/JP3882931B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • 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/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/52Indexing scheme relating to G06F9/52
    • G06F2209/523Mode

Description

本発明は、一般に、コンピュータ・システムに関し、より詳細には、仮想計算機オペレーティング・システムにおけるディスパッチ機能に対処する。
仮想計算機オペレーティング・システムは、現在では周知のものであり、共通基本部分と、共通基本部分によって形成される個別ユーザ部分とを含む。IBMのz/VMオペレーティング・システムでは、共通基本部分は「制御プログラム」または「CP」と呼ばれ、各ユーザ部分は「仮想計算機」または「ゲスト」と呼ばれている。仮想計算機またはゲストは、実メモリ、CPU、入出力などの実リソースの仮想共用/パーティション化である。ゲスト・オペレーティング・システムは各仮想計算機上で実行され/動作し、1つまたは複数のアプリケーションがゲスト・オペレーティング・システム上で動作する。各アプリケーションおよびゲスト・オペレーティング・システムは、それ自体の専用の実コンピュータ上で動作している場合と同様の挙動を示す。
各仮想計算機は、その同期機能と、作業待ち行列割当て機能と、作業スケジューラと、仮想計算機によって割り当てられた作業項目またはタスクおよび仮想計算機に割り当てられた作業項目またはタスクの関連作業待ち行列からなる、それ自体のディスパッチ機能を有する。同期機能、作業待ち行列割当て機能、作業スケジューラ、作業待ち行列はいずれもその仮想計算機にとって専用のものである。同期機能は、どのタスクが順次動作しなければならないかならびにどのタスクが並列動作可能であるかを制御するために、ロックを管理する。作業待ち行列割当て機能は、仮想計算機内のプログラム機能であって、仮想計算機によって生成されたときに仮想計算機の作業待ち行列に作業項目を追加するものである。待ち行列上の各作業項目は、そのタイプを示す情報、したがって、仮想計算機内のどの機能がそれを処理するために最も適しているかを示す情報を含む。「作業スケジューラ」は、実行のためにその待ち行列上の各作業項目をスケジューリングし、実行のために仮想計算機内の適切な機能にそれを渡すプログラム機能である。作業項目をスケジューリングするための既知のアルゴリズムは数多く存在する。これは、各タスクに割り当てられた優先順位レベルや、作業項目が待ち行列に到達した順序などの様々な要因に基づくものである可能性がある。作業項目の一部はゲスト・オペレーティング・システムから発生し、他の作業項目はゲスト・オペレーティング・システム上で動作するアプリケーション(複数も可)から発生する。
仮想計算機がアイドル状態になることは、仮想計算機および実コンピュータ・リソースの関連パーティションの無駄遣いである。これは、関連作業待ち行列上に作業項目がまったくなく、現行作業項目が完了したときに発生する可能性がある。上記のディスパッチ機能はタスクを割り当ててディスパッチする際に有効であるが、異なる仮想計算機間で負荷およびスキルのバランスを最適にするように複数の仮想計算機のディスパッチ機能を管理することが望ましいだろう。
また、他の「作業用」仮想計算機用の共用作業待ち行列に対して「ホスティング」するためにサーバ仮想計算機を使用できることも分かっている。共用作業待ち行列は、サーバ仮想計算機にとって専用のメモリ内に常駐する。作業用仮想計算機が新しい作業項目を作成し、この作業用仮想計算機用の作業待ち行列割当て機能がこの新しい作業項目をサーバ仮想計算機に送信することを決定すると、この作業用仮想計算機は通信プロトコル(たとえば、TCP/IP)を使用して、その作業項目をこのサーバ仮想計算機に送信する。次にサーバ仮想計算機は、サーバ仮想計算機が決定した順序で新しい作業項目を共用作業待ち行列上に置く。作業用仮想計算機内の作業スケジューラが共用作業待ち行列上の作業項目を実行したいと希望する場合、その作業スケジューラは通信プロトコルを使用して、サーバ仮想計算機に対してその要求を行う。応答として、サーバ仮想計算機は通信プロトコルを使用して、その要求を行った作業用仮想計算機に作業項目を送信する。この配置は共用作業待ち行列を提供するが、作業待ち行列への作業項目の送信と、作業待ち行列からの作業項目の入手のいずれのためにも、高オーバヘッドの通信プロトコルを必要とする。加えて、この配置は、共用作業待ち行列を管理するために余分な仮想計算機を必要とする。さらに、サーバ仮想計算機は、作業用仮想計算機をモニターし、どの作業用仮想計算機が最も迅速にその作業項目を処理できるようになるかを推定することにより、作業用仮想計算機間の負荷のバランスを取ろうと試みる。作業用仮想計算機が動的に追加および/または削除されると、サーバ仮想計算機は、作業用仮想計算機間の負荷のバランスを取り直すことができなければならない。さらに、サーバ仮想計算機は、その専用同期機能が決定するように作業項目の同期を取らなければならない。これらのサーバ仮想計算機の機能はいずれも、サーバ仮想計算機と作業用仮想計算機との間の相当な通信を必要とする。
IBM資料「z/VM4.2.0 General Information」(文書番号:GC24−5991−03)
したがって、本発明の一目的は、異なる仮想計算機間の作業負荷および/またはスキルのバランスを効果的に取る、仮想計算機オペレーティング・システム内の機能性を提供することにある。
本発明の他の目的は、ディスパッチおよびその他の機能を管理するために必要なオーバヘッドを最小限にする、上記のタイプの仮想計算機オペレーティング・システム内の機能性を提供することにある。
本発明は、仮想計算機オペレーティング・システム内で作業項目をディスパッチするためのシステム、コンピュータ・プログラム記録媒体、および方法にある。仮想計算機オペレーティング・システムは第1および第2の仮想計算機を定義する。第1および第2の作業待ち行列はメモリ内に作成される。第1の仮想計算機は、第1の作業項目を第1の作業待ち行列に割り当て、第2の作業項目を第2の作業待ち行列に割り当てる。第1の仮想計算機は、第1の仮想計算機による実行のために第1の作業待ち行列からの作業項目をスケジューリングする。第1および第2の作業項目は第1の仮想計算機から発生する。第1および第2の作業待ち行列は、第1の仮想計算機によって直接アクセス可能である。第2の仮想計算機は、第3の作業項目を第1の作業待ち行列に割り当て、第4の作業項目を第2の作業待ち行列に割り当てる。第2の仮想計算機は、第2の仮想計算機による実行のために第2の作業待ち行列からの作業項目をスケジューリングする。第3および第4の作業項目は第2の仮想計算機から発生する。第1および第2の作業待ち行列は、第2の仮想計算機によって直接アクセス可能である。
本発明の1つの特徴によれば、第1の仮想計算機は第2の作業待ち行列からの作業項目をスケジューリングすることができず、第2の仮想計算機は第1の作業待ち行列からの作業項目をスケジューリングすることができない。
また、本発明は、第1および第2の仮想計算機を定義する仮想計算機オペレーティング・システムにもある。この仮想計算機オペレーティング・システムはメモリ内の共用作業待ち行列を有する。第1の仮想計算機は、第1の作業項目を共用作業待ち行列に割り当てるための第1のプログラム機能を含む。第1の仮想計算機は、第1の仮想計算機による実行のために第1および第2の仮想計算機から発生する作業項目を共用作業待ち行列からスケジューリングするための第2のプログラム機能を含む。第1の作業項目は第1の仮想計算機から発生する。共用作業待ち行列は、第1および第2のプログラム機能によって直接アクセス可能である。第2の仮想計算機は、第3の作業項目を作業待ち行列に割り当てるための第3のプログラム機能を含む。第2の仮想計算機は、第2の仮想計算機による実行のために第1および第2の仮想計算機から発生する作業項目を共用作業待ち行列からスケジューリングするための第4のプログラム機能を含む。第2の作業項目は第2の仮想計算機から発生する。共用作業待ち行列は、第3および第4のプログラム機能によって直接アクセス可能である。メモリは、第1および第2の仮想計算機によって共用される。
次に、全体を通して同様の参照番号が同様の要素を示す図面を詳細に参照すると、図1は、全体が10で示されるコンピュータ・システムを示している。コンピュータ・システム10は、物理的コンピュータ20(CPU23を含む)と、仮想計算機オペレーティング・システム11とを含む。一例として、仮想計算機オペレーティング・システムは、本発明を含むように修正されたIBMのz/VMバージョン4.2.0または4.3.0にすることができる。z/VM4.2.0の詳細は、PO Box 29570, IBM Publications, Raleigh, North Carolina 27626-0570にあるInternational Business Machines Corp.からまたはwww.IBM.com/shop/publications/orderにあるWWWで入手可能なIBM資料「z/VM 4.2.0 GeneralInformation」(文書番号:GC24−5991−03)に開示されている。この資料は、本開示の一部として参照により本書に組み込まれる。本発明は他のサーバ・コンピュータまたはパーソナル・コンピュータでも実現可能であるが、オペレーティング・システム11はIBMのzSeriesメインフレームなどの物理的コンピュータ10で実行される。オペレーティング・システム11は、共通基本部分21(z/VMオペレーティング・システムでは「CP」と呼ぶ)を含む。共通基本部分21は、物理的コンピュータのリソース(CPUおよびメモリを含む)をロジカル・パーティション化して、ユーザ部分12、14、16(z/VMオペレーティング・システムでは「仮想計算機」または「ゲスト仮想計算機」と呼ぶ)を形成する。また、共通基本部分は、メモリの仮想化、デバイスの仮想化、CPUの仮想化などの機能も実行する。ゲスト・オペレーティング・システム22、24、26は、ユーザ部分12、14、16上でそれぞれ実行され、アプリケーション32、34、36は、ゲスト・オペレーティング・システム22、24、26上でそれぞれ実行される。各オペレーティング・システム上では複数のアプリケーションが実行されている可能性がある。一例として、ゲスト・オペレーティング・システム22および24はLinux(Linus Torvaldsの商標)オペレーティング・システムであり、オペレーティング・システム26はIBMのCMSオペレーティング・システムである。Microsoft Windows(登録商標)オペレーティング・システム、Unix(登録商標)オペレーティング・システム、Sun MicrosystemsのSolaris(登録商標)オペレーティング・システム、またはHewlett PackardのHP UXオペレーティング・システムなど、ユーザ部分で実行中の他のゲスト・オペレーティング・システムも実現可能である。一例として、アプリケーション32、34、36は、IBMのDB2データベース管理アプリケーション、IBMのWebSphereアプリケーション、通信アプリケーションなどにすることができる。アプリケーション32、34、36は作業項目を生成する可能性があることを除いては、そのアプリケーションの性質は本発明の一部を形成するものではない。
各仮想計算機は、その専用データ、アプリケーション、それぞれ仮想計算機12、14、16内の作業待ち行列割当て機能62、64、66(「WQAF」)および作業スケジューラ42、44、46などのオペレーティング・システム機能のために、それ自体の専用メモリを有する。その結果として、各仮想計算機には、個別の物理的コンピュータ内のように他の仮想パーティションからのプライバシの基準が与えられる。また、仮想計算機間のロジカル・パーティションは、仮想CPUと他の仮想デバイスを各仮想計算機に割り振ることによって提供される。「仮想CPU」は実CPU(複数も可)の一部分であって、ゲスト・オペレーティング・システムにとってそれ自体のCPUのように見える部分である。以下により詳細に説明するように、各WQAFは、その割当てアルゴリズムに基づいてそれ自体の仮想計算機が作成した各作業項目を共用メモリ内の作業待ち行列52、54、または56に割り当てる。この割当てアルゴリズムは、どの仮想計算機が所与のタイプの作業項目などを処理するように特に適合されているかなどの作業負荷バランスに基づくものである可能性がある。また、各WQAFは、後述するように、各仮想計算機の状況をモニターし、その状況を「アイドル」または「非アイドル」として更新する。各スケジューラは、そのスケジューリング・アルゴリズムに応じて、その公称作業待ち行列上の作業項目の実行をスケジューリングする。このスケジューリング・アルゴリズムは、作業項目に割り当てられた優先順位レベル、作業項目が作業待ち行列に割り当てられた時間などに基づくものである可能性がある。
コンピュータ10は、すべての仮想計算機12、14、16によって共用されるメモリ領域25も含む。「共用」されているので、各仮想計算機は、共用メモリ25と、適切なアドレスによって共用メモリに記憶されたデータおよびデータ構造に直接アクセスすることができる。本発明によれば、WQAF62、64、66およびそれぞれのスケジューラ42、44、46に関する作業待ち行列52、54、56は共用メモリ内に位置する(ただし、WQAFとスケジューラはいずれもそれぞれの仮想計算機の専用メモリ内にある)。その結果として、各WQAFは、いずれかの作業待ち行列に作業項目を追加するためにすべての作業待ち行列にアクセスすることができる。本発明の第1の実施形態では、各スケジューラは、その「半専用」作業待ち行列、すなわち、仮想計算機12およびスケジューラ42に関する作業待ち行列52、仮想計算機14およびスケジューラ44に関する作業待ち行列54、仮想計算機16およびスケジューラ46に関する作業待ち行列56から作業項目を除去するためだけにプログラミングされる。それぞれの仮想計算機内のスケジューラのみがそれから作業項目を除去するが、どのWQAFでもそれに作業項目を追加することができるので、このような作業待ち行列のそれぞれは本発明の第1の実施形態では「半専用」になっている。(しかし、本発明の他の実施形態では、各スケジューラは、その半専用作業待ち行列が空であるときに他の半専用作業待ち行列にアクセスして作業項目を除去するようにプログラミングすることができる。)図1に示す状態では、作業待ち行列52はWQAF64のアクションによって仮想計算機14から獲得された1つの作業項目70を有し、作業待ち行列54は空であり、作業待ち行列56は3つの作業項目72、74、76を有する。作業項目72はWQAF62のアクションによって仮想計算機12から獲得されたものである。図示していないが、作業項目74および76は、WQAF64のアクションによって仮想計算機14から獲得されたものである。また、図1に示す状態では、仮想計算機12はスケジューラ42のアクションによって作業待ち行列52から作業項目70を獲得し、仮想計算機16はスケジューラ46のアクションによって作業待ち行列56から作業項目76を獲得している。制御ブロック58は、仮想計算機の現在の状態、すなわち、「アイドル」または「非アイドル」と、各作業待ち行列からの作業項目のうち、次にスケジューリングすべきものがあれば、どの作業項目であるかを示している。図1に示す状態では、仮想計算機12はアイドル状態であり、スケジューラ42内のその作業待ち行列ポインタは作業項目70を指し示している。仮想計算機12が作業項目70を獲得した後、(その間に1つも追加されていない限り)作業待ち行列52には作業項目がまったく残らなくなるので、その作業待ち行列ポインタは「ヌル」になる。また、図1に示す状態では、仮想計算機14はアイドル状態であり、作業待ち行列54には現在、作業項目がまったくないので、スケジューラ44内のその作業待ち行列ポインタは「ヌル」を示している。また、図1に示す状態では、仮想計算機16は「非アイドル」状態であり、作業待ち行列の1つから前に獲得した作業項目を現在実行中である。仮想計算機16内のスケジューラ66の作業待ち行列ポインタは、現在、作業項目76を示しており、したがって、この作業項目は仮想計算機16による実行のためにスケジューラ46によって除去されていない。
図2は、仮想計算機の各WQAFおよび関連操作を示している。仮想計算機は、データの読取りまたは書込み、アプリケーションの実行、アプリケーションに対する要求の作成などの作業項目を作成する(ステップ100)。作業項目は、ゲスト・オペレーティング・システムまたはゲスト・オペレーティング・システム上で動作するアプリケーションによって開始し、処理のためにゲスト・オペレーティング・システムに渡すことができる。次に、WQAFは、半専用作業待ち行列52、54、56のうちの1つに作業項目を割り当てるべきかまたは後述する共用作業待ち行列80に作業項目を割り当てるべきかを判定する。この判断はWQAF内の割当て機能に基づくものであり、共用作業待ち行列に作業項目を割り当てるという決定は、通常、負荷バランスのために行われる。WQAFは半専用作業待ち行列52、54、56のうちの1つにこの作業項目を割り当てることを決定するものと想定する(判断101)。次に、その作業項目を作成した仮想計算機内のWQAF(たとえば、仮想計算機12内のWQAF)は、WQAF内の割当てアルゴリズムが決定した作業待ち行列に作業項目を割り当てる(ステップ102)。また、WQAFは、作業待ち行列内のどの位置に新しい作業項目を挿入すべきかを決定する。割当てアルゴリズムが単純に先入れ先出し方式である場合、WQAFは作業待ち行列の末尾にそれぞれの新しい作業項目を割り当て、したがって、それは最後に除去すべきものになる。割当てアルゴリズムが優先順位レベルに基づくものである場合、WQAFは、優先順位が低い他の作業項目の前であって、優先順位が同じ(作業項目が失効するのを防止するため)かまたは優先順位が高い作業項目の後の作業待ち行列内の位置にそれぞれの新しい作業項目を割り当てる。図1に示す例では、WQAF62は仮想計算機16用の作業待ち行列56に作業項目を割り当てる。この特定の割当ては負荷バランスに基づくものではない。というのは、仮想計算機14は、現在、アイドル状態であり、その作業待ち行列54は、現在、空であるのに対し、仮想計算機16は、現在、アイドル状態ではなく、その作業待ち行列56は作業項目72を追加する前に他に2つの作業項目を有しているからである。むしろ、この特定の割当ては、仮想計算機12または14では見つけられない能力である、このタイプの作業項目を処理するための仮想計算機16の特殊能力に基づくものである。また、WQAF62は制御ブロック58を読み取って、仮想計算機16が、現在、アイドル状態であるかどうかも判定する(判断104)。アイドル状態ではない場合、すなわち、仮想計算機16が、現在、使用中である場合、WQAF62は仮想計算機16に対する割込みを行わず、この作業項目に関するその処理を終了する(ステップ106)。もう一度、判断104を参照すると、仮想計算機16が、現在、アイドル状態である場合、WQAF62は仮想計算機16に対する割込みを発行し(ステップ108)、この作業項目に関するその処理を終了する(ステップ110)。この割込みは、スケジューラ46を呼び出して作業項目の有無について作業待ち行列56(または共用作業待ち行列80)をチェックするように、仮想計算機16に警告することになる。
図3は、各仮想計算機の作業スケジューラおよびその仮想計算機の関連操作を示している。ステップ200では、仮想計算機のスケジューラ(たとえば、仮想計算機12のスケジューラ42)を呼び出す。この呼出しは、現行作業の完了後または仮想計算機が休止状態であるときは割込みの受信後に仮想計算機内の仮想プロセッサによって開始される。スケジューラはまず、その半専用作業待ち行列または後述する共用作業待ち行列80から作業項目をフェッチするべきかどうかを判断する。例証のため、スケジューラはその半専用作業待ち行列から作業項目をフェッチすることを決定するものと想定する(ステップ201)。次に、スケジューラ42は制御ブロック58をチェックして、仮想計算機12用の作業待ち行列52上に1つの作業項目または1つの作業項目グループが存在するかどうかを判定する(判断202)。作業待ち行列上に1つの作業項目グループが存在する場合、制御ブロック内のポインタは、どの作業項目が次にスケジューリングすべき作業項目であるかを示す。作業待ち行列内のどの作業項目を次にスケジューリングすべきかという判定は、それらが作業待ち行列上に現れる順序によって決定される。その作業項目を作成した仮想計算機のWQAFは、作業待ち行列内のどこにその作業項目を配置すべきかを決定する。また、このWQAFは、どの作業待ち行列上にその作業項目を配置すべきかも決定している。作業待ち行列が空ではない場合(作業待ち行列52に関して図1に示したケースである)、その仮想計算機には「非アイドル」のマークが付けられ(ステップ203)、スケジューラ42は制御ブロック内のポインタが示す待ち行列からその作業項目を除去する(ステップ204)。図1に示す例では、ポインタは作業項目70を指し示している。次に、スケジューラ42はその作業項目を解析して、その性質と、仮想計算機12内でどの機能を呼び出してその作業項目を実行すべきかを決定する。作業項目70の除去後、(新しい作業項目がごく最近、追加されていない限り)作業待ち行列52は空になり、したがって、作業待ち行列52に関するポインタは「ヌル」を示すことになる。次に、受信側機能はその作業項目を実行する(ステップ206)。作業項目の完了後(ステップ208)、制御をスケジューラに返して、ステップ200、201、202を繰り返す。
もう一度、判断202を参照すると、作業項目70の完了後(または図1に示す状態の作業待ち行列54のケース)など、スケジューラの待ち行列上に作業項目がまったくない場合、スケジューラは、「アイドル」を示すようにこの仮想計算機用の制御ブロックを更新する(ステップ212)。次に、仮想計算機は待ち/スリープ中または「休止」状態になり、その場合、仮想計算機は割込みを受信できる状態になっているが、いかなる作業項目も実行しない(ステップ214)。その後、仮想計算機は割込みを受信して、それが実行すべきタスクを持っていることを仮想計算機に警告するものと想定する(判断216)。応答として、仮想計算機はスケジューラを呼び出して、その作業待ち行列をチェックすることになる(ステップ200)。
図1〜図3に示す本発明の上記の実施形態では、各仮想計算機のWQAFは、それ自体の仮想計算機の1つの作業項目を作業待ち行列52、54、56のうちのいずれかに割り当てることができる。本発明の上記の実施形態では、各仮想計算機のスケジューラは、それ自体の作業待ち行列のみから作業項目を除去する。しかし、本発明の他の実施形態では、それ自体のディスパッチ・アルゴリズムに基づいて作業待ち行列52、54、56のうちのいずれかから作業項目を除去する自由をスケジューラに与えることができる。たとえば、半専用作業待ち行列(たとえば、仮想計算機14のスケジューラ44用の作業待ち行列54)が空である場合、スケジューラ(この例ではスケジューラ44)は、他の作業待ち行列(この例では作業待ち行列52または56)から作業項目を除去して、その仮想計算機の処理能力を完全に利用することを選択することができ、したがって、その仮想計算機はアイドル状態のままにならない。別法として、スケジューラの半専用作業待ち行列が空である場合、スケジューラは、後述する共用作業待ち行列から作業項目を除去しようと試みることができる。
図4は、本発明によるコンピュータ・システム10の他の特徴を示している。半専用作業待ち行列52、54、56の代わりにまたはそれらに加えて、共用作業待ち行列80が共用メモリ25に記憶されている。制御ブロック58は、共用作業待ち行列に作業項目を追加するためおよび共用作業待ち行列から作業項目を除去するために許可/登録された仮想計算機のリストを含んでいる。この許可は、様々な基準に基づいて基本部分21によって施行することができる。たとえば、この許可は、1つの作業待ち行列を他の仮想計算機と共用するために各仮想計算機によって行われる要求に基づくものにすることができる。すべての仮想計算機が同意した場合、それらはいずれも作業待ち行列を共用することが許可される。別法として、いずれかの仮想計算機が既存の共用作業待ち行列に加わることを要求した場合、それは共用メモリへのアクセス権を有する場合に許可されることになる。いずれの場合も、共用作業待ち行列を共用したいと希望するすべての仮想計算機は、共用作業待ち行列への直接アクセスを必要とする。図示の例では、仮想計算機12、14、16はいずれも共用作業待ち行列にアクセスすることが許可され、この許可は制御ブロックに登録される。したがって、各WQAF62、64、66は共用作業待ち行列80に作業項目を追加することができ、各スケジューラ42、44、46は共用作業待ち行列から作業項目を除去することが許可される。作業待ち行列52、54、56も存在する場合、各WQAFは、それ自体の割当てアルゴリズムに応じて、それ自体の仮想計算機から発生する作業項目を作業待ち行列52、54、56、80のうちのいずれかに割り当てるべきかどうかを選択することができる。また、各WQAFは、先入れ先出し方式などのそれ自体の割当てアルゴリズムに基づくかまたは作業項目の優先順位レベルに基づいて、共用作業待ち行列内のどこにその新しい作業項目を挿入すべきかも決定する。同様に、各スケジューラは、そのディスパッチ・アルゴリズムに応じて、それ自体の作業待ち行列から作業項目を除去すべきかまたは共用作業待ち行列から作業項目を除去すべきかを選択することができる。また、各許可/登録仮想計算機の隣には、「アイドル」または「非アイドル」というその状況に関する表示も存在する。また、制御ブロック58は、どの作業要素がスケジューラによっていずれかの許可/登録仮想計算機から次に除去すべき作業要素であるかを示すために、共用作業待ち行列80用のポインタも含む。作業要素は、それらが待ち行列化された順序で共用作業待ち行列80から除去される。
図5は、共用作業待ち行列に関する各仮想計算機のWQAFおよびその仮想計算機の関連操作を示している。仮想計算機は、データの読取りまたは書込み、アプリケーションの実行、アプリケーションに対する要求の作成などの作業項目を作成する(ステップ400)。これは、ゲスト・オペレーティング・システムまたはゲスト・オペレーティング・システム上で動作するアプリケーションによって開始し、処理のためにゲスト・オペレーティング・システムに渡すことができる。次に、この作業項目を作成した仮想計算機(この例では仮想計算機12)内のWQAF(たとえば、WQAF62)は、WQAF内の割当てアルゴリズムが決定した作業待ち行列にこの作業項目を割り当てる(ステップ402)。図5に示す例では、WQAF62は、おそらく負荷バランスのために、共用作業待ち行列80にこの作業項目を割り当てる(ステップ402)。次に、WQAF62は制御ブロックをチェックして、すべての仮想計算機が「非アイドル」状態、すなわち、使用中であるかどうかを判定する(判断404)。非アイドル状態である場合、これはこの作業要素に関するWQAF62の処理を終了する(ステップ406)。上記で説明したように、このような条件下にある仮想計算機のいずれかに対する割込みを行うことは無駄/破壊的なことになるだろう。しかし、1つまたは複数の仮想計算機が「アイドル」状態である場合、WQAF62は制御ブロックからそれらを識別し(ステップ408)、次にすべての「アイドル」仮想計算機に割込みを送信する(ステップ408)。これにより、WQAF62によるこの作業項目の処理は終了する(ステップ412)。この割込みは、それぞれのスケジューラ(複数も可)を呼び出して、作業項目の有無について共用作業待ち行列80をチェックするように、アイドル仮想計算機(複数も可)に警告することになる。
図6は、共用作業待ち行列に関する各仮想計算機の作業スケジューラおよびその仮想計算機の関連操作を示している。ステップ500では、仮想計算機(この例では仮想計算機12)のスケジューラ(たとえば、スケジューラ42)を呼び出す。この呼出しは、現行作業の完了後または仮想計算機が休止状態であるときは割込みの受信後に仮想計算機内の仮想プロセッサによって開始される。その呼出しに応答して、スケジューラはその半専用作業待ち行列または共用作業待ち行列から作業項目をフェッチするべきかどうかを判定する。この判断はスケジューラ内のアルゴリズムに基づくものであるか、または半専用作業待ち行列上にディスパッチすべき作業項目が存在しない場合もある。例証のため、スケジューラは共用作業待ち行列から作業項目をフェッチすることを決定するものと想定する(ステップ501)。次に、スケジューラ42は制御ブロック58をチェックして、共用作業待ち行列80上に1つの作業項目または1つの作業項目グループが存在するかどうかを判定する(判断502)。上記のように、それぞれのスケジューラを呼び出すようにすべての「アイドル」仮想計算機に割込みが送信されることになり、すべてのスケジューラはそれぞれの半専用作業待ち行列または共用作業待ち行列のいずれかから作業項目をフェッチしようと試みることになる。しかし、共用メモリにアクセスするための第1のスケジューラは第1の作業項目を除去し(ステップ504)、したがって、他のスケジューラはこの作業項目を見つけられない。他の作業項目が使用可能である場合、他のスケジューラの1つはそれを除去することができる。その場合、その作業項目を受信した仮想計算機には「非アイドル」のマークが付けられ(ステップ503)、スケジューラ42はその作業項目を解析して、その性質と、仮想計算機12内でどの機能を呼び出してその作業項目を実行すべきかを決定する(ステップ506)。作業項目の完了後(ステップ508)、その作業項目を実行した機能がステップ500でスケジューラを呼び出す。
もう一度、判断502を参照すると、共用作業待ち行列上に作業項目がまったくない場合、スケジューラは、その仮想計算機がアイドル仮想計算機の「カウント」を増分してその仮想計算機について「アイドル」状態を示すように制御ブロックを更新する(ステップ512)。(この仮想計算機がすぐにアイドル状態になるので、この「カウント」はすでに増分されたことになる。)次に、仮想計算機は待ち/スリープ中または「休止」状態になる(ステップ514)。その後、仮想計算機は割込みを受信して、その半専用作業待ち行列または共用作業待ち行列上に作業項目が存在することを仮想計算機に警告するものと想定する(判断516)。応答として、仮想計算機のWQAFはアイドル仮想計算機のカウントを減分する(ステップ517)。次に、仮想計算機はステップ500でそのスケジューラをもう一度呼び出して、ステップ501、502、504、506、508を実行する。
図7は、コンピュータ・システム10の共用メモリ25内で全体が90で示される同期データ構造を象徴的に示している。図示の例では、仮想計算機14はロック91を保持し、仮想計算機12は仮想計算機14からのロックを待っているプレース・ホルダ92を有し、仮想計算機16は仮想計算機12からのロックを待っているプレース・ホルダ93を有している。これは、実際には制御ブロック58内に記録され、仮想計算機14がロックを保持し、仮想計算機12および16が現在、ロックを待っていることを示す。制御ブロック58の「ウェイタ(waiter)・リスト」95はウェイタの順序を示し、すなわち、仮想計算機12は最初にロックを得る立場にあり、仮想計算機16は仮想計算機12がロックを入手した後でロックを入手しようと試みることになる。この例では、仮想計算機14は排他的にロック91を保持し、すなわち、他のいかなる仮想計算機もこのロックを同時に保持することができない。仮想計算機12および16は、ロックを待っており、共用するロックを保持する意志があり、すなわち、これらの仮想計算機は互いに同時にそのロックを保持することができる。
図8は、共用メモリ内の共用作業待ち行列80に関するロックを入手しようと試みている各仮想計算機の同期機能および関連操作を示している。以下の例では、仮想計算機(仮想計算機14など)は共用作業待ち行列80に関するロックを要求する(ステップ700)。仮想計算機が共用作業待ち行列を読み取りたいと希望する場合、仮想計算機は共用ロックのみを要求する必要がある。しかし、仮想計算機が共用作業待ち行列から作業項目を除去したいと希望する場合(より一般的なケースである)、仮想計算機は排他ロックを要求することになる。通常、仮想計算機は作業待ち行列から作業項目を除去したいと希望することになり、したがって、この目的のために排他ロックを要求することになり、判断702は判断704に至る。判断704では、同期機能は、要求したロックが現在、(共用方式または排他方式のいずれかで)他の仮想計算機によって保持されているかどうかを判定する。保持されている場合、排他ロックは現行リクエスタにとって使用不能であり、同期機能は、要求側仮想計算機がアイドル状態であり、排他ロックを「待っている」ことを示すように制御ブロックを更新する(ステップ706)。また、仮想計算機は待ち/休止状態に入り(ステップ708)、そこで割込みを待つ(判断710)。もう一度、判断704を参照すると、要求したロックが現在、何かに保持されていない場合、同期機能は「非アイドル」としてその仮想計算機にマークを付け(ステップ712)、その仮想計算機にロックを授与する(ステップ714)。このロックの授与は、制御ブロック58に対して対応する更新を行うことによって実施される。次に、仮想計算機は、共用作業待ち行列80から次の作業項目を除去し、その作業項目が示すタスクを実行する(ステップ716)。その後、仮想計算機は、それがその作業項目を実行したことを同期機能に通知し、ロックを「解除」する(ステップ718)。応答として、同期機能は、ロックが解除されたことを示すように制御ブロック58を更新する。また、同期機能は、他のいずれかの仮想計算機が現在、ロックを待っているかどうかを制御ブロック58から判定する(判断720)。待っていない場合、同期機能の処理が完了する(ステップ722)。待っている場合、同期機能は、「待ち」のマークが付けられた第1の仮想計算機が「アイドル」状態であるかどうかを制御ブロック58から判定する(判断724)。アイドル状態ではない場合、非アイドル状態で待っている仮想計算機に対しこの時点で割込みを行うことは破壊的すぎると思われるので、同期機能の処理が完了する(ステップ722)。むしろ、非アイドル状態で待っている仮想計算機がその現行作業項目を完了したときまたは待っている仮想計算機にとって都合の良い他の時点で、おそらくステップ700でそれ自体に関するロックを要求することになる。もう一度、判断724を参照すると、待っている仮想計算機がアイドル状態である場合、同期機能は、待っている仮想計算機に対する割込みを発行する(ステップ728)。それはとにかくアイドル状態であるので、これは待っている仮想計算機にとって無駄なことにならないだろう。割込みの受信後、アイドル仮想計算機は覚醒することになり、ステップ700でロックを要求することができる。
もう一度、判断702に戻って参照すると、仮想計算機が要求したロックが、共用作業待ち行列の読取りなど、共用であって排他ではない場合、同期機能は、ロックが現在、排他方式で保持されているかどうかを判定する(判断740)。保持されていない場合(すなわち、いかなるロックも現在、保持されていないかまたは共用ロックのみが現在、保持されている場合)、同期機能は、ステップ712に移行し、前述のように続行する。しかし、ロックが現在、排他方式で保持されている場合、同期機能は、要求側仮想計算機が「アイドル」状態であって共用ロックを「待っている」というマークを制御ブロック58内に付ける(ステップ742)。次に、要求側仮想計算機は待ち/休止状態に入り(ステップ744)、割込みを待つ(判断748)。このような割込みを受信すると、それはステップ700に移行してロックを要求することができる。
上記に基づいて、本発明を実施するコンピュータ・システムについて説明してきた。しかし、本発明の範囲を逸脱せずに多数の修正および代用を行うことができる。たとえば、仮想計算機の代わりにロジカル・パーティションを使用することができるだろう。したがって、本発明は、限定としてではなく例証として開示したものであり、本発明の範囲を決定するためには特許請求の範囲を参照しなければならない。
まとめとして、本発明の構成に関して以下の事項を開示する。
(1)メモリ内の第1の作業待ち行列と、
メモリ内の第2の作業待ち行列と、
第1の作業項目を前記第1の作業待ち行列に割り当て、第2の作業項目を前記第2の作業待ち行列に割り当てるための第1のプログラム機能を含み、第1の仮想計算機による実行のために前記第1の作業待ち行列からの作業項目をスケジューリングするための第2のプログラム機能を含む第1の仮想計算機であって、前記第1および第2の作業項目が前記第1の仮想計算機から発生し、前記第1および第2の作業待ち行列が前記第1のプログラム機能によって直接アクセス可能であり、前記第1の作業待ち行列が前記第2のプログラム機能によって直接アクセス可能である第1の仮想計算機と、
第3の作業項目を前記第1の作業待ち行列に割り当て、第4の作業項目を前記第2の作業待ち行列に割り当てるための第3のプログラム機能を含み、第2の仮想計算機による実行のために前記第2の作業待ち行列からの作業項目をスケジューリングするための第4のプログラム機能を含む第2の仮想計算機であって、前記第3および第4の作業項目が前記第2の仮想計算機から発生し、前記第1および第2の作業待ち行列が前記第3のプログラム機能によって直接アクセス可能であり、前記第2の作業待ち行列が前記第4のプログラム機能によって直接アクセス可能である第2の仮想計算機とを有し、
前記メモリが前記第1および第2の仮想計算機によって共用される、仮想計算機オペレーティング・システム。
(2)前記第2のプログラム機能が前記第2の作業待ち行列からの作業項目をスケジューリングすることができず、前記第4のプログラム機能が前記第1の作業待ち行列からの作業項目をスケジューリングすることができない、上記(1)に記載の仮想計算機オペレーティング・システム。
(3)前記第2の仮想計算機が前記第1および第2のプログラム機能にアクセスできないように前記第1および第2のプログラム機能が前記第1の仮想計算機にとって専用のものであり、前記第1の仮想計算機が前記第2および第3のプログラム機能にアクセスできないように前記第3および第4のプログラム機能が前記第2の仮想計算機にとって専用のものである、上記(1)に記載の仮想計算機オペレーティング・システム。
(4)前記共用メモリ内の第3の作業待ち行列をさらに有し、前記第1のプログラム機能が前記第1の仮想計算機から発生した第5の作業項目を前記第3の作業待ち行列に割り当て、前記第3のプログラム機能が前記第2の仮想計算機から発生する第6の作業項目を前記第3の作業待ち行列に割り当て、前記第2のプログラム機能が前記第3の作業待ち行列に直接アクセスし、前記第1の仮想計算機または第2の仮想計算機のいずれかから発生する作業項目を前記第3の作業待ち行列からスケジューリングすることができ、前記第4のプログラム機能が前記第3の作業待ち行列に直接アクセスし、前記第1の仮想計算機または第2の仮想計算機のいずれかから発生する作業項目を前記第3の作業待ち行列からスケジューリングすることができる、上記(1)に記載の仮想計算機オペレーティング・システム。
(5)前記共用メモリ内のロック・データ構造と、
前記第1の仮想計算機内の第5の機能であって、前記第1の仮想計算機が、(a)前記第1の仮想計算機がロックを所有することを示すために前記ロックを入手したとき、(b)前記第1の仮想計算機が前記ロックを所有しないことを示すために前記ロックを解除したとき、および(c)前記第1の仮想計算機がロックを待っていることを示すために前記ロックを待っているときに、前記ロック・データ構造を更新する第5の機能と、
前記第2の仮想計算機内の第6の機能であって、前記第2の仮想計算機が、(a)前記第2の仮想計算機がロックを所有することを示すために前記ロックを入手したとき、(b)前記第2の仮想計算機が前記ロックを所有しないことを示すために前記ロックを解除したとき、および(c)前記第2の仮想計算機がロックを待っていることを示すために前記ロックを待っているときに、前記ロック・データ構造を更新する第6の機能とをさらに有する、上記(4)に記載の仮想計算機オペレーティング・システム。
(6)仮想計算機オペレーティング・システム内で作業項目をディスパッチするための方法において、前記仮想計算機オペレーティング・システムが第1および第2の仮想計算機を定義し、前記方法が、
メモリ内の第1の作業待ち行列を作成するステップと、
メモリ内の第2の作業待ち行列を作成するステップと、
前記第1の仮想計算機が第1の作業項目を前記第1の作業待ち行列に割り当て、第2の作業項目を前記第2の作業待ち行列に割り当て、前記第1の仮想計算機による実行のために前記第1の作業待ち行列からの作業項目をスケジューリングするステップであって、前記第1および第2の作業項目が前記第1の仮想計算機から発生し、前記第1および第2の作業待ち行列が前記第1の仮想計算機によって直接アクセス可能であるステップと、
前記第2の仮想計算機が第3の作業項目を前記第1の作業待ち行列に割り当て、第4の作業項目を前記第2の作業待ち行列に割り当て、前記第2の仮想計算機による実行のために前記第2の作業待ち行列からの作業項目をスケジューリングするステップであって、前記第3および第4の作業項目が前記第2の仮想計算機から発生し、前記第1および第2の作業待ち行列が前記第2の仮想計算機によって直接アクセス可能であるステップとを有する方法。
(7)前記第1の仮想計算機が前記第2の作業待ち行列からの作業項目をスケジューリングすることができず、前記第2の仮想計算機が前記第1の作業待ち行列からの作業項目をスケジューリングすることができない、上記(6)に記載の方法。
(8)前記第1の仮想計算機によって実行される前記割当ておよびスケジューリング・ステップが、前記第1の仮想計算機にとって専用のそれぞれの第1の割当て機能と第1のスケジューリング機能によって実行され、前記第2の仮想計算機が前記第1の割当て機能または前記第1のスケジューリング機能にアクセスできず、前記第2の仮想計算機によって実行される前記割当ておよびスケジューリング・ステップが、前記第2の仮想計算機にとって専用のそれぞれの第2の割当て機能と第2のスケジューリング機能によって実行され、前記第1の仮想計算機が前記第2の割当て機能または前記第2のスケジューリング機能にアクセスできない、上記(6)に記載の方法。
(9)前記メモリ内の第3の作業待ち行列を作成するステップと、
前記第1の仮想計算機が前記第1の仮想計算機から発生した第5の作業項目を前記第3の作業待ち行列に割り当てるステップと、
前記第2の仮想計算機が前記第2の仮想計算機から発生する第6の作業項目を前記第3の作業待ち行列に割り当てるステップと、
前記第1の仮想計算機が前記第1の仮想計算機または第2の仮想計算機のいずれかから発生する作業項目を前記第3の作業待ち行列からスケジューリングするステップと、
前記第2の仮想計算機が前記第1の仮想計算機または第2の仮想計算機のいずれかから発生する作業項目を前記第3の作業待ち行列からスケジューリングするステップとをさらに有する、上記(6)に記載の方法。
(10)前記メモリ内のロック・データ構造を作成するステップと、
前記第1の仮想計算機が、(a)前記第1の仮想計算機がロックを所有することを示すために前記ロックを入手したとき、(b)前記第1の仮想計算機が前記ロックを所有しないことを示すために前記ロックを解除したとき、および(c)前記第1の仮想計算機がロックを待っていることを示すために前記ロックを待っているときに、前記第1の仮想計算機が前記ロック・データ構造を更新するステップと、
前記第2の仮想計算機が、(a)前記第2の仮想計算機がロックを所有することを示すために前記ロックを入手したとき、(b)前記第2の仮想計算機が前記ロックを所有しないことを示すために前記ロックを解除したとき、および(c)前記第2の仮想計算機がロックを待っていることを示すために前記ロックを待っているときに、前記第2の仮想計算機が前記ロック・データ構造を更新するステップとをさらに有する、上記(9)に記載の方法。
(11)仮想計算機オペレーティング・システム内で作業項目をディスパッチするためのコンピュータ・プログラム記録媒体において、前記仮想計算機オペレーティング・システムが第1および第2の仮想計算機を定義し、前記コンピュータ・プログラム記録媒体が、
コンピュータ可読媒体と、
第1の作業項目をメモリ内の第1の作業待ち行列に割り当て、第2の作業項目を前記メモリ内の第2の作業待ち行列に割り当てるために前記第1の仮想計算機内で実行される第1のプログラム命令であって、前記第1および第2の作業項目が前記第1の仮想計算機から発生し、前記第1および第2の作業待ち行列が前記第1のプログラム命令によって直接アクセス可能である第1のプログラム命令と、
前記第1の仮想計算機による実行のために前記第1の作業待ち行列からの作業項目をスケジューリングするための第2のプログラム命令であって、前記第1の作業待ち行列が前記第2のプログラム命令によって直接アクセス可能である第2のプログラム命令と、
第3の作業項目を前記第1の作業待ち行列に割り当て、第4の作業項目を前記メモリ内の第2の作業待ち行列に割り当てるために前記第2の仮想計算機内で実行される第3のプログラム命令であって、前記第3および第4の作業項目が前記第2の仮想計算機から発生し、前記第1および第2の作業待ち行列が前記第3のプログラム命令によって直接アクセス可能である第3のプログラム命令と、
前記第2の仮想計算機による実行のために前記第2の作業待ち行列からの作業項目をスケジューリングするための第4のプログラム命令であって、前記第2の作業待ち行列が前記第4のプログラム命令によって直接アクセス可能である第4のプログラム命令とを有し、
前記第1、第2、第3、および第4のプログラム命令が前記媒体上に記録される、コンピュータ・プログラム記録媒体。
(12)前記第2のプログラム命令が前記第2の作業待ち行列からの作業項目をスケジューリングすることができず、前記第4のプログラム命令が前記第1の作業待ち行列からの作業項目をスケジューリングすることができない、上記(11)に記載のコンピュータ・プログラム記録媒体。
(13)第1および第2の仮想計算機を定義する仮想計算機オペレーティング・システムにおいて、前記仮想計算機オペレーティング・システムが、
メモリ内の作業待ち行列を有し、
前記第1の仮想計算機が、第1の作業項目を前記作業待ち行列に割り当てるための第1のプログラム機能を含み、前記第1の仮想計算機による実行のために前記第1および第2の仮想計算機から発生する作業項目を前記作業待ち行列からスケジューリングするための第2のプログラム機能を含み、前記第1の作業項目が前記第1の仮想計算機から発生し、前記作業待ち行列が前記第1および第2のプログラム機能によって直接アクセス可能であり、
前記第2の仮想計算機が、第2の作業項目を前記作業待ち行列に割り当てるための第3のプログラム機能を含み、前記第2の仮想計算機による実行のために前記第1および第2の仮想計算機から発生する作業項目を前記作業待ち行列からスケジューリングするための第4のプログラム機能を含み、前記第2の作業項目が前記第2の仮想計算機から発生し、前記作業待ち行列が前記第3および第4のプログラム機能によって直接アクセス可能であり、
前記メモリが前記第1および第2の仮想計算機によって共用される、仮想計算機オペレーティング・システム。
(14)前記第2の仮想計算機が前記第1および第2のプログラム機能にアクセスできないように前記第1および第2のプログラム機能が前記第1の仮想計算機にとって専用のものであり、前記第1の仮想計算機が前記第3および第4のプログラム機能にアクセスできないように前記第3および第4のプログラム機能が前記第2の仮想計算機にとって専用のものである、上記(13)に記載の仮想計算機オペレーティング・システム。
(15)前記メモリ内のロック・データ構造と、
前記第1の仮想計算機内の第5の機能であって、前記第1の仮想計算機が、(a)前記第1の仮想計算機がロックを所有することを示すために前記ロックを入手したとき、(b)前記第1の仮想計算機が前記ロックを所有しないことを示すために前記ロックを解除したとき、および(c)前記第1の仮想計算機がロックを待っていることを示すために前記ロックを待っているときに、前記ロック・データ構造を更新する第5の機能と、
前記第2の仮想計算機内の第6の機能であって、前記第2の仮想計算機が、(a)前記第2の仮想計算機がロックを所有することを示すために前記ロックを入手したとき、(b)前記第2の仮想計算機が前記ロックを所有しないことを示すために前記ロックを解除したとき、および(c)前記第2の仮想計算機がロックを待っていることを示すために前記ロックを待っているときに、前記ロック・データ構造を更新する第6の機能とをさらに有する、上記(13)に記載の仮想計算機オペレーティング・システム。
本発明による複数の仮想計算機を備えたコンピュータ・システムのブロック図である。 図1のコンピュータ・システム内の仮想計算機の作業待ち行列割当て機能および関連操作を示す流れ図である。 図1のコンピュータ・システム内の仮想計算機の作業ディスパッチ機能および関連操作を示す流れ図である。 図1のコンピュータ・システムの追加の共用作業待ち行列機構のブロック図である。 図4の共用作業待ち行列に関する仮想計算機の作業待ち行列割当て機能および関連操作を示す流れ図である。 図4の共用作業待ち行列に関する仮想計算機の作業ディスパッチ機能および関連操作を示す流れ図である。 複数の仮想計算機をまとめて同期させることができるようにする同期機能のブロック図である。 図7の同期機能に関する仮想計算機の同期機能および関連操作を示す流れ図である。
符号の説明
10 コンピュータ・システム
11 仮想計算機オペレーティング・システム
12、14、16 仮想計算機
20 物理的コンピュータ
21 基本部分
22、24 仮想計算機Linux
23 CPU
25 共用メモリ
26 CMS仮想計算機
32、34、36 アプリケーション
42、44、46 スケジューラ
52、54、56 作業待ち行列
58 制御ブロック
62、64、66 WQAF
70、72、74、76 作業項目

Claims (15)

  1. メモリ内の第1の作業待ち行列と、
    メモリ内の第2の作業待ち行列と、
    第1の作業項目を前記第1の作業待ち行列に割り当て、第2の作業項目を前記第2の作業待ち行列に割り当てるための第1のプログラム機能を含み、第1の仮想計算機による実行のために前記第1の作業待ち行列からの作業項目をスケジューリングするための第2のプログラム機能を含む第1の仮想計算機であって、前記第1および第2の作業項目が前記第1の仮想計算機から発生し、前記第1および第2の作業待ち行列が前記第1のプログラム機能によって直接アクセス可能であり、前記第1の作業待ち行列が前記第2のプログラム機能によって直接アクセス可能である第1の仮想計算機と、
    第3の作業項目を前記第1の作業待ち行列に割り当て、第4の作業項目を前記第2の作業待ち行列に割り当てるための第3のプログラム機能を含み、第2の仮想計算機による実行のために前記第2の作業待ち行列からの作業項目をスケジューリングするための第4のプログラム機能を含む第2の仮想計算機であって、前記第3および第4の作業項目が前記第2の仮想計算機から発生し、前記第1および第2の作業待ち行列が前記第3のプログラム機能によって直接アクセス可能であり、前記第2の作業待ち行列が前記第4のプログラム機能によって直接アクセス可能である第2の仮想計算機とを有し、
    前記メモリが前記第1および第2の仮想計算機によって共用される、仮想計算機オペレーティング・システム。
  2. 前記第2のプログラム機能が前記第2の作業待ち行列からの作業項目をスケジューリングすることができず、前記第4のプログラム機能が前記第1の作業待ち行列からの作業項目をスケジューリングすることができない、請求項1に記載の仮想計算機オペレーティング・システム。
  3. 前記第2の仮想計算機が前記第1および第2のプログラム機能にアクセスできないように前記第1および第2のプログラム機能が前記第1の仮想計算機にとって専用のものであり、前記第1の仮想計算機が前記第3および第4のプログラム機能にアクセスできないように前記第3および第4のプログラム機能が前記第2の仮想計算機にとって専用のものである、請求項1に記載の仮想計算機オペレーティング・システム。
  4. 前記共用メモリ内の第3の作業待ち行列をさらに有し、前記第1のプログラム機能が前記第1の仮想計算機から発生した第5の作業項目を前記第3の作業待ち行列に割り当て、前記第3のプログラム機能が前記第2の仮想計算機から発生する第6の作業項目を前記第3の作業待ち行列に割り当て、前記第2のプログラム機能が前記第3の作業待ち行列に直接アクセスし、前記第1の仮想計算機または第2の仮想計算機のいずれかから発生する作業項目を前記第3の作業待ち行列からスケジューリングすることができ、前記第4のプログラム機能が前記第3の作業待ち行列に直接アクセスし、前記第1の仮想計算機または第2の仮想計算機のいずれかから発生する作業項目を前記第3の作業待ち行列からスケジューリングすることができる、請求項1に記載の仮想計算機オペレーティング・システム。
  5. 前記共用メモリ内のロック・データ構造と、
    前記第1の仮想計算機内の第5の機能であって、前記第1の仮想計算機が、(a)前記第1の仮想計算機がロックを所有することを示すために前記ロックを入手したとき、(b)前記第1の仮想計算機が前記ロックを所有しないことを示すために前記ロックを解除したとき、および(c)前記第1の仮想計算機がロックを待っていることを示すために前記ロックを待っているときに、前記ロック・データ構造を更新する第5の機能と、
    前記第2の仮想計算機内の第6の機能であって、前記第2の仮想計算機が、(a)前記第2の仮想計算機がロックを所有することを示すために前記ロックを入手したとき、(b)前記第2の仮想計算機が前記ロックを所有しないことを示すために前記ロックを解除したとき、および(c)前記第2の仮想計算機がロックを待っていることを示すために前記ロックを待っているときに、前記ロック・データ構造を更新する第6の機能とをさらに有する、請求項4に記載の仮想計算機オペレーティング・システム。
  6. 仮想計算機オペレーティング・システム内で作業項目をディスパッチするための方法において、前記仮想計算機オペレーティング・システムが第1および第2の仮想計算機を定義しており、
    メモリ内の第1の作業待ち行列を作成するステップと、
    メモリ内の第2の作業待ち行列を作成するステップと、
    前記第1の仮想計算機が第1の作業項目を前記第1の作業待ち行列に割り当て、第2の作業項目を前記第2の作業待ち行列に割り当て、前記第1の仮想計算機による実行のために前記第1の作業待ち行列からの作業項目をスケジューリングするステップであって、前記第1および第2の作業項目が前記第1の仮想計算機から発生し、前記第1および第2の作業待ち行列が前記第1の仮想計算機によって直接アクセス可能であるステップと、
    前記第2の仮想計算機が第3の作業項目を前記第1の作業待ち行列に割り当て、第4の作業項目を前記第2の作業待ち行列に割り当て、前記第2の仮想計算機による実行のために前記第2の作業待ち行列からの作業項目をスケジューリングするステップであって、前記第3および第4の作業項目が前記第2の仮想計算機から発生し、前記第1および第2の作業待ち行列が前記第2の仮想計算機によって直接アクセス可能であるステップとを有する方法。
  7. 前記第1の仮想計算機が前記第2の作業待ち行列からの作業項目をスケジューリングすることができず、前記第2の仮想計算機が前記第1の作業待ち行列からの作業項目をスケジューリングすることができない、請求項6に記載の方法。
  8. 前記第1の仮想計算機によって実行される前記割当ておよびスケジューリング・ステップが、前記第1の仮想計算機にとって専用のそれぞれの第1の割当て機能と第1のスケジューリング機能によって実行され、前記第2の仮想計算機が前記第1の割当て機能または前記第1のスケジューリング機能にアクセスできず、前記第2の仮想計算機によって実行される前記割当ておよびスケジューリング・ステップが、前記第2の仮想計算機にとって専用のそれぞれの第2の割当て機能と第2のスケジューリング機能によって実行され、前記第1の仮想計算機が前記第2の割当て機能または前記第2のスケジューリング機能にアクセスできない、請求項6に記載の方法。
  9. 前記メモリ内の第3の作業待ち行列を作成するステップと、
    前記第1の仮想計算機が前記第1の仮想計算機から発生した第5の作業項目を前記第3の作業待ち行列に割り当てるステップと、
    前記第2の仮想計算機が前記第2の仮想計算機から発生する第6の作業項目を前記第3の作業待ち行列に割り当てるステップと、
    前記第1の仮想計算機が前記第1の仮想計算機または第2の仮想計算機のいずれかから発生する作業項目を前記第3の作業待ち行列からスケジューリングするステップと、
    前記第2の仮想計算機が前記第1の仮想計算機または第2の仮想計算機のいずれかから発生する作業項目を前記第3の作業待ち行列からスケジューリングするステップとをさらに有する、請求項6に記載の方法。
  10. 前記メモリ内のロック・データ構造を作成するステップと、
    前記第1の仮想計算機が、(a)前記第1の仮想計算機がロックを所有することを示すために前記ロックを入手したとき、(b)前記第1の仮想計算機が前記ロックを所有しないことを示すために前記ロックを解除したとき、および(c)前記第1の仮想計算機がロックを待っていることを示すために前記ロックを待っているときに、前記第1の仮想計算機が前記ロック・データ構造を更新するステップと、
    前記第2の仮想計算機が、(a)前記第2の仮想計算機がロックを所有することを示すために前記ロックを入手したとき、(b)前記第2の仮想計算機が前記ロックを所有しないことを示すために前記ロックを解除したとき、および(c)前記第2の仮想計算機がロックを待っていることを示すために前記ロックを待っているときに、前記第2の仮想計算機が前記ロック・データ構造を更新するステップとをさらに有する、請求項9に記載の方法。
  11. 仮想計算機オペレーティング・システム内で作業項目をディスパッチするためのコンピュータ・プログラムが記録されたコンピュータ・プログラム記録媒体において、前記仮想計算機オペレーティング・システムが第1および第2の仮想計算機を定義しており、
    前記コンピュータ・プログラムは、
    第1の作業項目をメモリ内の第1の作業待ち行列に割り当て、第2の作業項目を前記メモリ内の第2の作業待ち行列に割り当てるために前記第1の仮想計算機内で実行される第1のプログラム命令であって、前記第1および第2の作業項目が前記第1の仮想計算機から発生し、前記第1および第2の作業待ち行列が前記第1のプログラム命令によって直接アクセス可能である第1のプログラム命令と、
    前記第1の仮想計算機による実行のために前記第1の作業待ち行列からの作業項目をスケジューリングするための第2のプログラム命令であって、前記第1の作業待ち行列が前記第2のプログラム命令によって直接アクセス可能である第2のプログラム命令と、
    第3の作業項目をメモリ内の前記第1の作業待ち行列に割り当て、第4の作業項目を前記メモリ内の第2の作業待ち行列に割り当てるために前記第2の仮想計算機内で実行される第3のプログラム命令であって、前記第3および第4の作業項目が前記第2の仮想計算機から発生し、前記第1および第2の作業待ち行列が前記第3のプログラム命令によって直接アクセス可能である第3のプログラム命令と、
    前記第2の仮想計算機による実行のために前記第2の作業待ち行列からの作業項目をスケジューリングするための第4のプログラム命令であって、前記第2の作業待ち行列が前記第4のプログラム命令によって直接アクセス可能である第4のプログラム命令とを有するコンピュータ・プログラム記録媒体。
  12. 前記第2のプログラム命令が前記第2の作業待ち行列からの作業項目をスケジューリングすることができず、前記第4のプログラム命令が前記第1の作業待ち行列からの作業項目をスケジューリングすることができない、請求項11に記載のコンピュータ・プログラム記録媒体。
  13. 第1および第2の仮想計算機を定義する仮想計算機オペレーティング・システムにおいて、
    メモリ内の作業待ち行列を有し、
    前記第1の仮想計算機が、第1の作業項目を前記作業待ち行列に割り当てるための第1のプログラム機能を含み、前記第1の仮想計算機による実行のために前記第1および第2の仮想計算機から発生する作業項目を前記作業待ち行列からスケジューリングするための第2のプログラム機能を含み、前記第1の作業項目が前記第1の仮想計算機から発生し、前記作業待ち行列が前記第1および第2のプログラム機能によって直接アクセス可能であり、
    前記第2の仮想計算機が、第2の作業項目を前記作業待ち行列に割り当てるための第3のプログラム機能を含み、前記第2の仮想計算機による実行のために前記第1および第2の仮想計算機から発生する作業項目を前記作業待ち行列からスケジューリングするための第4のプログラム機能を含み、前記第2の作業項目が前記第2の仮想計算機から発生し、前記作業待ち行列が前記第3および第4のプログラム機能によって直接アクセス可能であり、
    前記メモリが前記第1および第2の仮想計算機によって共用される、仮想計算機オペレーティング・システム。
  14. 前記第2の仮想計算機が前記第1および第2のプログラム機能にアクセスできないように前記第1および第2のプログラム機能が前記第1の仮想計算機にとって専用のものであり、前記第1の仮想計算機が前記第3および第4のプログラム機能にアクセスできないように前記第3および第4のプログラム機能が前記第2の仮想計算機にとって専用のものである、請求項13に記載の仮想計算機オペレーティング・システム。
  15. 前記メモリ内のロック・データ構造と、
    前記第1の仮想計算機内の第5の機能であって、前記第1の仮想計算機が、(a)前記第1の仮想計算機がロックを所有することを示すために前記ロックを入手したとき、(b)前記第1の仮想計算機が前記ロックを所有しないことを示すために前記ロックを解除したとき、および(c)前記第1の仮想計算機がロックを待っていることを示すために前記ロックを待っているときに、前記ロック・データ構造を更新する第5の機能と、
    前記第2の仮想計算機内の第6の機能であって、前記第2の仮想計算機が、(a)前記第2の仮想計算機がロックを所有することを示すために前記ロックを入手したとき、(b)前記第2の仮想計算機が前記ロックを所有しないことを示すために前記ロックを解除したとき、および(c)前記第2の仮想計算機がロックを待っていることを示すために前記ロックを待っているときに、前記ロック・データ構造を更新する第6の機能とをさらに有する、請求項13に記載の仮想計算機オペレーティング・システム。
JP2004111616A 2003-04-29 2004-04-05 仮想計算機環境におけるディスパッチ機能の管理 Expired - Fee Related JP3882931B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/425,469 US7251815B2 (en) 2003-04-29 2003-04-29 Multiple virtual machines sharing processor and work queue in memory having program/dispatch functions for assigning and accessing work items while the virtual machine was not idle

Publications (2)

Publication Number Publication Date
JP2004326755A JP2004326755A (ja) 2004-11-18
JP3882931B2 true JP3882931B2 (ja) 2007-02-21

Family

ID=33309696

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004111616A Expired - Fee Related JP3882931B2 (ja) 2003-04-29 2004-04-05 仮想計算機環境におけるディスパッチ機能の管理

Country Status (2)

Country Link
US (1) US7251815B2 (ja)
JP (1) JP3882931B2 (ja)

Families Citing this family (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4012517B2 (ja) 2003-04-29 2007-11-21 インターナショナル・ビジネス・マシーンズ・コーポレーション 仮想計算機環境におけるロックの管理
US7299468B2 (en) * 2003-04-29 2007-11-20 International Business Machines Corporation Management of virtual machines to utilize shared resources
US7934020B1 (en) * 2003-09-19 2011-04-26 Vmware, Inc. Managing network data transfers in a virtual computer system
US8094804B2 (en) * 2003-09-26 2012-01-10 Avaya Inc. Method and apparatus for assessing the status of work waiting for service
US7784060B2 (en) * 2003-11-06 2010-08-24 Intel Corporation Efficient virtual machine communication via virtual machine queues
US20050155011A1 (en) * 2004-01-12 2005-07-14 Stephan Heik Method and system for restricting access in a distributed job environment
US7725895B2 (en) * 2004-03-31 2010-05-25 Intel Corporation Processor control register virtualization to minimize virtual machine exits
US7392524B2 (en) * 2004-04-06 2008-06-24 International Business Machines Corporation Method, system, and storage medium for managing computer processing functions
US7657889B2 (en) * 2004-04-06 2010-02-02 International Business Machines Corporation Method, system, and storage medium for searching multiple queues for prioritized work elements
WO2006015181A2 (en) * 2004-07-30 2006-02-09 Mocana Corporation Hardware acceleration for large volumes of channels
US7797699B2 (en) * 2004-09-23 2010-09-14 Intel Corporation Method and apparatus for scheduling virtual machine access to shared resources
US8234141B1 (en) 2004-09-27 2012-07-31 Avaya Inc. Dynamic work assignment strategies based on multiple aspects of agent proficiency
US7593930B2 (en) * 2004-12-14 2009-09-22 Sap Ag Fast channel architecture
US8533717B2 (en) * 2004-12-14 2013-09-10 Sap Ag Fast platform independent inter-process communication
US20060143517A1 (en) * 2004-12-22 2006-06-29 Microsoft Corporation Replicated virtual machine
US20060143256A1 (en) 2004-12-28 2006-06-29 Galin Galchev Cache region concept
US8140678B2 (en) * 2004-12-28 2012-03-20 Sap Ag Failover protection from a failed worker node in a shared memory system
US7694065B2 (en) 2004-12-28 2010-04-06 Sap Ag Distributed cache architecture
US7672949B2 (en) * 2004-12-28 2010-03-02 Sap Ag Connection manager having a common dispatcher for heterogeneous software suites
US8204931B2 (en) 2004-12-28 2012-06-19 Sap Ag Session management within a multi-tiered enterprise network
US7933947B2 (en) * 2004-12-28 2011-04-26 Sap Ag Connection manager that supports failover protection
US7539821B2 (en) 2004-12-28 2009-05-26 Sap Ag First in first out eviction implementation
US7971001B2 (en) 2004-12-28 2011-06-28 Sap Ag Least recently used eviction implementation
CN100407697C (zh) * 2005-01-30 2008-07-30 华为技术有限公司 多模式cos队列的组织调度方法及其装置
US8166473B2 (en) * 2005-04-21 2012-04-24 Microsoft Corporation Method and system for a resource negotiation between virtual machines
US8589562B2 (en) 2005-04-29 2013-11-19 Sap Ag Flexible failover configuration
US7689660B2 (en) * 2005-06-09 2010-03-30 Sap Ag Application server architecture
US7966412B2 (en) 2005-07-19 2011-06-21 Sap Ag System and method for a pluggable protocol handler
US20080118065A1 (en) * 2005-07-29 2008-05-22 James Blaisdell Hardware acceleration for large volumes of channels
JP2007052673A (ja) * 2005-08-18 2007-03-01 Nec Corp ジョブ管理システム、ジョブ管理方法、及びジョブ管理プログラム
US7945677B2 (en) * 2005-09-06 2011-05-17 Sap Ag Connection manager capable of supporting both distributed computing sessions and non distributed computing sessions
US20070150586A1 (en) * 2005-12-28 2007-06-28 Frank Kilian Withdrawing requests in a shared memory system
US8707323B2 (en) 2005-12-30 2014-04-22 Sap Ag Load balancing algorithm for servicing client requests
JP4649341B2 (ja) * 2006-01-24 2011-03-09 株式会社日立製作所 計算機制御方法、情報処理システムおよび計算機制御プログラム
US8001540B2 (en) * 2006-08-08 2011-08-16 International Business Machines Corporation System, method and program product for control of sequencing of data processing by different programs
US7346909B1 (en) * 2006-08-28 2008-03-18 Intel Corporation Network-like communication and stack synchronization for different virtual machines on the same physical device
US8010965B2 (en) * 2006-08-31 2011-08-30 Intel Corporation Automatic task performance as scheduled using embedded secondary processor
US8250134B2 (en) * 2006-12-27 2012-08-21 International Business Machines Corporation Processing multiple requests by a statically identified user server prior to user server termination
US20080163204A1 (en) * 2006-12-29 2008-07-03 Dennis Morgan Method and apparatus for inventory and/or policy-based management of virtual machines on a computing device
US7979683B1 (en) * 2007-04-05 2011-07-12 Nvidia Corporation Multiple simultaneous context architecture
US8032689B2 (en) * 2007-12-18 2011-10-04 Hitachi Global Storage Technologies Netherlands, B.V. Techniques for data storage device virtualization
US8903983B2 (en) * 2008-02-29 2014-12-02 Dell Software Inc. Method, system and apparatus for managing, modeling, predicting, allocating and utilizing resources and bottlenecks in a computer network
US8935701B2 (en) * 2008-03-07 2015-01-13 Dell Software Inc. Unified management platform in a computer network
JP5125659B2 (ja) * 2008-03-24 2013-01-23 富士通株式会社 情報処理装置、情報処理方法及びコンピュータプログラム
US8650570B2 (en) * 2008-06-02 2014-02-11 Microsoft Corporation Method of assigning instructions in a process to a plurality of scheduler instances based on the instruction, in which each scheduler instance is allocated a set of negoitaited processor resources
US8156289B2 (en) * 2008-06-03 2012-04-10 Microsoft Corporation Hardware support for work queue management
JP5166318B2 (ja) * 2009-02-24 2013-03-21 株式会社東芝 情報を処理する装置、方法およびプログラム
US9405347B2 (en) 2009-02-26 2016-08-02 Microsoft Technology Licensing, Llc Power-saving operating system for virtual environment
CN101996089A (zh) * 2009-08-21 2011-03-30 联想(北京)有限公司 一种计算机及区域增量的处理方法
US8276147B2 (en) * 2009-10-16 2012-09-25 Microsoft Corporation Low synchronization means of scheduler finalization
US9372712B2 (en) * 2009-12-17 2016-06-21 International Business Machines Corporation Optimizing virtual storage size in a virtual computer system based on information related to virtual machines, user inputs and/or configuration parameters
CN102314377B (zh) * 2010-06-30 2014-08-06 国际商业机器公司 加速器及其实现支持虚拟机迁移的方法
US9075635B1 (en) * 2010-07-26 2015-07-07 Symantec Corporation Systems and methods for merging virtual layers
US8959249B1 (en) 2010-09-15 2015-02-17 Emc Corporation Cooperative cloud I/O scheduler
US8738972B1 (en) 2011-02-04 2014-05-27 Dell Software Inc. Systems and methods for real-time monitoring of virtualized environments
US8738868B2 (en) 2011-08-23 2014-05-27 Vmware, Inc. Cooperative memory resource management for virtualized computing devices
US9176780B2 (en) * 2011-08-23 2015-11-03 Vmware, Inc. Dynamically balancing memory resources between host and guest system based on relative amount of freeable memory and amount of memory allocated to hidden applications
US9495222B1 (en) 2011-08-26 2016-11-15 Dell Software Inc. Systems and methods for performance indexing
US8868810B2 (en) 2012-04-12 2014-10-21 International Business Machines Corporation Managing over-initiative thin interrupts
US8495598B2 (en) 2012-05-01 2013-07-23 Concurix Corporation Control flow graph operating system configuration
US8726255B2 (en) 2012-05-01 2014-05-13 Concurix Corporation Recompiling with generic to specific replacement
US9417935B2 (en) 2012-05-01 2016-08-16 Microsoft Technology Licensing, Llc Many-core process scheduling to maximize cache usage
US8595743B2 (en) 2012-05-01 2013-11-26 Concurix Corporation Network aware process scheduling
US8650538B2 (en) 2012-05-01 2014-02-11 Concurix Corporation Meta garbage collection for functional code
US9342326B2 (en) * 2012-06-19 2016-05-17 Microsoft Technology Licensing, Llc Allocating identified intermediary tasks for requesting virtual machines within a trust sphere on a processing goal
US9047196B2 (en) 2012-06-19 2015-06-02 Concurix Corporation Usage aware NUMA process scheduling
US8700838B2 (en) 2012-06-19 2014-04-15 Concurix Corporation Allocating heaps in NUMA systems
US8793669B2 (en) 2012-07-17 2014-07-29 Concurix Corporation Pattern extraction from executable code in message passing environments
US9575813B2 (en) 2012-07-17 2017-02-21 Microsoft Technology Licensing, Llc Pattern matching process scheduler with upstream optimization
US8707326B2 (en) 2012-07-17 2014-04-22 Concurix Corporation Pattern matching process scheduler in message passing environment
US9043788B2 (en) 2012-08-10 2015-05-26 Concurix Corporation Experiment manager for manycore systems
US8607018B2 (en) 2012-11-08 2013-12-10 Concurix Corporation Memory usage configuration based on observations
US8656134B2 (en) 2012-11-08 2014-02-18 Concurix Corporation Optimized memory configuration deployed on executing code
US8656135B2 (en) 2012-11-08 2014-02-18 Concurix Corporation Optimized memory configuration deployed prior to execution
US9535871B2 (en) 2012-11-27 2017-01-03 Red Hat Israel, Ltd. Dynamic routing through virtual appliances
US9454392B2 (en) * 2012-11-27 2016-09-27 Red Hat Israel, Ltd. Routing data packets between virtual machines using shared memory without copying the data packet
US9383939B2 (en) 2013-03-15 2016-07-05 International Business Machines Corporation Migrating and retrieving queued data in byte-addressable storage
US9665474B2 (en) 2013-03-15 2017-05-30 Microsoft Technology Licensing, Llc Relationships derived from trace data
US10204387B2 (en) 2013-05-08 2019-02-12 Nmetric, Llc Sequentially configuring manufacturing equipment to reduce reconfiguration times
CN104516773B (zh) * 2013-09-29 2018-04-20 国际商业机器公司 用于物理机的数据分配方法和数据分配装置
US10108445B2 (en) * 2014-09-22 2018-10-23 The Boeing Company Parallelization in virtual machine operation
US10387178B2 (en) * 2014-10-29 2019-08-20 Red Hat Israel, Ltd. Idle based latency reduction for coalesced interrupts
US9697029B2 (en) * 2014-10-30 2017-07-04 Red Hat Israel, Ltd. Guest idle based VM request completion processing
US9507626B1 (en) * 2015-07-20 2016-11-29 Red Had Israel, Ltd. Virtual device backend recovery
US10592280B2 (en) * 2016-11-23 2020-03-17 Amazon Technologies, Inc. Resource allocation and scheduling for batch jobs
US10437616B2 (en) * 2016-12-31 2019-10-08 Intel Corporation Method, apparatus, system for optimized work submission to an accelerator work queue
US11099880B2 (en) * 2017-02-22 2021-08-24 Intel Corporation Virtualization of process address space identifiers for scalable virtualization of input/output devices
JP6915336B2 (ja) * 2017-03-24 2021-08-04 富士フイルムビジネスイノベーション株式会社 情報処理システム及び仮想マシン

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4682284A (en) * 1984-12-06 1987-07-21 American Telephone & Telegraph Co., At&T Bell Lab. Queue administration method and apparatus
JPH02112055A (ja) 1988-10-21 1990-04-24 Fuji Electric Co Ltd マルチプロロセッサシステムのデータ転送方式
JPH05233562A (ja) 1992-02-21 1993-09-10 Toshiba Corp マルチプロセッサに於けるプロセス管理方式
JPH0619785A (ja) 1992-03-27 1994-01-28 Matsushita Electric Ind Co Ltd 分散共有仮想メモリーとその構成方法
JP3696901B2 (ja) 1994-07-19 2005-09-21 キヤノン株式会社 負荷分散方法
US5884077A (en) 1994-08-31 1999-03-16 Canon Kabushiki Kaisha Information processing system and method in which computer with high load borrows processor of computer with low load to execute process
JP3512910B2 (ja) 1995-07-06 2004-03-31 株式会社東芝 分散計算機システムにおける記憶空間管理方法、計算機及びデータ転送方法
JPH09319653A (ja) 1996-05-31 1997-12-12 Canon Inc 情報処理装置、情報処理システム及びその制御方法
US5761506A (en) * 1996-09-20 1998-06-02 Bay Networks, Inc. Method and apparatus for handling cache misses in a computer system
US6438663B1 (en) 1996-12-11 2002-08-20 Steeleye Technology, Inc. System and method for identifying shared virtual memory in a computer cluster
US6170045B1 (en) 1997-04-30 2001-01-02 International Business Machines Corporation Cross-system data piping using an external shared memory
FR2763714B1 (fr) 1997-05-26 1999-07-02 Bull Sa Compteurs de remplacement pour machine avec memoire a acces non uniforme
US6003066A (en) 1997-08-14 1999-12-14 International Business Machines Corporation System for distributing a plurality of threads associated with a process initiating by one data processing station among data processing stations
US6389482B1 (en) 1997-08-28 2002-05-14 International Business Machines Corp. Dynamic transitioning from a local pipe to a cross-system pipe
US6205528B1 (en) 1997-08-29 2001-03-20 International Business Machines Corporation User specifiable allocation of memory for processes in a multiprocessor computer having a non-uniform memory architecture
JPH11149387A (ja) 1997-11-17 1999-06-02 Hitachi Ltd 共有装置制御方法及びその実施装置
US6314501B1 (en) * 1998-07-23 2001-11-06 Unisys Corporation Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory
JP2000215071A (ja) 1999-01-21 2000-08-04 Hitachi Ltd 仮想計算機システム
AU5141200A (en) 1999-06-01 2000-12-18 Microsoft Corporation Single logical clipboard for multiple computers
US6938253B2 (en) * 2001-05-02 2005-08-30 Portalplayer, Inc. Multiprocessor communication system and method

Also Published As

Publication number Publication date
US7251815B2 (en) 2007-07-31
US20040221285A1 (en) 2004-11-04
JP2004326755A (ja) 2004-11-18

Similar Documents

Publication Publication Date Title
JP3882931B2 (ja) 仮想計算機環境におけるディスパッチ機能の管理
US7299468B2 (en) Management of virtual machines to utilize shared resources
JP4012517B2 (ja) 仮想計算機環境におけるロックの管理
JP4769484B2 (ja) 仮想計算機をマイグレーションするための方法およびシステム
US7328437B2 (en) Management of locks in a virtual machine environment
US8166482B2 (en) Scheduling method, scheduling apparatus and multiprocessor system
JP4569846B2 (ja) I/oノード制御方式及び方法
CA2522096C (en) Concurrent access of shared resources
JP3989911B2 (ja) グローバル割込み待ち行列の仮想化
US6519660B1 (en) Method, system and program products for determining I/O configuration entropy
US6834385B2 (en) System and method for utilizing dispatch queues in a multiprocessor data processing system
US8881161B1 (en) Operating system with hardware-enabled task manager for offloading CPU task scheduling
US8316365B2 (en) Computer system
EP0428006A2 (en) Multilevel locking system and method
EP0747832A2 (en) Customer information control system and method in a loosely coupled parallel processing environment
JPH0962635A (ja) 疎結合並列処理環境においてトランザクション直列化制御機能を有する顧客情報制御システム及び方法
US9088569B2 (en) Managing access to a shared resource using client access credentials
Hu et al. Real-time schedule algorithm with temporal and spatial isolation feature for mixed criticality system
JP2022079764A (ja) 同期制御システムおよび同期制御方法
JPH1078942A (ja) マルチプロセッサシステム
Joshi Operating Systems
JPH0883255A (ja) 情報処理装置及びその方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060525

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060606

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060807

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20060807

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20060807

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20061025

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20061107

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091124

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101124

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101124

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111124

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111124

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121124

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees