JP4620097B2 - Virtual computer system and schedule adjustment method in the same system - Google Patents

Virtual computer system and schedule adjustment method in the same system Download PDF

Info

Publication number
JP4620097B2
JP4620097B2 JP2007242929A JP2007242929A JP4620097B2 JP 4620097 B2 JP4620097 B2 JP 4620097B2 JP 2007242929 A JP2007242929 A JP 2007242929A JP 2007242929 A JP2007242929 A JP 2007242929A JP 4620097 B2 JP4620097 B2 JP 4620097B2
Authority
JP
Japan
Prior art keywords
guest
time
cpu
reception
communication
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
JP2007242929A
Other languages
Japanese (ja)
Other versions
JP2009075766A (en
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.)
Toshiba Corp
Toshiba Digital Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Solutions 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 Toshiba Corp, Toshiba Solutions Corp filed Critical Toshiba Corp
Priority to JP2007242929A priority Critical patent/JP4620097B2/en
Publication of JP2009075766A publication Critical patent/JP2009075766A/en
Application granted granted Critical
Publication of JP4620097B2 publication Critical patent/JP4620097B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、CPUを含む物理計算機上で動作する仮想計算機マネージャによって提供される仮想計算機実行環境で複数のゲストOSが時分割で実行される仮想計算機システムに係り、特に複数のゲストOSを時分割で実行させるためのスケジュール(つまりゲストOSをディスパッチするためのスケジュール)を調整するのに好適な仮想計算機システム及び同システムにおけるスケジュール調整方法に関する。   The present invention relates to a virtual machine system in which a plurality of guest OSs are executed in a time-sharing manner in a virtual machine execution environment provided by a virtual machine manager operating on a physical machine including a CPU, and in particular, a plurality of guest OSs are time-shared. The present invention relates to a virtual machine system suitable for adjusting a schedule for execution in the system (that is, a schedule for dispatching a guest OS) and a schedule adjustment method in the system.

近年、パーソナルコンピュータのような計算機システムにおいて、仮想計算機(Virtual Machine:VM)の技術を応用した研究や開発が行われているまた、仮想計算機システムを実現するための商用のアプリケーションプログラムが実際に広く利用されている。また、メインフレームにおいて古くからハードウェア(HW)で構成された仮想計算機支援機構を用いた仮想計算機システムも存在する。   In recent years, in computer systems such as personal computers, research and development using virtual machine (VM) technology has been carried out, and commercial application programs for realizing virtual computer systems are actually widely used. It's being used. There is also a virtual machine system that uses a virtual machine support mechanism configured with hardware (HW) for a long time in the mainframe.

一般に、パーソナルコンピュータのような計算機システム(物理計算機)は、CPU(実CPU)、各種の入出力(I/O)装置(実I/O装置)及びメモリ(実メモリ)を含むHW(実HW)で構成されている。この実HWで構成される物理計算機(物理環境)上でハイパバイザOS(オペレーティングシステム)である仮想計算機マネージャ(Virtual Machine Manager:VMM)が動作し、このVMMの提供する仮想計算機実行環境のもとで複数のゲストOSが動作をする。   In general, a computer system (physical computer) such as a personal computer includes a CPU (real CPU), various input / output (I / O) devices (real I / O devices), and a memory (real memory) HW (real HW). ). A virtual machine manager (VMM), which is a hypervisor OS (operating system), operates on a physical computer (physical environment) configured with this real HW, and is under the virtual computer execution environment provided by this VMM. Multiple guest OSes operate.

VMMは、実CPU、実I/O装置及び実メモリのような物理資源の管理を行い、それらを仮想化して仮想計算機(VM)を構築する。つまりVMMは、実CPU、実I/O装置及び実メモリのような物理資源(HW資源)を時間的、空間(領域)的に、仮想計算機のそれぞれ仮想CPU、仮想I/O装置及び仮想メモリとして割り当てることによって、当該仮想計算機を構築(生成)する。各ゲストOSは仮想計算機にロードされて、当該仮想計算機内の仮想CPUによって実行される。このようにVMMは、実CPU、実I/O装置及び実メモリのような物理資源を各ゲストOSに割り当てることによって、当該各ゲストOSが同時に動作できる環境を提供し、仮想計算機システムの管理を行う。   The VMM manages physical resources such as a real CPU, real I / O device, and real memory, and virtualizes them to construct a virtual machine (VM). In other words, the VMM has a physical resource (HW resource) such as a real CPU, a real I / O device, and a real memory in terms of time and space (area) in a virtual machine, a virtual CPU, a virtual I / O device, and a virtual memory. The virtual machine is constructed (generated) by assigning as Each guest OS is loaded into a virtual machine and executed by a virtual CPU in the virtual machine. As described above, the VMM allocates physical resources such as a real CPU, a real I / O device, and a real memory to each guest OS, thereby providing an environment in which each guest OS can operate simultaneously, and managing the virtual machine system. Do.

VMMは一般に、ゲストOSに対して、仮想ネットワークや独自仕様のメッセージプロトコルのようなゲストOS同士が通信する手段(方法)を1種類以上提供する。通常、ゲストOS間通信では、受信の際に特定の処理を必要とする。例えば、受信パケットがあれば解析処理を行うとか、送信側に対してアクナレッジ(Acknowledge)を返す等の処理である。   The VMM generally provides one or more means (methods) for the guest OS to communicate with each other, such as a virtual network or a proprietary message protocol. Usually, in the communication between guest OSes, specific processing is required at the time of reception. For example, if there is a received packet, an analysis process is performed, or an acknowledge is returned to the transmission side.

受信の通知は割り込みによって行われることが多い。一般の仮想計算機システムでは、あるゲストOSが割り込み状態にあるときに、そのゲストOSにCPU実行時間が割り当てられる。但し、一般に割り込み処理時間が長時間にわたることは好ましくないため、実際には割り込み処理においては上記の処理のうち必要最小限のみを行って、残りの大部分は割り込み解除後に行われることが多い。   Notification of reception is often performed by interruption. In a general virtual machine system, when a certain guest OS is in an interrupt state, a CPU execution time is assigned to the guest OS. However, since it is generally not preferable that the interrupt processing time is long, in practice, in the interrupt processing, only the necessary minimum of the above processing is performed, and most of the rest is often performed after the interrupt is released.

このように、受信後の処理は割り込み解除後に行われるのが一般的であるが、受信割り込み直後に実行されることが期待されている。但し、複数のゲストOSの存在する仮想計算機実行環境では、割り込み解除したために受信者以外のゲストOSにディスパッチされる可能性がある。   As described above, the processing after reception is generally performed after canceling the interrupt, but it is expected to be executed immediately after the reception interrupt. However, in a virtual machine execution environment in which a plurality of guest OSs exist, there is a possibility that dispatching to a guest OS other than the recipient is made because the interrupt is canceled.

これらのディスパッチを伴う、複数のゲストOSを時分割で実行させるためのスケジュール(ゲストOSスケジュール)の調整に用いられる方法は、例えば非特許文献1乃至3に記載されている。非特許文献1には仮想計算機のCPUのディスパッチに関する説明が記載されている。ここには、CPU割り当て単位としての「タイム・スライス量子(Time Slice Quantum)」が記載されている。非特許文献2及び3には、パーソナルコンピュータでのオープンソースで開発されている仮想化ソフトウェア「Xen」のディスパッチャ及びスケジューリングに関する内容が記載されている。ここには、「sefdスケジューラ」と呼ばれているデッドラインベースのスケジューラポリシに関して記載されている。
岡崎世雄・全先実著,「OSシリーズ11 VM」,共立出版株式会社,1989年8月,p.97−100 高橋浩和,「仮想マシンモニター Xen3.0解読室 第3回 ドメインのスケジューリング(1)」,オープンソースマガジン,2006年6月号,ソフトバンククリエイティブ株式会社,第161−170ページ 高橋浩和,「仮想マシンモニター Xen3.0解読室 第4回 ドメインのスケジューリング(2)」,オープンソースマガジン,2006年7月号,ソフトバンククリエイティブ株式会社,第147−155ページ
Non-Patent Documents 1 to 3 describe, for example, methods used for adjusting a schedule (guest OS schedule) for executing a plurality of guest OSs in a time-sharing manner with the dispatch. Non-Patent Document 1 describes a description of CPU dispatch of a virtual machine. Here, “Time Slice Quantum” as a CPU allocation unit is described. Non-Patent Documents 2 and 3 describe the contents related to dispatcher and scheduling of virtualization software “Xen” that is developed in an open source on a personal computer. It describes a deadline-based scheduler policy called “sefd scheduler”.
Yoshio Okazaki, Minoru Minoru, “OS Series 11 VM”, Kyoritsu Publishing Co., Ltd., August 1989, p. 97-100 Hirokazu Takahashi, “Virtual Machine Monitor Xen3.0 Decoding Room 3rd Domain Scheduling (1)”, Open Source Magazine, June 2006, Softbank Creative Corporation, pages 161-170 Hirokazu Takahashi, “Virtual Machine Monitor Xen3.0 Decoding Room 4th Domain Scheduling (2)”, Open Source Magazine, July 2006, Softbank Creative Corp., pp. 147-155

上記したような仮想計算機システムでは、ゲストOSのディスパッチ方針が通信の効率に影響を与える。ここで、ゲストOS間の通信として、例えば以下に挙げるような2つの特徴的なモデルが考えられる。   In the virtual machine system as described above, the dispatch policy of the guest OS affects the communication efficiency. Here, as the communication between guest OSes, for example, the following two characteristic models can be considered.

(1)第1は、1対のゲストOSの間で定常的に一連の関連ある処理として交互に行われる通信(1対1の通信)である。このような通信(以下、第1のタイプの通信と称する)は、1対のゲストOSが協調して作業を行うような場合に発生する。   (1) The first is communication (one-to-one communication) that is alternately performed as a series of related processes regularly between a pair of guest OSs. Such communication (hereinafter referred to as first type communication) occurs when a pair of guest OSs work in cooperation.

(2)第2は、1つのゲストOSと他の複数のゲストOSとの間で頻繁に行われる通信(つまり複数のゲストOSの間で頻々に行われる通信)であり、個々の通信の間には関連性はない。このような通信(以下、第2のタイプの通信と称する)は、サーバ・クライアントモデルの通信を行うような場合に発生する。   (2) Second is communication frequently performed between one guest OS and a plurality of other guest OSs (that is, communication frequently performed between a plurality of guest OSs). There is no relationship between them. Such communication (hereinafter referred to as second type communication) occurs when server-client model communication is performed.

さて、仮想計算機システムにおいて、ゲストOSはVMMによってCPU時間を与えられた間のみディパッチして動作することができる。したがって、ゲストOS間の通信の性能(スループットまたはレスポンス)は、VMMによるゲストOSのディスパッチの方針に大きく依存する。   Now, in the virtual machine system, the guest OS can only operate while being dispatched the CPU time by the VMM. Therefore, the communication performance (throughput or response) between the guest OSs greatly depends on the dispatching policy of the guest OS by the VMM.

例えば、上記第1の通信では、一方のゲストOSに行うべき処理がある場合に他方のゲストOSにCPU時間が割り当てられると、結果として処理が進まずにスループットが低下する。一方、上記第2の通信では、個々の通信に対してゲストOSのディスパッチを実施すると、ディスパッチのコストが原因でシステムの効率を悪化させる可能性がある。   For example, in the first communication, if there is a process to be performed on one guest OS and the CPU time is allocated to the other guest OS, the throughput does not proceed as a result, and the throughput decreases. On the other hand, in the second communication, if the guest OS is dispatched for each communication, the efficiency of the system may be deteriorated due to the dispatch cost.

このように、ゲストOS間の通信とゲストOSのディスパッチは効率面において大きな関連がある。しかしながら、非特許文献1乃至3には、この点を考慮してゲストOSをディスパッチするためのスケジュール調整について記載されていない。   As described above, communication between guest OSs and dispatch of guest OSs have a great relationship in terms of efficiency. However, Non-Patent Documents 1 to 3 do not describe schedule adjustment for dispatching the guest OS in consideration of this point.

本発明は上記事情を考慮してなされたものでその目的は、ゲストOSをディスパッチするためのスケジュールを、受信側ゲストOSでの受信割り込みの解除後の受信処理が迅速に行えるように調整することができ、これによりゲストOS間通信が効率よく行える仮想計算機システム及び同システムにおけるスケジュール調整方法を提供することにある。   The present invention has been made in view of the above circumstances, and its purpose is to adjust the schedule for dispatching the guest OS so that the reception processing after the reception interrupt is canceled in the reception-side guest OS can be performed quickly. Accordingly, it is an object of the present invention to provide a virtual machine system capable of efficiently performing communication between guest OSes and a schedule adjustment method in the system.

本発明の1つの観点によれば、CPUを含む物理計算機上で動作する仮想計算機マネージャによって提供される仮想計算機実行環境で複数のゲストOSが時分割で実行される仮想計算機システムが提供される。この仮想計算機システムにおいて、前記仮想計算機マネージャは、前記複数のゲストOSのうちの任意のゲストOSへの割り込みを管理する割り込み管理手段であって、送信側ゲストOSから前記仮想計算機マネージャに与えられる受信側ゲストOSへのゲストOS間通信の要求を受けて、前記送信側ゲストOSからの送信データの前記受信側ゲストOSでの受信を受信割り込みにより通知する割り込み管理手段と、前記複数のゲストOSを時分割で実行させるためのスケジュールを管理するスケジューラであって、前記複数のゲストOSのうちの任意のゲストOSへの割り込みの要因が発生し、且つ当該要因が前記受信割り込みである場合に、当該任意のゲストOSを前記受信側ゲストOSとして、前記受信割り込みの解除後の受信処理に必要なCPU時間が当該受信側ゲストOSに追加で割り当てられるように前記スケジュールを調整するスケジューラと、前記スケジューラによって調整された前記スケジュールに従って前記複数のゲストOSをディスパッチするディスパッチャとを具備することを特徴とする。   According to one aspect of the present invention, a virtual machine system is provided in which a plurality of guest OSs are executed in a time-sharing manner in a virtual machine execution environment provided by a virtual machine manager operating on a physical machine including a CPU. In this virtual machine system, the virtual machine manager is an interrupt management means for managing an interrupt to an arbitrary guest OS among the plurality of guest OSs, and is a reception given to the virtual machine manager from a sending guest OS. An interrupt management unit that receives a request for communication between guest OSs from the sending guest OS to the receiving guest OS and notifies the receiving guest OS of reception of transmission data from the sending guest OS, and a plurality of guest OSs. A scheduler for managing a schedule for execution in a time-sharing manner, when an interrupt factor to an arbitrary guest OS among the plurality of guest OSs occurs and the factor is the reception interrupt, Arbitrary guest OS is used as the receiving guest OS for reception processing after the reception interrupt is canceled. A scheduler that adjusts the schedule so that a necessary CPU time is additionally allocated to the receiving guest OS, and a dispatcher that dispatches the plurality of guest OSs according to the schedule adjusted by the scheduler. And

本発明によれば、あるゲストOSへの割り込みの要因が受信割り込みによる通知を必要とするゲストOS間通信の受信である場合に、当該ゲストOS(つまり受信側ゲストOS)での受信割り込みの解除後の受信処理に必要なCPU時間が当該ゲストOSに追加で割り当てられるようにスケジュールが調整される。これにより受信側ゲストOSでは、追加で割り当てられるCPU時間を使用して受信処理を迅速に行うことができ、その結果としてゲストOS間の通信の効率が向上し、仮想計算機システム全体の処理効率を向上させることができる。   According to the present invention, when the cause of an interrupt to a guest OS is reception of inter-guest OS communication that requires notification by a reception interrupt, the reception interrupt is canceled in the guest OS (that is, the receiving guest OS). The schedule is adjusted so that the CPU time required for the subsequent reception process is additionally allocated to the guest OS. As a result, the receiving guest OS can perform the receiving process quickly using the CPU time allocated additionally, and as a result, the communication efficiency between the guest OSs is improved, and the processing efficiency of the entire virtual machine system is improved. Can be improved.

以下、本発明の実施の形態につき図面を参照して説明する。
図1は本発明の一実施形態に係る仮想計算機システム(VMシステム)の構成を示すブロック図である。図1に示す仮想計算機システムは、物理計算機1を用いて実現される。物理計算機(実計算機)1は、仮想計算機の実行環境を提供するハードウェア(HW)10を備えている。HW10は、CPU(実CPU)11、I/O(入出力)装置(実I/O装置)12及びメモリ(実メモリ)13を含む。
Embodiments of the present invention will be described below with reference to the drawings.
FIG. 1 is a block diagram showing a configuration of a virtual machine system (VM system) according to an embodiment of the present invention. The virtual machine system shown in FIG. 1 is realized using a physical machine 1. A physical computer (real computer) 1 includes hardware (HW) 10 that provides an execution environment of a virtual computer. The HW 10 includes a CPU (real CPU) 11, an I / O (input / output) device (real I / O device) 12, and a memory (real memory) 13.

物理計算機1のHW10上では、仮想計算機マネージャ(Virtual Machine Manager:VMM)20が動作する。VMM20は、仮想計算機システムの管理を行い、仮想計算機が動作する環境(仮想計算機実行環境)を構築する。更に具体的に述べるならば、VMM20は、物理計算機1のHW10を構成するCPU11、I/O12及びメモリ13のような物理資源(ハードウェアリソース)を制御すると共に当該物理資源の時間的、領域的な配分を管理することにより、複数の仮想計算機、例えば3台の仮想計算機(VM)30-1,30-2,30-3が動作する仮想計算機実行環境を提供する。VM30-1,30-2,30-3は何れも、VMM20が、物理計算機1のCPU11、I/O12及びメモリ13を、時間的、領域的に図示せぬ仮想CPU、仮想I/O及び(VM30-1,30-2,30-3の)メモリとして割り当てることにより構築される。   On the HW 10 of the physical computer 1, a virtual machine manager (VMM) 20 operates. The VMM 20 manages the virtual machine system and constructs an environment (virtual machine execution environment) in which the virtual machine operates. More specifically, the VMM 20 controls physical resources (hardware resources) such as the CPU 11, I / O 12, and memory 13 that constitute the HW 10 of the physical computer 1, and at the same time, area of the physical resources. By managing various distributions, a virtual machine execution environment in which a plurality of virtual machines, for example, three virtual machines (VM) 30-1, 30-2, 30-3 operate is provided. In each of the VMs 30-1, 30-2, and 30-3, the VMM 20 controls the CPU 11, the I / O 12 and the memory 13 of the physical computer 1 in a virtual CPU, virtual I / O (not shown) in terms of time and area. It is constructed by allocating as memory (VM 30-1, 30-2, 30-3).

VM30-1,30-2,30-3上では、それぞれゲストOS31-1(OS#1),31-2(OS#2),31-3(OS#3)が動作する。更に具体的に述べるならば、ゲストOS31-1〜31-3は、それぞれVM30-1〜30-3にロードされて、当該VM30-1〜30-3内の仮想CPUによって実行される。ゲストOS31-1〜31-3には、それぞれゲストOS番号1〜3が割り当てられている。   On the VMs 30-1, 30-2, and 30-3, guest OSs 31-1 (OS # 1), 31-2 (OS # 2), and 31-3 (OS # 3) operate. More specifically, the guest OSs 31-1 to 31-3 are loaded into the VMs 30-1 to 30-3, respectively, and are executed by the virtual CPUs in the VMs 30-1 to 30-3. Guest OS numbers 1 to 3 are assigned to the guest OSs 31-1 to 31-3, respectively.

VMM20は、ゲストOS間通信管理部21、ゲストOS実行管理部22、割り込み管理部23及びゲストOSコンテキスト管理部24を含む。
ゲストOS間通信管理部21は、ゲストOS31-1〜31-3間の通信を管理すると共にその通信のための機能(送信手続き及び受信手続き等の通信手段)を提供するモジュールである。本実施形態においてゲストOS間の通信手段は、送信元(送信側)のゲストOSからのデータパケットを送信先(受信側)のゲストOSの受信バッファにコピーすることによって情報の受け渡しを行うものであるとするが、これに限らない。例えば通信手段が、送信ゲストOSと受信側ゲストOSとで共有されるメモリ空間を介して情報の受け渡しを行うものであっても構わない。また、ゲストOS間の通信手段が複数存在する場合、ゲストOS間通信管理部21が通信手段の種類に応じて複数存在しても構わない。
The VMM 20 includes a guest OS communication management unit 21, a guest OS execution management unit 22, an interrupt management unit 23, and a guest OS context management unit 24.
The guest OS communication management unit 21 is a module that manages communication between the guest OSs 31-1 to 31-3 and provides functions for the communication (communication means such as a transmission procedure and a reception procedure). In this embodiment, the communication means between guest OSs exchanges data by copying data packets from the guest OS at the transmission source (transmission side) to the reception buffer of the guest OS at the transmission destination (reception side). If there is, it is not limited to this. For example, the communication means may exchange information via a memory space shared between the sending guest OS and the receiving guest OS. When there are a plurality of communication means between guest OSes, a plurality of guest OS communication management units 21 may exist according to the type of communication means.

ゲストOS間通信管理部21は、ゲストOSに対してゲストOS間の通信手段として、ゲストOS間通信インタフェース(ゲストOS間通信IF)を提供する。図1の例では、ゲストOS31-1,31-2に対し、ゲストOS間通信管理部21(VMM20内のゲストOS間通信管理部21)によってそれぞれゲストOS間通信IF210が提供されている状態が示されている。ゲストOS31-1,31-2は、それぞれゲストOS間通信IF210を使用して、他のゲストOSへのデータ送信、或いは他のゲストOSから受信したデータの取得を、VMM20に対して要求する。ここで、ゲストOS31-3に対してゲストOS間通信IF210が提供されるならば、当該ゲストOS31-3もゲストOS31-1,31-2と同様にデータ送信或いはデータ取得をVMM20に対して要求することができる。   The guest OS communication management unit 21 provides a guest OS with a guest OS communication interface (inter-guest OS communication IF) as a communication means between guest OSes. In the example of FIG. 1, the guest OS communication management unit 21 (the guest OS communication management unit 21 in the VMM 20) provides a guest OS communication IF 210 to the guest OSs 31-1 and 31-2, respectively. It is shown. Each of the guest OSs 31-1 and 31-2 uses the inter-guest OS communication IF 210 to request the VMM 20 to transmit data to another guest OS or acquire data received from another guest OS. Here, if the guest OS communication IF 210 is provided to the guest OS 31-3, the guest OS 31-3 also requests the VMM 20 to transmit or acquire data in the same manner as the guest OSs 31-1 and 31-2. can do.

ゲストOS間通信管理部21は、ゲストOS間通信監視部211を含む。ゲストOS間通信監視部211は、ゲストOS間通信管理部21によって送信側のゲストOS31-i(i=1,2,3)及び受信側のゲストOS31-j(j=1,2,3、但しj≠i)にそれぞれ提供されるゲストOS間通信IF210を用いてのゲストOS間通信の状況を監視する。ゲストOS間通信監視部211は、この監視の結果に基づき、受信側のゲストOS31-jにおける後述する受信処理に必要なCPU追加割当時間として用いられるCPU時間(CPU実行時間)を決定する。   The guest OS communication management unit 21 includes a guest OS communication monitoring unit 211. The guest OS communication monitoring unit 211 is configured so that the guest OS communication management unit 21 performs a guest OS 31-i (i = 1, 2, 3) on the transmission side and a guest OS 31-j (j = 1, 2, 3, However, the status of the inter-guest OS communication using the inter-guest OS communication IF 210 provided for j ≠ i) is monitored. Based on the monitoring result, the guest OS inter-communication monitoring unit 211 determines a CPU time (CPU execution time) used as a CPU additional allocation time necessary for a reception process described later in the guest OS 31-j on the receiving side.

ゲストOS実行管理部22はゲストOS31-1〜31-3の実行を管理する。ゲストOS実行管理部22は、ゲストOSスケジューラ221、CPU時間割当テーブル222及びディスパッチャ223を含む。   The guest OS execution management unit 22 manages the execution of the guest OSs 31-1 to 31-3. The guest OS execution management unit 22 includes a guest OS scheduler 221, a CPU time allocation table 222, and a dispatcher 223.

ゲストOSスケジューラ221は、各ゲストOS31-1〜31-3に対して、いつ、どれだけの期間CPU11を仮想CPUとして割り当てるか、つまり、どれだけのCPU時間(CPU実行時間)を割り当てるかを管理するモジュールである。   The guest OS scheduler 221 manages when and for how long the CPU 11 is assigned as a virtual CPU to each guest OS 31-1 to 31-3, that is, how much CPU time (CPU execution time) is assigned. It is a module to do.

CPU時間割当テーブル222は、各ゲストOS31-1〜31-3をディスパッチするためのスケジュール(の情報)を保持するデータテーブルである。更に具体的に述べるならば、CPU時間割当テーブル222は、CPU時間を各ゲストOS31-1〜31-3にいつの時点でどれだけ割り当てるかの予定(スケジュール)を表すデータテーブルである。CPU時間割当テーブル222によって表される(保持される)スケジュール(の情報)は動的に変更可能である。図1では、CPU時間割当テーブル222はVMM20のゲストOS実行管理部22に含まれているが、物理的には例えばメモリ13に格納して用いられる。   The CPU time allocation table 222 is a data table that holds a schedule (information) for dispatching the guest OSs 31-1 to 31-3. More specifically, the CPU time allocation table 222 is a data table that represents a schedule (schedule) of how much CPU time is allocated to each guest OS 31-1 to 31-3 at what time. The schedule (information) represented (held) by the CPU time allocation table 222 can be changed dynamically. In FIG. 1, the CPU time allocation table 222 is included in the guest OS execution management unit 22 of the VMM 20, but is physically used, for example, in the memory 13.

図2はCPU時間割当テーブル222の示すスケジュール例を示す。図2に示すスケジュールでは、現在から24ms先の時点までのCPU時間割り当て予定が設定されている。ここでは、24msが2ms毎に12分割されて、CPU時間が3個のゲストOS31-1〜31-3に2ms(のフレーム)単位でラウンドロビンで割り当てられる予定であることが示されている。12分割された各枠内の数字はゲストOS番号を表している。CPU時間割当テーブル222は、ゲストOSスケジューラ221によって更新される。ここではCPU時間割当テーブル222は、実際にゲストOSのコンテキストスイッチ(他のゲストOSへのディスパッチ)が発生したタイミングで更新される。   FIG. 2 shows a schedule example indicated by the CPU time allocation table 222. In the schedule shown in FIG. 2, the CPU time allocation schedule from the present to the time point of 24 ms ahead is set. Here, it is shown that 24 ms is divided into 12 every 2 ms, and the CPU time is scheduled to be allocated to the three guest OSs 31-1 to 31-3 in units of 2 ms (frames) in round robin. The numbers in each frame divided into 12 represent guest OS numbers. The CPU time allocation table 222 is updated by the guest OS scheduler 221. Here, the CPU time allocation table 222 is updated at the timing when the context switch (dispatch to another guest OS) of the guest OS actually occurs.

ディスパッチャ223は、現在CPU11を使って実行しているゲストOSをCPU時間割当テーブル221に基づいて他のゲストOSに切り替えるためのモジュールである。即ちディスパッチャ223は、CPU時間割当テーブル222の示すCPU時間割り当ての順番(図2の例では左端から右端に向かう順番)に従ってゲストOSのディスパッチを行う。なお、図2に示されるCPU時間割当テーブル222のようなフレーム単位のスケジュール表に基づくスケジューリングに代えて、プライオリティキューを使ったスケジューリングを適用することも可能である。   The dispatcher 223 is a module for switching the guest OS currently being executed using the CPU 11 to another guest OS based on the CPU time allocation table 221. That is, the dispatcher 223 dispatches guest OSs according to the CPU time allocation order (in the example of FIG. 2, the order from the left end to the right end) shown in the CPU time allocation table 222. Instead of scheduling based on a frame-by-frame schedule table such as the CPU time allocation table 222 shown in FIG. 2, scheduling using a priority queue can be applied.

割り込み管理部23は、ゲストOSへの割り込みを管理する。ゲストOSへの割り込みの1つに、受信割り込みがある。受信割り込みは、送信側ゲストOS31-iから受信側ゲストOS31-jへの通信(ゲストOS間通信)に伴う送信データの受信を当該ゲストOS31-jに通知するための割り込みである。   The interrupt management unit 23 manages an interrupt to the guest OS. One of the interrupts to the guest OS is a reception interrupt. The reception interrupt is an interrupt for notifying the guest OS 31-j of reception of transmission data associated with communication (inter-guest OS communication) from the transmission-side guest OS 31-i to the reception-side guest OS 31-j.

ゲストOSコンテキスト管理部24は、ゲストOS31-1〜31-3を実行する際に必要な情報の集合であるゲストOSコンテキスト241-1〜241-3を生成する。図1では、ゲストOSコンテキスト241-1〜241-3はVMM20のゲストOSコンテキスト管理部24に含まれているが、物理的には例えばメモリ13によって提供されるメモリ領域に格納して用いられる。   The guest OS context management unit 24 generates guest OS contexts 241-1 to 241-3 that are sets of information necessary for executing the guest OSs 31-1 to 31-3. In FIG. 1, the guest OS contexts 241-1 to 241-3 are included in the guest OS context management unit 24 of the VMM 20, but physically stored in a memory area provided by the memory 13, for example.

図3はゲストOSコンテキスト241-i(i=1,2,3)のデータ構造例を示す。ゲストOSコンテキスト241-iは、ゲストOS固有データ242、割り込み要因レジスタ243及びCPU追加割当時間情報244を含む。   FIG. 3 shows an example of the data structure of the guest OS context 241-i (i = 1, 2, 3). The guest OS context 241-i includes guest OS specific data 242, an interrupt factor register 243, and CPU additional allocation time information 244.

ゲストOS固有データ242は、ゲストOS切り替え時のCPUレジスタ状態を含む情報である。
割り込み要因レジスタ243は、ゲストOS31-iに割り込みが発生した場合に、その割り込みの要因を識別するためのビットの群から構成される割り込み要因保持管理手段である。割り込み要因レジスタ243はゲストOS通信受信ビットを含む。ゲストOS通信受信ビットは、ゲストOS31-iへの割り込みが、ゲストOS間通信による送信データの受信を当該ゲストOS31-iに通知するための割り込み、つまり受信割り込みであることを示す特定ビットである。このゲストOS通信受信ビットは、ゲストOS間通信による送信データがゲストOS31-iで受信された際(本実施形態では、ゲストOS31-iの受信バッファにコピーされた際)にONされる。割り込み要因レジスタ243は、例えば、物理計算機1のHW10に含まれている物理レジスタをゲストOS31-iが動作するVM30-iの実行環境(仮想計算機実行環境)にマップすることによって実現されるものとする。しかし、割り込み要因レジスタ243が、VMM20によって作成される仮想レジスタであっても構わない。
The guest OS specific data 242 is information including the CPU register state when the guest OS is switched.
The interrupt factor register 243 is an interrupt factor holding management unit configured by a group of bits for identifying the interrupt factor when an interrupt occurs in the guest OS 31-i. The interrupt factor register 243 includes a guest OS communication reception bit. The guest OS communication reception bit is a specific bit indicating that an interrupt to the guest OS 31-i is an interrupt for notifying the guest OS 31-i that transmission data is received by communication between guest OSs, that is, a reception interrupt. . This guest OS communication reception bit is turned ON when transmission data by communication between guest OSs is received by the guest OS 31-i (in this embodiment, copied to the reception buffer of the guest OS 31-i). The interrupt factor register 243 is realized, for example, by mapping a physical register included in the HW 10 of the physical computer 1 to an execution environment (virtual computer execution environment) of the VM 30-i in which the guest OS 31-i operates. To do. However, the interrupt factor register 243 may be a virtual register created by the VMM 20.

CPU追加割当時間情報244は、ゲストOS31-iが他のゲストOSからの通信を受信した場合に、当該ゲストOS31-iに追加で割り当てられるCPU時間(CPU追加割当時間)の値を表す変数である。CPU追加割当時間情報244には、ゲストOS間通信の受信側でのデータ受信に伴う処理(受信処理)に必要なCPU時間(CPU実行時間)を示す値が用いられる。本実施形態ではCPU追加割当時間情報244として、4msの値が設定されているものとする。但し、CPU追加割当時間情報244は、後述するCPU追加割当時間設定部240によって動的に変更される。CPU追加割当時間情報244はゲストOS31-iから参照される必要のない変数である。なお、ゲストOS間通信の手段が複数存在する場合、それぞれの手段に対応した変数(CPU追加割当時間情報244)が設定される構成であっても良い。   The CPU additional allocation time information 244 is a variable representing the value of the CPU time (CPU additional allocation time) additionally allocated to the guest OS 31-i when the guest OS 31-i receives communication from another guest OS. is there. For the CPU additional allocation time information 244, a value indicating a CPU time (CPU execution time) required for a process (reception process) associated with data reception on the reception side of the communication between guest OSs is used. In this embodiment, it is assumed that a value of 4 ms is set as the CPU additional allocation time information 244. However, the CPU additional allocation time information 244 is dynamically changed by a CPU additional allocation time setting unit 240 described later. The CPU additional allocation time information 244 is a variable that does not need to be referenced from the guest OS 31-i. In addition, when there are a plurality of means for communication between guest OSes, a variable (CPU additional allocation time information 244) corresponding to each means may be set.

再び図1を参照すると、ゲストOSコンテキスト管理部24はCPU追加割当時間設定部240を含む。CPU追加割当時間設定部240は、ゲストOS間通信管理部21内のゲストOS間通信監視部211によるゲストOS間通信の状況の監視結果に基づき、受信側のゲストOS31-j(j=1,2,3)における受信処理に必要なCPU時間(CPU実行時間)をCPU追加割当時間として決定する。CPU追加割当時間設定部240は、ゲストOSコンテキスト241-jに含まれているCPU追加割当時間情報244を、決定されたCPU追加割当時間の値に設定変更する。   Referring back to FIG. 1, the guest OS context management unit 24 includes a CPU additional allocation time setting unit 240. The CPU additional allocation time setting unit 240 receives the guest OS 31-j (j = 1, j) on the receiving side based on the monitoring result of the communication status between guest OSes by the guest OS communication monitoring unit 211 in the guest OS communication management unit 21. The CPU time (CPU execution time) required for the reception process in (2) and (3) is determined as the CPU additional allocation time. The CPU additional allocation time setting unit 240 changes the setting of the CPU additional allocation time information 244 included in the guest OS context 241-j to the determined CPU additional allocation time value.

このように、ゲストOS間通信の状況に応じて、受信側のゲストOS31-jにおける受信処理に必要なCPU時間がCPU追加割当時間として動的に設定される構成とすることにより、システム全体の処理が効率よく進められるようになる。   As described above, the CPU time required for the reception process in the guest OS 31-j on the receiving side is dynamically set as the CPU additional allocation time according to the state of the communication between the guest OSs. Processing can proceed efficiently.

なお、各ゲストOSコンテキスト241-jに含まれるCPU追加割当時間情報244を、ゲストOS31-j毎のCPU追加割当時間の設定値が保存された設定ファイルを用いて、例えばシステム起動時にCPU追加割当時間設定部240が設定する構成とすることも可能である。ここで、HW10に含まれているI/O12がハードディスクドライブのようなディスクドライブであるとする。この場合、上述の設定ファイルをユーザの操作により予め作成してディスクドライブ(I/O12)に格納しておき、システム起動時に、CPU追加割当時間設定部240が当該設定ファイルを当該ディスクドライブから読み込んで、当該設定ファイルに基づいて各ゲストOSコンテキスト241-jに含まれるCPU追加割当時間情報244を設定すれば良い。   Note that the CPU additional allocation time information 244 included in each guest OS context 241-j is obtained by using, for example, a CPU additional allocation at the time of system startup using a setting file in which the setting value of the CPU additional allocation time for each guest OS 31-j is stored. A configuration in which the time setting unit 240 sets is also possible. Here, it is assumed that the I / O 12 included in the HW 10 is a disk drive such as a hard disk drive. In this case, the above setting file is created in advance by a user operation and stored in the disk drive (I / O 12), and the CPU additional allocation time setting unit 240 reads the setting file from the disk drive when the system is started. Thus, the CPU additional allocation time information 244 included in each guest OS context 241-j may be set based on the setting file.

このように、ユーザの操作により予め作成された設定ファイルに基づき、各ゲストOSコンテキスト241-jに含まれるCPU追加割当時間情報244を設定する手法を適用しても、当該ユーザが各ゲストOS31-jの処理内容を熟知している場合は、各ゲストOS31-jに対して適切なCPU追加割当時間を設定することが可能となるため、システム全体の処理が効率よく進められる。   As described above, even if the method of setting the CPU additional allocation time information 244 included in each guest OS context 241-j is applied based on the setting file created in advance by the user's operation, the user can apply each guest OS 31- When the processing contents of j are well known, it is possible to set an appropriate CPU additional allocation time for each guest OS 31-j, so that the processing of the entire system can be efficiently performed.

また、CPU追加割当時間情報244として有効なCPU追加割当時間の値が与えられているか否かによって、ゲストOS31-jに対する受信割り込み発生に伴う割り込み処理の直後に当該ゲストOS31-jに対して追加のCPU時間(CPU追加割当時間)を付与するか否かを決定することも可能である。   Further, depending on whether or not a valid CPU additional allocation time value is given as the CPU additional allocation time information 244, it is added to the guest OS 31-j immediately after the interrupt processing associated with the reception interrupt generation for the guest OS 31-j. It is also possible to determine whether to give the CPU time (CPU additional allocation time).

次に、図1の仮想計算機システムにおける動作の概要について説明する。
まず、あるゲストOS31-jが他のゲストOS(送信側ゲストOS)31-iからのゲストOS間通信の送信データをVMM20を介して受け取ったものとする。このような場合、VMM20内の割り込み管理部23は、送信側ゲストOS31-iからの送信データの受信をゲストOS31-j(つまり受信側ゲストOS31-j)に通知するために当該受信側ゲストOS31-jへの割り込み(受信割り込み)を発生する。
Next, an outline of the operation in the virtual machine system of FIG. 1 will be described.
First, it is assumed that a certain guest OS 31-j has received transmission data for communication between guest OSes from another guest OS (transmission-side guest OS) 31-i via the VMM 20. In such a case, the interrupt management unit 23 in the VMM 20 notifies the guest OS 31-j (that is, the reception guest OS 31-j) that the transmission data is received from the transmission guest OS 31-i. -j Interrupt (receive interrupt) is generated.

多くの通信形態では、受信側ゲストOS31-jは、データ受信後に受信データ(例えばパケットデータ)の解析やアクナレッジ(ACK)の返信のような受信に伴う処理(受信処理)を行う必要がある。一般にゲストOSは仮想計算機実行環境でない通常の計算機環境で動作するものをベースにしている場合が多い。このようなゲストOSは、割り込み処理と受信処理とを別々に実装していることが多い。そのため従来技術では、受信側ゲストOS31-jによる受信処理の大部分は、データを受信した直後ではなくて、割り込み解除後に行われるのが一般的である。   In many communication forms, the reception-side guest OS 31-j needs to perform processing (reception processing) associated with reception such as analysis of received data (for example, packet data) and return of an acknowledgment (ACK) after data reception. . In general, guest OSs are often based on those operating in a normal computer environment that is not a virtual computer execution environment. Such a guest OS often implements interrupt processing and reception processing separately. Therefore, in the prior art, most of the reception processing by the reception-side guest OS 31-j is generally performed not after the reception of data but after the cancellation of the interrupt.

図4は、CPU時間割当テーブル222によって表されるゲストOS31-1〜32-3を対象とするスケジュール(CPU時間割り当てスケジュール)の問題を説明するための図である。図4において、時点t0は現在時点であり、時点t0から24ms先の時点tnまでの時間24msは、2ms毎に12分割されて管理される。図4の例では、時点t0から、CPU時間が3個のゲストOS31-1〜31-3に2ms単位でゲストOS31-2→ゲストOS31-3→ゲストOS31-1→ゲストOS31-2…のようにラウンドロビンで割り当てられることが予定されている。   FIG. 4 is a diagram for explaining the problem of the schedule (CPU time allocation schedule) for the guest OSs 31-1 to 32-3 represented by the CPU time allocation table 222. In FIG. 4, the time point t0 is the current time point, and the time 24 ms from the time point t0 to the time point tn 24 ms ahead is divided into 12 parts every 2 ms and managed. In the example of FIG. 4, from the time point t0, the guest OS 31-2 → guest OS 31-3 → guest OS 31-1 → guest OS 31-2, etc. in units of 2 ms from the time t0 to the three guest OSs 31-1 to 31-3. Is scheduled to be assigned in round robin.

さて、時点t0でゲストOS31-2にCPU11が割り当てられた結果、当該ゲストOS31-2の実行が開始されたものとする。そして、時点t0から例えば1msが経過した時点t1で、ゲストOS(送信側ゲストOS)31-2がゲストOS(受信側ゲストOS)31-1に対してVMM20を経由して通信を行ったものとする。   Assume that the execution of the guest OS 31-2 is started as a result of the CPU 11 being assigned to the guest OS 31-2 at time t0. For example, the guest OS (transmission-side guest OS) 31-2 communicated with the guest OS (reception-side guest OS) 31-1 via the VMM 20 at time t1 when, for example, 1 ms has elapsed from time t0. And

この場合VMM20の割り込み管理部23は、受信側ゲストOS31-1に固有のゲストOSコンテキスト241-1に含まれている割り込み要因レジスタ243のゲストOS間通信受信ビットをONにする。   In this case, the interrupt management unit 23 of the VMM 20 turns on the inter-guest OS communication reception bit of the interrupt factor register 243 included in the guest OS context 241-1 unique to the reception-side guest OS 31-1.

またVMM20のゲストOS実行管理部22に含まれているディスパッチャ223は、従来技術であれば、受信側ゲストOS31-1が割り込み状態であることを確認して当該ゲストOS31-1の割り込みハンドラ(図示せず)に一時的にディスパッチする。ゲストOS31-1の割り込みハンドラは、当該ゲストOS31-1に固有のゲストOSコンテキスト241-1に含まれている割り込み要因レジスタ243のゲストOS間通信受信ビットのON状態に基づき割り込み要因を確認し、当該受信ビットをOFFする割り込み処理を行う。そしてゲストOS31-1の割り込みハンドラは割り込み処理後、早い段階(実際の受信処理を行う前に)で割り込み解除をVMM20に通知する。   In the prior art, the dispatcher 223 included in the guest OS execution management unit 22 of the VMM 20 confirms that the receiving guest OS 31-1 is in an interrupt state and checks the interrupt handler (see FIG. Dispatch temporarily to (not shown). The interrupt handler of the guest OS 31-1 confirms the interrupt factor based on the ON state of the inter-guest OS communication reception bit of the interrupt factor register 243 included in the guest OS context 241-1 unique to the guest OS 31-1. Interrupt processing for turning off the reception bit is performed. Then, the interrupt handler of the guest OS 31-1 notifies the VMM 20 of the interrupt release at an early stage (before performing the actual reception process) after the interrupt process.

従来技術では、VMM20のディスパッチャ223はゲストOS31-1から割り込み解除の通知を受けた場合、当該ゲストOS31-1に一時的に割り当てていたCPU11をCPU時間割当テーブル222の示すスケジュールの通りにゲストOS31-2に返却する。これによりゲストOS31-2が再びディスパッチされる。ここで、ゲストOS31-1がゲストOS31-2からの送信データの受信処理に例えば4msの時間が必要であるものとする。この場合、従来技術でば、ゲストOS31-1が受信処理を終了するのは、当該ゲストOS31-1に2msのCPU時間が2回割り当てられて、その2回目のCPU時間が経過した時点t2である。この時点t2は、図4からも明らかなように、時点t0(つまりCPU時間割当テーブル222の示すスケジュールの開始時点)から10ms経過した時点である。   In the prior art, when the dispatcher 223 of the VMM 20 receives a notification of interrupt cancellation from the guest OS 31-1, the guest OS 31 is assigned the CPU 11 temporarily assigned to the guest OS 31-1 according to the schedule indicated by the CPU time allocation table 222. Return to -2. As a result, the guest OS 31-2 is dispatched again. Here, it is assumed that the guest OS 31-1 needs a time of, for example, 4 ms for receiving data transmitted from the guest OS 31-2. In this case, according to the conventional technique, the guest OS 31-1 finishes the reception process at the time t2 when the CPU time of 2 ms is allocated twice to the guest OS 31-1 and the second CPU time elapses. is there. As is apparent from FIG. 4, this time point t2 is the time point when 10 ms has elapsed from the time point t0 (that is, the start time point of the schedule indicated by the CPU time allocation table 222).

さて、送信側ゲストOS31-2が、受信側ゲストOS31-1に送信したデータに対する当該ゲストOS31-1の受信処理の後に当該ゲストOS31-1から返されるACKを待って、自身の処理を再開することがある。ところが従来技術では、受信側ゲストOS31-1の受信処理が終了するのは時点t0から10msが経過した時点t2である。時点t0から時点t2までの間に、送信側ゲストOS31-2にはCPU11が2ms単位で(つまり2msのCPU時間が)2度割り当てられる。   The sending guest OS 31-2 waits for an ACK returned from the guest OS 31-1 after the receiving process of the guest OS 31-1 for the data sent to the receiving guest OS 31-1, and resumes its own processing. Sometimes. However, in the prior art, the receiving process of the receiving guest OS 31-1 ends at time t2 when 10 ms elapses from time t0. Between the time point t0 and the time point t2, the CPU 11 is assigned twice to the transmission side guest OS 31-2 in units of 2ms (that is, CPU time of 2ms).

従来技術では、送信側ゲストOS31-2に2度割り当てられるCPU時間内に、受信側ゲストOS31-1からACKが返されない。このため送信側ゲストOS31-2は、2度割り当てられるCPU時間において処理を再開できず、CPU時間の無駄が生じる。このことから本発明者は、ゲストOS間通信が行われる場合に、受信側ゲストOSでの受信処理は迅速に行われた方が有利であることを認識するに至った。   In the prior art, ACK is not returned from the receiving guest OS 31-1 within the CPU time allocated twice to the sending guest OS 31-2. For this reason, the transmission side guest OS 31-2 cannot resume the processing in the CPU time allocated twice, and the CPU time is wasted. From this, the present inventor has come to recognize that it is advantageous that the reception process in the guest OS on the receiving side is quickly performed when the communication between guest OSs is performed.

そこで本実施形態では、受信側ゲストOS31-1へのゲストOS間通信の割り込みが発生する場合、当該割り込みに対応する割り込み処理の終了に伴う割り込み解除後も当該ゲストOS31-1に追加でCPU時間が割り当てられるように、VMM20のゲストOSスケジューラ221によってCPU時間割当テーブル222が変更される。   Therefore, in this embodiment, when an interrupt of communication between guest OSs to the receiving guest OS 31-1 occurs, the CPU time is additionally added to the guest OS 31-1 even after the interrupt is released due to the end of the interrupt processing corresponding to the interrupt. Is allocated to the CPU time allocation table 222 by the guest OS scheduler 221 of the VMM 20.

図5は、変更後のCPU時間割当テーブル222によって表されるスケジュールの例を示す。図5の例では、時点t1で受信側ゲストOS31-1への受信割り込みが発生し、その時点t1から受信処理に必要な4msが経過する時点t3までの期間、当該ゲストOS31-1にCPU時間(CPU追加割当時間)が割り当てられる。この結果、CPU時間割当テーブル222の示すスケジュールの開始時点t0から5ms経過した時点t3までの間に、受信側ゲストOS31-1は受信処理を完了させることができる。   FIG. 5 shows an example of the schedule represented by the CPU time allocation table 222 after the change. In the example of FIG. 5, a reception interrupt to the receiving guest OS 31-1 occurs at time t1, and the CPU time is given to the guest OS 31-1 for a period from time t1 to time t3 when 4 ms necessary for reception processing elapses. (CPU additional allocation time) is allocated. As a result, the reception-side guest OS 31-1 can complete the reception process between the start time t0 of the schedule indicated by the CPU time allocation table 222 and the time t3 when 5 ms elapses.

このように本実施形態においては、受信側ゲストOS31-1に固有のゲストOSコンテキスト241-1に含まれているCPU追加割当時間情報244に基づいてCPU時間割当テーブル222を変更することにより、図5に示されるようにCPU時間割り当てのスケジュールを変更するようにしている。これにより、CPU時間割当テーブル222を変更せずに、図4で示されるような、元のCPU時間割当テーブル222の示すスケジュールの通りに受信側ゲストOS31-1をディスパッチする場合に比べて、当該ゲストOS31-1の受信処理を早く完了させることができる。この結果、送信側ゲストOS31-2の処理も、早く進めさせることができる。   As described above, in this embodiment, the CPU time allocation table 222 is changed based on the CPU additional allocation time information 244 included in the guest OS context 241-1 unique to the reception-side guest OS 31-1. As shown in FIG. 5, the CPU time allocation schedule is changed. As a result, as compared with the case where the receiving guest OS 31-1 is dispatched according to the schedule shown in the original CPU time allocation table 222 as shown in FIG. The reception process of the guest OS 31-1 can be completed quickly. As a result, the processing of the sending guest OS 31-2 can also be advanced quickly.

次に、上述のような、受信側のゲストOSの受信処理を早く完了させるためのスケジュール調整処理の手順について、図6のフローチャートを参照して説明する。
まず、送信側ゲストOS31-2が、受信側ゲストOS31-1との間のゲストOS間通信のために、VMM20に対してゲストOS間通信IF210の呼び出しを行ったものとする。本実施形態において、このゲストOS間通信IF210の呼び出しは、送信側ゲストOS31-2からVMM20に対してゲストOS間通信IFコール命令を発行することにより実現される。
Next, the procedure of schedule adjustment processing for completing the reception processing of the guest OS on the receiving side as described above will be described with reference to the flowchart of FIG.
First, it is assumed that the sending guest OS 31-2 calls the guest OS communication IF 210 to the VMM 20 for communication between guest OSs with the receiving guest OS 31-1. In this embodiment, the calling of the guest OS communication IF 210 is realized by issuing a guest OS communication IF call command to the VMM 20 from the sending guest OS 31-2.

VMM20のゲストOS間通信管理部21は送信側ゲストOS31-2からのゲストOS間通信IFの呼び出しを受けて、当該ゲストOS31-2及び受信側となるゲストOS31-1の各々に対して、それぞれゲストOS間通信IF210を提供する(ステップS1)。これにより送信側ゲストOS31-2は、ゲストOS間通信IF210を用いて、VMM20を介して受信側ゲストOS31-1(の受信バッファ)にデータを送信することができる。   The guest OS communication management unit 21 of the VMM 20 receives the call of the guest OS communication IF from the transmission side guest OS 31-2, and each of the guest OS 31-2 and the guest OS 31-1 on the reception side respectively. A guest OS communication IF 210 is provided (step S1). As a result, the sending guest OS 31-2 can send data to the receiving guest OS 31-1 (the receiving buffer) via the VMM 20 using the guest OS communication IF 210.

するとVMM20の割り込み管理部23は、受信側ゲストOS31-1に固有のゲストOSコンテキスト241-1に含まれている割り込み要因レジスタ243のゲストOS間通信受信ビットをONにする(ステップS2)。   Then, the interrupt management unit 23 of the VMM 20 turns on the inter-guest OS communication reception bit of the interrupt factor register 243 included in the guest OS context 241-1 unique to the reception-side guest OS 31-1 (step S2).

さて、VMM20のゲストOSスケジューラ221は、受信側ゲストOS31-1への何らかの割り込みの要因が発生すると、ディスパッチャ223が受信側ゲストOS31-1への割り込み発生に伴う当該ゲストOS31-1のディスパッチを発生させる直前に、ステップS11を実行する。このステップS11においてゲストOSスケジューラ221は、受信側ゲストOS31-1に固有のゲストOSコンテキスト241-1に含まれている割り込み要因レジスタ243のゲストOS通信受信ビットがON状態にあるかを判定する。つまりステップS11においてゲストOSスケジューラ221は、受信側ゲストOS31-1への割り込みの要因が、受信割り込みによる通知が必要な、当該受信側ゲストOS31-1でのゲストOS間通信の受信であるかを判定する。なお、受信側ゲストOS31-1への割り込み(受信割り込み)がいつ発生するかはシステムの実装に依存し、上記ステップS2の直後である必要はない。   The guest OS scheduler 221 of the VMM 20 generates a dispatch of the guest OS 31-1 accompanying the occurrence of an interrupt to the receiving guest OS 31-1 when any interrupt factor to the receiving guest OS 31-1 occurs. Immediately before the step S11 is executed. In step S11, the guest OS scheduler 221 determines whether or not the guest OS communication reception bit of the interrupt factor register 243 included in the guest OS context 241-1 unique to the reception-side guest OS 31-1 is ON. That is, in step S11, the guest OS scheduler 221 determines whether the cause of the interruption to the reception-side guest OS 31-1 is reception of inter-guest OS communication in the reception-side guest OS 31-1 that requires notification by reception interruption. judge. Note that when the interruption (reception interruption) to the reception-side guest OS 31-1 occurs depends on the implementation of the system and does not have to be immediately after step S2.

もし、受信割り込みビットがON状態にあり、したがって受信側ゲストOS31-1への割り込みの要因がゲストOS間通信の受信であるならば(ステップS11)、ゲストOSスケジューラ221はステップS12を実行する。このステップS12においてゲストOSスケジューラ221は、受信側ゲストOS31-1に固有のゲストOSコンテキスト241-1に含まれているCPU追加割当時間情報244が有効なCPU追加割当時間の値を示しているかを判定する。   If the reception interrupt bit is in the ON state, and the cause of the interruption to the reception-side guest OS 31-1 is reception of communication between guest OSs (step S11), the guest OS scheduler 221 executes step S12. In this step S12, the guest OS scheduler 221 determines whether or not the CPU additional allocation time information 244 included in the guest OS context 241-1 unique to the receiving guest OS 31-1 indicates a valid CPU additional allocation time value. judge.

もし、CPU追加割当時間情報244が有効なCPU追加割当時間の値を示しているならば(ステップS12)、ゲストOSスケジューラ221は、そのCPU追加割当時間の値に基づいて、上述のようなCPU時間割当テーブル222の変更を行う(ステップS13)。ここでは、受信側ゲストOS31-1への割り込み(受信割り込み)発生に伴う割り込み処理の直後に、CPU追加割当時間情報244の示すCPU時間(CPU追加割当時間)が当該ゲストOS31-1に割り当てられるように、CPU時間割当テーブル222が変更(更新)される。なお、CPU時間割当テーブル222の示すスケジュールの範囲内で受信側ゲストOS31-1に割り当てられるCPU追加割当時間がまかなえない場合は、更に先のスケジュールを作成することで解決できる。   If the CPU additional allocation time information 244 indicates a valid CPU additional allocation time value (step S12), the guest OS scheduler 221 determines the CPU as described above based on the CPU additional allocation time value. The time allocation table 222 is changed (step S13). Here, immediately after the interrupt processing accompanying the occurrence of an interrupt (reception interrupt) to the reception-side guest OS 31-1, the CPU time (CPU additional allocation time) indicated by the CPU additional allocation time information 244 is allocated to the guest OS 31-1. As described above, the CPU time allocation table 222 is changed (updated). If the CPU additional allocation time allocated to the reception-side guest OS 31-1 cannot be covered within the schedule range indicated by the CPU time allocation table 222, it can be solved by creating a further schedule.

ゲストOSスケジューラ221によってCPU時間割当テーブル222が変更されると(ステップS13)、割り込み管理部23は受信側ゲストOS31-1への割り込み(受信割り込み)を発生する(ステップS14)。   When the CPU time allocation table 222 is changed by the guest OS scheduler 221 (step S13), the interrupt management unit 23 generates an interrupt (reception interrupt) to the reception-side guest OS 31-1 (step S14).

一方、受信割り込みビットがON状態になく、したがって受信側ゲストOS31-1への割り込みの要因がゲストOS間通信の受信でないならば(ステップS11)、ステップS12及びS13をスキップして、当該要因に対応する受信側ゲストOS31-1への割り込み(受信割り込みとは異なる割り込み)が発生される(ステップS14)。また、ステップS12において、CPU追加割当時間情報244が有効なCPU追加割当時間の値を示していないと判定されたならば、ステップS13をスキップして、受信側ゲストOS31-1への割り込み(受信割り込み)が発生される(ステップS14)。   On the other hand, if the reception interrupt bit is not in the ON state, and the cause of the interrupt to the reception-side guest OS 31-1 is not reception of communication between guest OSs (step S11), steps S12 and S13 are skipped and An interrupt to the corresponding receiving guest OS 31-1 (an interrupt different from the reception interrupt) is generated (step S14). If it is determined in step S12 that the CPU additional allocation time information 244 does not indicate a valid CPU additional allocation time value, step S13 is skipped and an interruption (reception) to the reception-side guest OS 31-1 is received. Interrupt) is generated (step S14).

次に上記実施形態で適用される、ゲストOS31-jに固有のCPU追加割当時間情報244、即ちゲストOS31-jにおける受信処理に必要なCPU時間(CPU追加割当時間)の値を、常に最適な値に動的に変更することによってシステムの通信を最適化するための処理手順について説明する。   Next, the CPU additional allocation time information 244 unique to the guest OS 31-j, that is, the value of the CPU time (CPU additional allocation time) necessary for the reception processing in the guest OS 31-j, which is applied in the above embodiment, is always optimal. A processing procedure for optimizing system communication by dynamically changing to a value will be described.

システムの通信は、ゲストOS31-i及びゲストOS31-jが定常的に1対1で交互に通信を行う第1のタイプの通信と、複数のゲストOS31-1〜31-3が頻繁に通信を行う第2のタイプの通信に大別される。そこで、第1のタイプの通信が行われる状況でのシステムの最適化と、第2のタイプの通信が行われる状況でのシステムの最適化とについて、順次説明する。   The system communication includes the first type of communication in which the guest OS 31-i and the guest OS 31-j constantly and alternately communicate with each other and the plurality of guest OSs 31-1 to 31-3 frequently communicate with each other. The second type of communication is roughly classified. Therefore, system optimization in a situation where the first type communication is performed and system optimization in a situation where the second type communication is performed will be sequentially described.

<第1のタイプの通信が行われる状況でのシステムの最適化>
まず、第1のタイプの通信が行われる状況でシステムを最適化するための処理手順について、図7のフローチャートを参照して説明する。
<Optimization of the system in the situation where the first type of communication is performed>
First, a processing procedure for optimizing the system in a situation where the first type of communication is performed will be described with reference to a flowchart of FIG.

VM30-1〜30-3上で動作するゲストOS31-1〜31-3が第1のタイプの通信(定常的な1対1交互の通信)を行っている状況では、当該ゲストOS31-1〜31-3への受信割り込みが定常的に発生する。ゲストOS31-j(j=1,2,3)は、当該ゲストOS31-jへの受信割り込みが発生すると、割り込み処理の直後に前述の受信処理を実行する。ゲストOSコンテキスト管理部24内のCPU追加割当時間設定部240は、ゲストOS31-jに追加で割り当てられるCPU時間(CPU追加割当時間)が最適値となるように、当該CPU追加割当時間の設定値(CPU追加割当時間情報244)を図7のフローチャートに従う手順で調整する。この調整は、ゲストOS間通信管理部21内のゲストOS間通信監視部211と連携することによって次のように行われる。   In a situation where the guest OSs 31-1 to 31-3 operating on the VMs 30-1 to 30-3 are performing the first type of communication (steady one-to-one alternate communication), the guest OSs 31-1 to 31-3 A reception interrupt to 31-3 occurs regularly. When a reception interrupt to the guest OS 31-j occurs, the guest OS 31-j (j = 1, 2, 3) executes the above-described reception process immediately after the interrupt process. The CPU additional allocation time setting unit 240 in the guest OS context management unit 24 sets the CPU additional allocation time setting value so that the CPU time additionally allocated to the guest OS 31-j (CPU additional allocation time) becomes an optimum value. (CPU additional allocation time information 244) is adjusted by the procedure according to the flowchart of FIG. This adjustment is performed as follows by cooperating with the inter-guest OS communication monitoring unit 211 in the inter-guest OS communication management unit 21.

まず、ゲストOS間通信監視部211は、ゲストOS間の通信を監視することにより、定常的に1対1で通信(第1のタイプの通信)を行っているゲストOSを検知する(ステップS21)。このように、定常的に1対1で通信を行っているゲストOSを検知するには、例えばゲストOS間通信監視部211がゲストOS31-1〜31-3からのゲストOS間通信IF210の呼び出しのログを採取すれば良い。ここでは、ゲストOS間通信IF210の呼び出しのログから、例えばゲストOS31-iとゲストOS31-jとが交互にゲストOS間通信IF210を呼び出している回数が予め定められた閾値を超えていると判定できるならば、ゲストOS間通信監視部211は当該ゲストOS31-iとゲストOS31-jとを定常的に1対1で通信(第1のタイプの通信)を行っているゲストOSであると検知できる。   First, the inter-guest OS communication monitoring unit 211 detects a guest OS that is regularly performing one-to-one communication (first type communication) by monitoring communication between guest OSes (step S21). ). As described above, in order to detect a guest OS that regularly performs one-to-one communication, for example, the guest OS communication monitoring unit 211 calls the guest OS communication IF 210 from the guest OSs 31-1 to 31-3. You can collect the logs. Here, from the call log of the inter-guest OS communication IF 210, for example, it is determined that the number of times the guest OS 31-i and the guest OS 31-j alternately call the inter-guest OS communication IF 210 exceeds a predetermined threshold. If possible, the inter-guest OS communication monitoring unit 211 detects that the guest OS 31-i and the guest OS 31-j are regularly performing one-to-one communication (first type communication). it can.

CPU追加割当時間設定部240は、ゲストOS31-iとゲストOS31-jとが定常的に1対1で通信(第1のタイプの通信)を行っているゲストOSであるとゲストOS間通信監視部211によって検知されると(ステップS21)、例えばゲストOS31-i及び31-jの双方にそれぞれ固有のCPU追加割当時間情報244を変更して、CPU追加割当時間を現在の例えば2倍に設定する(ステップS22)。   The CPU additional allocation time setting unit 240 monitors the communication between guest OSs if the guest OS 31-i and the guest OS 31-j are regularly communicating on a one-to-one basis (first type communication). When detected by the unit 211 (step S21), for example, the CPU additional allocation time information 244 specific to both the guest OS 31-i and 31-j is changed, and the CPU additional allocation time is set to, for example, twice the current. (Step S22).

この状態でゲストOS間通信監視部211は、ゲストOS31-i及び31-jの間の通信の状況、例えば通信スループットを観測する(ステップS23)。そしてゲストOS間通信監視部211は、通信スループットが改善したか否かを判定する(ステップS24)。本実施形態では通信スループットとして、一定時間当たりの通信回数が用いられる。   In this state, the inter-guest OS communication monitoring unit 211 observes the communication status between the guest OSs 31-i and 31-j, for example, the communication throughput (step S23). Then, the guest OS communication monitoring unit 211 determines whether or not the communication throughput has improved (step S24). In the present embodiment, the number of communications per fixed time is used as the communication throughput.

もし、スループットが改善したとゲストOS間通信監視部211によって判定されたならば(ステップS24)、CPU追加割当時間設定部240は、ゲストOS31-i及び31-j各々のCPU追加割当時間を更に2倍に設定する(ステップS25a)。逆に、スループットが劣化したとゲストOS間通信監視部211によって判定されたならば(ステップS24)、CPU追加割当時間設定部240は、ゲストOS31-i及び31-j各々のCPU追加割当時間を現在の値の半分に設定し直す(ステップS25b)。   If it is determined by the guest OS communication monitoring unit 211 that the throughput has improved (step S24), the CPU additional allocation time setting unit 240 further sets the CPU additional allocation time of each of the guest OSs 31-i and 31-j. It is set to 2 times (step S25a). Conversely, if the guest OS communication monitoring unit 211 determines that the throughput has deteriorated (step S24), the CPU additional allocation time setting unit 240 determines the CPU additional allocation time of each of the guest OSs 31-i and 31-j. Reset to half of the current value (step S25b).

いずれの場合においても、ゲストOS間通信監視部211は、先のステップS23,S24と同様に、通信状況(スループット)の観測及び判定(ステップS26a,S27aまたはステップS26b,S27b)を行う。   In either case, the guest OS inter-communication monitoring unit 211 observes and determines the communication status (throughput) (steps S26a and S27a or steps S26b and S27b) as in the previous steps S23 and S24.

もし、ステップS27aでスループットが改善したと判定された場合、CPU追加割当時間設定部240は再びステップS25aを実行して、CPU追加割当時間を更に2倍に設定する。するとゲストOS間通信監視部211は通信状況(スループット)の観測及び判定(ステップS26a,S27a)を再び実行する。これに対し、ステップS27aでスループットが劣化したと判定された場合、CPU追加割当時間設定部240はCPU追加割当時間を現在の値の半分に設定し直す(ステップS28a)。CPU追加割当時間設定部240は、ステップS28aで設定された最新のCPU追加割当時間値が最適値であるとして、処理を終了する。   If it is determined in step S27a that the throughput has improved, the CPU additional allocation time setting unit 240 executes step S25a again, and further sets the CPU additional allocation time to double. Then, the guest OS inter-communication monitoring unit 211 again performs observation and determination of the communication status (throughput) (steps S26a and S27a). On the other hand, when it is determined in step S27a that the throughput has deteriorated, the CPU additional allocation time setting unit 240 resets the CPU additional allocation time to half of the current value (step S28a). The CPU additional allocation time setting unit 240 ends the process, assuming that the latest CPU additional allocation time value set in step S28a is the optimum value.

一方、ステップS27bでスループットが改善したと判定された場合、CPU追加割当時間設定部240は再びステップS25bを実行して、CPU追加割当時間を現在の値の半分に設定し直す。するとゲストOS間通信監視部211は通信状況(スループット)の観測及び判定(ステップS26b,S27b)を再び実行する。これに対し、ステップS27bでスループットが劣化したと判定された場合、CPU追加割当時間設定部240はCPU追加割当時間を現在の2倍に設定する(ステップS28b)。CPU追加割当時間設定部240は、ステップS28bで設定された最新のCPU追加割当時間値が最適値であるとして、処理を終了する。   On the other hand, if it is determined in step S27b that the throughput has improved, the CPU additional allocation time setting unit 240 executes step S25b again to reset the CPU additional allocation time to half the current value. Then, the guest OS inter-communication monitoring unit 211 performs the observation and determination of the communication status (throughput) (steps S26b and S27b) again. On the other hand, when it is determined in step S27b that the throughput has deteriorated, the CPU additional allocation time setting unit 240 sets the CPU additional allocation time to double the current time (step S28b). The CPU additional allocation time setting unit 240 ends the process, assuming that the latest CPU additional allocation time value set in step S28b is the optimum value.

なお、CPU追加割当時間の調整範囲に制約を設け、CPU追加割当時間が制御可能な範囲を当該調整範囲として設定し、この範囲を超えないようにCPU追加割当時間を調整することも可能である。   Note that it is also possible to provide a restriction on the adjustment range of the CPU additional allocation time, set a range in which the CPU additional allocation time can be controlled as the adjustment range, and adjust the CPU additional allocation time so as not to exceed this range. .

上記実施形態では、第1のタイプの通信を行っているゲストOS31-i及び31-jの双方のCPU追加割当時間が最適値に変更される。しかし、ゲストOS31-i及び31-jの一方、例えば主として応答を返す側(受信側)のゲストOSのCPU追加割当時間のみが最適値に変更される構成であっても構わない。この構成では、ゲストOS間通信監視部211は、上記通信状況の観測結果に基づき、ゲストOS31-i及び31-jの一方が応答を返す側となる割合が予め定められた閾値を超えているかを調べることによって、当該一方が主として受信側ゲストOSであるかを判定すれば良い。   In the above embodiment, the CPU additional allocation time of both the guest OSs 31-i and 31-j performing the first type of communication is changed to the optimum value. However, one of the guest OSs 31-i and 31-j, for example, may be configured such that only the CPU additional allocation time of the guest OS on the response return side (reception side) is changed to the optimum value. In this configuration, the inter-guest OS communication monitoring unit 211 determines whether the ratio at which one of the guest OSs 31-i and 31-j returns a response exceeds a predetermined threshold based on the observation result of the communication status. It is sufficient to determine whether the one is mainly the receiving guest OS.

<第2のタイプの通信が行われる状況でのシステムの最適化>
ゲストOS31-1〜31-3が第2のタイプの通信を行っている状況(頻繁に通信を行っている状況)では、頻繁に受信割り込みによるディスパッチが発生する。このような状況では、ディスパッチそれ自体にかかるオーバヘッドの影響によってシステム性能の低下を引き起こす可能性がある。例えば、サーバクライアントモデルの通信は第2のタイプの通信に相当し、このような通信がゲストOS上のアプリケーションで行われているような場合、個々の通信は独立である。
<Optimization of the system in a situation where the second type of communication is performed>
In a situation where the guest OSs 31-1 to 31-3 are performing the second type of communication (a situation where frequent communication is performed), dispatch due to a reception interrupt frequently occurs. In such a situation, there is a possibility of causing a decrease in system performance due to the overhead effect on the dispatch itself. For example, the communication of the server client model corresponds to the second type of communication. When such communication is performed by an application on the guest OS, each communication is independent.

したがって受信側ゲストOSへの受信割り込みに伴う割り込み処理の直後に受信処理を行わなくてもシステム全体の動作に矛盾は生じないことが多い。この場合、受信量がある程度溜まってから受信側ゲストOSに受信処理をまとめて実行させたほうが、ディスパッチの回数が減ってスループットが改善する可能性がある。   Accordingly, in many cases, no contradiction occurs in the operation of the entire system even if the reception process is not performed immediately after the interrupt process associated with the reception interrupt to the reception-side guest OS. In this case, when the reception amount is accumulated to some extent and the reception side guest OS executes the reception processing collectively, the number of dispatches may be reduced and the throughput may be improved.

以下、第2のタイプの通信が行われる状況でシステムを最適化するための処理手順について、図8のフローチャートを参照して説明する。   Hereinafter, a processing procedure for optimizing the system in a situation where the second type of communication is performed will be described with reference to a flowchart of FIG.

ゲストOS間通信監視部211は、ゲストOS間の通信を監視することにより、通信量が多いために受信割り込みの回数が多くなったこと、つまりゲストOS間で頻繁に通信(第2のタイプの通信)が行われていることを検知する(ステップS31)。このような通信を検知するには、例えばゲストOS間通信監視部211がゲストOS31-1〜31-3からのゲストOS間通信IF210の呼び出しのログを採取すれば良い。ここでは、ゲストOS間通信IF210の呼び出しのログから、一定時間当たりの受信割り込みの回数が予め定められた閾値を超えていると判定できるならば、ゲストOS間通信監視部211はゲストOS31-1〜31-3の間で頻繁に通信(第2のタイプの通信)が行われていると検知できる。ここでは、ゲストOS31-1がサーバとして動作し、ゲストOS31-2及び31-3がクライアントとして動作しているものとする。つまり、ゲストOS31-2及び31-3が送信側、ゲストOS31-1が受信側として、それぞれ動作している
CPU追加割当時間設定部240は、ゲストOS31-1〜31-3の間の頻繁な通信(第2のタイプの通信)がゲストOS間通信監視部211によって検知されると(ステップS31)、ステップS32を実行する。このステップS32においてCPU追加割当時間設定部240は、受信側ゲストOS31-1への受信割り込みを発生させるために必要な受信量の閾値(受信量閾値)を例えば現在の値の2倍に設定すると共に、当該ゲストOS31-1に固有のCPU追加割当時間情報244を変更して、CPU追加割当時間を現在の例えば2倍に設定する。つまりCPU追加割当時間設定部240は、ゲストOS31-1の受信量閾値及びCPU追加割当時間を、いずれも現在の値の2倍に設定する。
The guest OS communication monitoring unit 211 monitors the communication between guest OSes, so that the number of reception interrupts increases due to a large amount of communication, that is, frequent communication between guest OSes (second type). It is detected that communication is being performed (step S31). In order to detect such communication, for example, the guest OS communication monitoring unit 211 may collect a call log of the guest OS communication IF 210 from the guest OSs 31-1 to 31-3. Here, if it can be determined from the call log of the inter-guest OS communication IF 210 that the number of reception interrupts per fixed time exceeds a predetermined threshold, the inter-guest OS communication monitoring unit 211 determines that the guest OS 31-1 It can be detected that communication (second type communication) is frequently performed between ˜31-3. Here, it is assumed that the guest OS 31-1 operates as a server, and the guest OSs 31-2 and 31-3 operate as clients. That is, the CPU additional allocation time setting unit 240 operating with the guest OSs 31-2 and 31-3 as the transmission side and the guest OS 31-1 as the reception side is frequently used between the guest OSs 31-1 to 31-3. When communication (second type communication) is detected by the guest OS communication monitoring unit 211 (step S31), step S32 is executed. In this step S32, the CPU additional allocation time setting unit 240 sets a reception amount threshold (reception amount threshold) necessary to generate a reception interrupt to the reception-side guest OS 31-1, for example, twice the current value. At the same time, the CPU additional allocation time information 244 unique to the guest OS 31-1 is changed to set the CPU additional allocation time to, for example, twice the current time. That is, the CPU additional allocation time setting unit 240 sets both the reception amount threshold of the guest OS 31-1 and the CPU additional allocation time to be twice the current value.

この状態でゲストOS間通信監視部211は、ゲストOS31-1とゲストOS31-2及び31-3の間の通信の状況、例えば通信スループットを観測する(ステップS33)。そしてゲストOS間通信監視部211は、通信スループットが改善したか否かを判定する(ステップS34)。本実施形態では通信スループットとして、前述したように一定時間当たりの通信回数が用いられる。   In this state, the inter-guest OS communication monitoring unit 211 observes the communication status between the guest OS 31-1 and the guest OSs 31-2 and 31-3, for example, the communication throughput (step S33). Then, the guest OS communication monitoring unit 211 determines whether or not the communication throughput has improved (step S34). In the present embodiment, as described above, the number of communications per fixed time is used as the communication throughput.

もし、スループットが改善したとゲストOS間通信監視部211によって判定されたならば(ステップS34)、CPU追加割当時間設定部240は、ゲストOS31-1の受信量閾値及びCPU追加割当時間を、いずれも現在の値の2倍に設定する(ステップS35a)。逆に、スループットが劣化したとゲストOS間通信監視部211によって判定されたならば(ステップS34)、CPU追加割当時間設定部240は、ゲストOS31-1の受信量閾値及びCPU追加割当時間を、いずれも現在の値の半分に設定し直す(ステップS35b)。   If it is determined by the guest OS communication monitoring unit 211 that the throughput has improved (step S34), the CPU additional allocation time setting unit 240 determines the reception amount threshold of the guest OS 31-1 and the CPU additional allocation time. Is set to twice the current value (step S35a). Conversely, if the guest OS communication monitoring unit 211 determines that the throughput has deteriorated (step S34), the CPU additional allocation time setting unit 240 sets the reception amount threshold value and CPU additional allocation time of the guest OS 31-1 to In either case, the value is reset to half of the current value (step S35b).

いずれの場合においても、ゲストOS間通信監視部211は、先のステップS32,S33と同様に、通信状況(スループット)の観測及び判定(ステップS36a,S37aまたはステップS36b,S37b)を行う。   In any case, the guest OS inter-communication monitoring unit 211 observes and determines the communication status (throughput) (steps S36a and S37a or steps S36b and S37b) as in the previous steps S32 and S33.

もし、ステップS37aでスループットが改善したと判定された場合、CPU追加割当時間設定部240は再びステップS35aを実行して、ゲストOS31-1の受信量閾値及びCPU追加割当時間を更に2倍に設定する。するとゲストOS間通信監視部211は通信状況(スループット)の観測及び判定(ステップS36a,S37a)を再び実行する。これに対し、ステップS37aでスループットが劣化したと判定された場合、CPU追加割当時間設定部240はゲストOS31-1の受信量閾値及びCPU追加割当時間を現在の値の半分に設定し直す(ステップS38a)。CPU追加割当時間設定部240は、ステップS38aで設定された最新の受信量閾値及びCPU追加割当時間値が最適値であるとして、処理を終了する。   If it is determined in step S37a that the throughput has improved, the CPU additional allocation time setting unit 240 executes step S35a again to further double the reception amount threshold value and CPU additional allocation time of the guest OS 31-1. To do. Then, the guest OS inter-communication monitoring unit 211 executes the observation and determination (steps S36a and S37a) of the communication state (throughput) again. On the other hand, if it is determined in step S37a that the throughput has deteriorated, the CPU additional allocation time setting unit 240 resets the reception amount threshold of the guest OS 31-1 and the CPU additional allocation time to half of the current values (step S37a). S38a). The CPU additional allocation time setting unit 240 terminates the process, assuming that the latest reception amount threshold value and CPU additional allocation time value set in step S38a are optimum values.

一方、ステップS37bでスループットが改善したと判定された場合、CPU追加割当時間設定部240は再びステップS35bを実行して、ゲストOS31-1の受信量閾値及びCPU追加割当時間を現在の値の半分に設定し直す。するとゲストOS間通信監視部211は通信状況(スループット)の観測及び判定(ステップS36b,S37b)を再び実行する。これに対し、ステップS37bでスループットが劣化したと判定された場合、CPU追加割当時間設定部240はゲストOS31-1の受信量閾値及びCPU追加割当時間を現在の2倍に設定する(ステップS38b)。CPU追加割当時間設定部240は、ステップS38bで設定された最新の受信量閾値及びCPU追加割当時間値が最適値であるとして、処理を終了する。   On the other hand, if it is determined in step S37b that the throughput has improved, the CPU additional allocation time setting unit 240 executes step S35b again, and sets the reception threshold value and CPU additional allocation time of the guest OS 31-1 to half of the current value. Set to. Then, the guest OS inter-communication monitoring unit 211 again performs observation and determination of the communication status (throughput) (steps S36b and S37b). On the other hand, if it is determined in step S37b that the throughput has deteriorated, the CPU additional allocation time setting unit 240 sets the reception amount threshold and the CPU additional allocation time of the guest OS 31-1 to double the current time (step S38b). . The CPU additional allocation time setting unit 240 terminates the processing, assuming that the latest reception amount threshold value and CPU additional allocation time value set in step S38b are optimum values.

なお、CPU追加割当時間に関しては、調整範囲に制約を設け、CPU追加割当時間が制御可能な範囲を当該調整範囲として設定し、この範囲を超えないようにCPU追加割当時間を調整することも可能である。   Regarding the CPU additional allocation time, it is also possible to set a range in which the CPU additional allocation time is controllable as the adjustment range by adjusting the adjustment range, and to adjust the CPU additional allocation time so as not to exceed this range. It is.

[第1の変形例]
次に、上記実施形態の第1の変形例について説明する。
上記実施形態では、ゲストOS間通信の受信側ゲストOS31-jに追加で割り当てられるCPU時間(つまりCPU追加割当時間)がVMM20側で動的に調整される。しかし、ゲストOS間通信の送信側ゲストOS31-iが、受信側ゲストOS31-jでのデータ受信に伴う受信処理に必要な時間(CPU時間)を予測して当該受信側ゲストOS31-jのCPU追加割当時間を調整することも可能である。このような調整手法は、受信側ゲストOS31-jの受信処理に必要なCPU時間量が送信側ゲストOS31-iからの通信の内容に依存する場合に最適であり、より精度の高い時間指定が期待できる。
[First Modification]
Next, a first modification of the above embodiment will be described.
In the above embodiment, the CPU time additionally allocated to the reception-side guest OS 31-j for the communication between guest OSs (that is, the CPU additional allocation time) is dynamically adjusted on the VMM 20 side. However, the transmission side guest OS 31-i of the communication between guest OSes predicts the time (CPU time) required for the reception process accompanying data reception in the reception side guest OS 31-j, and the CPU of the reception side guest OS 31-j It is also possible to adjust the additional allocation time. Such an adjustment method is optimal when the amount of CPU time required for the reception processing of the reception-side guest OS 31-j depends on the content of communication from the transmission-side guest OS 31-i, and more accurate time specification is possible. I can expect.

第1の変形例の特徴は、受信側ゲストOS31-jの臨時のCPU追加割当時間を送信側ゲストOS31-iが指定することにある。以下、送信側ゲストOS31-iによる受信側ゲストOS31-jの臨時のCPU追加割当時間指定及び当該指定に基づくスケジュール調整の手順について、図9のフローチャートを参照して説明する。   A feature of the first modification is that the sending guest OS 31-i designates a temporary CPU additional allocation time of the receiving guest OS 31-j. Hereinafter, the temporary CPU additional allocation time designation of the receiving guest OS 31-j by the sending guest OS 31-i and the schedule adjustment procedure based on the designation will be described with reference to the flowchart of FIG.

ゲストOS間通信の送信側のゲストOS31-iは、受信側ゲストOS31-jとのゲストOS間通信のためにVMM20に対してゲストOS間通信IF210を呼ぶ際には、当該受信側ゲストOS31-jに対して行おうとしている通信の内容から当該受信側ゲストOS31-jでの受信処理に要する時間を予測する。送信側のゲストOS31-iは、予測された時間を受信側ゲストOS31-jに割り当てられるべきCPU時間(CPU追加割当時間)として、例えばゲストOS間通信IFコール命令の引数により指定し、当該コール命令をVMM20に対して発行することで、ゲストOS間通信IF210を呼ぶ。   When the guest OS 31-i on the sending side of the inter-guest OS communication calls the inter-guest OS communication IF 210 to the VMM 20 for the inter-guest OS communication with the receiving guest OS 31-j, the receiving-side guest OS 31-i The time required for the reception process in the receiving guest OS 31-j is predicted from the content of the communication to be performed on j. The guest OS 31-i on the transmission side designates the predicted time as the CPU time (CPU additional allocation time) to be allocated to the reception guest OS 31-j, for example, by using an argument of the inter-guest OS communication IF call command. The guest OS communication IF 210 is called by issuing a command to the VMM 20.

するとVMM20のゲストOS間通信管理部21は、送信側のゲストOS31-2及び受信側ゲストOS31-1の各々に対して、それぞれゲストOS間通信IF210を提供する(ステップS41)。割り込み管理部23は、受信側ゲストOS31-1に固有のゲストOSコンテキスト241-1に含まれている割り込み要因レジスタ243のゲストOS間通信受信ビットをONにする(ステップS42)。このステップS42において、CPU追加割当時間設定部240は、送信側のゲストOS31-2から指定されたCPU時間の値を受信側ゲストOS31-1の臨時のCPU追加割当時間の値として設定する。ここでは、指定された臨時のCPU追加割当時間の値が、受信側ゲストOS31-1に固有のゲストOSコンテキスト241-1の一部として設定される。しかし、臨時のCPU追加割当時間の値が、ゲストOSコンテキスト241-1とは別に受信側ゲストOS31-1に対応付けて用意されるロケーション(物理的にはメモリ13内の特定の領域)に設定される構成であっても構わない。   Then, the guest OS communication management unit 21 of the VMM 20 provides the guest OS communication IF 210 to each of the transmission side guest OS 31-2 and the reception side guest OS 31-1 (step S41). The interrupt management unit 23 turns on the inter-guest OS communication reception bit of the interrupt factor register 243 included in the guest OS context 241-1 unique to the reception-side guest OS 31-1 (step S42). In step S42, the CPU additional allocation time setting unit 240 sets the CPU time value designated by the sending guest OS 31-2 as the temporary CPU additional allocation time value of the receiving guest OS 31-1. Here, the value of the designated temporary CPU additional allocation time is set as a part of the guest OS context 241-1 unique to the reception-side guest OS 31-1. However, the temporary CPU additional allocation time value is set in a location (physically a specific area in the memory 13) prepared in association with the receiving guest OS 31-1 separately from the guest OS context 241-1. It may be configured as described above.

その後、VMM20のゲストOSスケジューラ221は、ディスパッチャ224が受信側ゲストOS31-1への割り込み発生に伴う当該ゲストOS31-1のディスパッチを発生させる直前に、当該ゲストOS31-1に固有のゲストOSコンテキスト241-1に含まれている割り込み要因レジスタ243のゲストOS通信受信ビットがON状態にあるかを判定する(ステップS51)。   Thereafter, the guest OS scheduler 221 of the VMM 20 immediately before the dispatcher 224 generates dispatch of the guest OS 31-1 accompanying the occurrence of an interrupt to the receiving guest OS 31-1, the guest OS context 241 unique to the guest OS 31-1. It is determined whether the guest OS communication reception bit of the interrupt factor register 243 included in -1 is in an ON state (step S51).

もし、受信割り込みビットがON状態にある場合、つまり受信側ゲストOS31-1への割り込みの要因がゲストOS間通信の受信である場合(ステップS51)、ゲストOSスケジューラ221はステップS52を実行する。このステップS52においてゲストOSスケジューラ221は、受信側ゲストOS31-1に固有のゲストOSコンテキスト241-1に設定されている臨時のCPU追加割当時間の値が有効な値であるかを判定する。   If the reception interrupt bit is in the ON state, that is, if the cause of the interrupt to the reception-side guest OS 31-1 is reception of communication between guest OSs (step S51), the guest OS scheduler 221 executes step S52. In step S52, the guest OS scheduler 221 determines whether the value of the temporary CPU additional allocation time set in the guest OS context 241-1 unique to the reception-side guest OS 31-1 is a valid value.

もし、臨時のCPU追加割当時間の値が有効な値であるならば(ステップS52)、ゲストOSスケジューラ221は、当該臨時のCPU追加割当時間の値に基づき、上記実施形態のステップS13と同様に、CPU時間割当テーブル222の変更を行う(ステップS54)。ここでは、受信側ゲストOS31-1への受信割り込み発生に伴う割り込み処理の直後に、上記ステップS13と異なって(CPU追加割当時間情報244の示すCPU時間ではなくて)、臨時のCPU追加割当時間が当該ゲストOS31-1に割り当てられるように、CPU時間割当テーブル222が変更される。   If the value of the temporary CPU additional allocation time is a valid value (step S52), the guest OS scheduler 221 uses the temporary CPU additional allocation time value as in step S13 of the above embodiment. Then, the CPU time allocation table 222 is changed (step S54). Here, immediately after the interrupt processing accompanying the occurrence of a reception interrupt to the reception-side guest OS 31-1, unlike the step S13 (not the CPU time indicated by the CPU additional allocation time information 244), the temporary CPU additional allocation time CPU time allocation table 222 is changed so that is allocated to the guest OS 31-1.

これに対し、臨時のCPU追加割当時間の値が有効な値でないならば(ステップS52)、ゲストOSスケジューラ221は、上記実施形態のステップS12と同様に、受信側ゲストOS31-1に固有のゲストOSコンテキスト241-1に含まれているCPU追加割当時間情報244が有効なCPU追加割当時間の値を示しているかを判定する(ステップS53)。   On the other hand, if the value of the temporary CPU additional allocation time is not a valid value (step S52), the guest OS scheduler 221 uses the guest specific to the reception-side guest OS 31-1 as in step S12 of the above embodiment. It is determined whether the CPU additional allocation time information 244 included in the OS context 241-1 indicates a valid CPU additional allocation time value (step S53).

もし、CPU追加割当時間情報244が有効なCPU追加割当時間の値を示しているならば(ステップS53)、ゲストOSスケジューラ221は、そのCPU追加割当時間の値に基づいて、上記実施形態のステップS13と同様にCPU時間割当テーブル222の変更を行う(ステップS54)。   If the CPU additional allocation time information 244 indicates a valid CPU additional allocation time value (step S53), the guest OS scheduler 221 performs the steps of the above embodiment based on the CPU additional allocation time value. As in S13, the CPU time allocation table 222 is changed (step S54).

ゲストOSスケジューラ221はCPU時間割当テーブル222を変更すると、CPU追加割当時間設定部240によりゲストOSコンテキスト241-1からCPU追加割当時間の設定値を削除させる(ステップS55)。CPU追加割当時間設定部240は、ゲストOSコンテキスト241-1にCPU追加割当時間の値が設定されているならば、その設定値を削除する。すると割り込み管理部23は、受信側ゲストOS31-1への割り込み(受信割り込み)を発生する(ステップS56)。   When the guest OS scheduler 221 changes the CPU time allocation table 222, the CPU additional allocation time setting unit 240 causes the CPU additional allocation time setting value to be deleted from the guest OS context 241-1 (step S55). If the value of the CPU additional allocation time is set in the guest OS context 241-1, the CPU additional allocation time setting unit 240 deletes the setting value. Then, the interrupt management unit 23 generates an interrupt (reception interrupt) to the reception-side guest OS 31-1 (Step S56).

一方、受信割り込みビットがON状態にないならば(ステップS51)、CPU時間割当テーブル222が変更されることなくステップS56が実行されて、受信側ゲストOS31-1への割り込み(受信割り込みとは異なる割り込み)が発生される。また、ステップS53において、CPU追加割当時間情報244が有効なCPU追加割当時間の値を示していないと判定された場合にも、CPU時間割当テーブル222が変更されることなくステップS56が実行されて、受信側ゲストOS31-1への割り込み(受信割り込み)が発生される。   On the other hand, if the reception interrupt bit is not in the ON state (step S51), step S56 is executed without changing the CPU time allocation table 222, and an interrupt to the reception-side guest OS 31-1 (different from the reception interrupt). Interrupt). Even when it is determined in step S53 that the CPU additional allocation time information 244 does not indicate a valid CPU additional allocation time value, step S56 is executed without changing the CPU time allocation table 222. Then, an interrupt (reception interrupt) to the receiving guest OS 31-1 is generated.

[第2の変形例]
次に、上記実施形態の第2の変形例について説明する。
上記実施形態では、受信側ゲストOSの受信割り込み処理の後に行われる受信処理のために、当該受信側ゲストOSに追加でCPU時間(CPU追加割当時間)が割り当てられる。このため、不当にCPU時間を奪われる他のゲストOSが存在する可能性がある。
[Second Modification]
Next, a second modification of the above embodiment will be described.
In the above embodiment, additional CPU time (CPU additional allocation time) is allocated to the receiving guest OS for the receiving process performed after the receiving interrupt process of the receiving guest OS. For this reason, there is a possibility that there is another guest OS whose CPU time is unreasonably taken.

図5の例では、時点t0から1msが経過した時点t1で、ゲストOS31-1に追加でCPU時間(CPU追加割当時間)が割り当てられた結果、ゲストOS31-2及びゲストOS31-3に割り当てられるべきCPU時間が当該ゲストOS31-2及びゲストOS31-3から奪われている。このような場合、CPU時間を奪われたゲストOS31-2及びゲストOS31-3のうちのゲストOS31-3は、ゲストOS31-1(追加でCPU時間が割り当てられたゲストOS31-1)とゲストOS31-2との間で行われるゲストOS間通信とは無関係であるのに、当該ゲストOS31-3の性能が低下する可能性がある。このような性能低下は、特にゲストOS31-3がリアルタイム性を要求される処理を行っている場合に問題となる。   In the example of FIG. 5, as a result of the additional CPU time (CPU additional allocation time) being allocated to the guest OS 31-1, at the time t1 when 1 ms has elapsed from the time t0, the allocation is performed to the guest OS 31-2 and the guest OS 31-3. CPU time to be taken is taken away from the guest OS 31-2 and guest OS 31-3. In such a case, the guest OS 31-3 among the guest OS 31-2 and guest OS 31-3 whose CPU time has been deprived is the guest OS 31-1 (guest OS 31-1 to which additional CPU time is allocated) and the guest OS 31. Although it is not related to the communication between guest OSes performed with -2, the performance of the guest OS 31-3 may be deteriorated. Such a performance degradation becomes a problem particularly when the guest OS 31-3 is performing a process that requires real-time performance.

第2の変形例の特徴は、追加でCPU時間が割り当てられるゲストOSを第1のゲストOS、CPU時間を奪われるゲストOSを第2のゲストOSと呼ぶものとすると、第2のゲストOSから奪われるCPU時間を、第1のゲストOSに割り当てられる予定のCPU時間で埋め合わせることにある。この埋め合わせは、第2のゲストOSから奪われるCPU時間を、当該奪われるCPU時間の割り当てが予定されていた時間帯(割り当て予定時間帯)に最も近い時間帯に第1のゲストOSに割り当てられる予定のCPU時間と交換することにより実現される。   The feature of the second modified example is that a guest OS to which CPU time is additionally allocated is called a first guest OS, and a guest OS that is deprived of CPU time is called a second guest OS. The CPU time taken away is to make up for the CPU time scheduled to be allocated to the first guest OS. In this compensation, the CPU time taken away from the second guest OS is assigned to the first guest OS in the time zone closest to the time zone (assignment scheduled time zone) where the assigned CPU time is scheduled. This is realized by exchanging with the scheduled CPU time.

以下、第2のゲストOSから奪われるCPU時間を第1のゲストOSに割り当てられる予定のCPU時間と交換することによって実現されるスケジュール調整の手順について、図10のフローチャートを参照して説明する。   Hereinafter, a procedure of schedule adjustment realized by exchanging the CPU time taken away from the second guest OS with the CPU time scheduled to be assigned to the first guest OS will be described with reference to the flowchart of FIG.

今、送信側ゲストOS31-2からの通信に伴う送信データが受信側ゲストOS31-1で受信され、当該受信側ゲストOS31-1に受信割り込みが発生したものとする。この場合、スケジュールの変更の必要が発生する。   Assume that transmission data associated with communication from the transmission side guest OS 31-2 is received by the reception side guest OS 31-1, and a reception interrupt occurs in the reception side guest OS 31-1. In this case, the schedule needs to be changed.

するとゲストOSスケジューラ221は、受信側ゲストOS31-1での割り込み処理後に行われる受信処理に必要なCPU割当時間が現在受信側ゲストOS31-1用に設定されているCPU追加割当時間では不足しているかを判定する(ステップS61)。ここで、受信側ゲストOS31-1での割り込み処理後の受信処理に必要なCPU割当時間の値は、ゲストOSコンテキスト241-1に含まれているCPU追加割当時間情報244によって示される。また、ステップS61が最初に実行される段階では、受信側ゲストOS31-1用に設定されているCPU追加割当時間の時間帯は存在しない。   Then, the guest OS scheduler 221 does not have the CPU allocation time required for the reception processing performed after the interrupt processing in the reception side guest OS 31-1 at the CPU additional allocation time currently set for the reception side guest OS 31-1. (Step S61). Here, the value of the CPU allocation time necessary for the reception processing after the interrupt processing in the reception-side guest OS 31-1 is indicated by the CPU additional allocation time information 244 included in the guest OS context 241-1. Further, at the stage when step S61 is first executed, there is no time zone for the CPU additional allocation time set for the reception-side guest OS 31-1.

もし、受信側ゲストOS31-1での割り込み処理後の受信処理に必要なCPU割当時間が不足しているならば、ゲストOSスケジューラ221はステップS62の処理を実行する。このステップS62においてゲストOSスケジューラ221は、CPU時間割当テーブル222を参照することにより、受信側ゲストOS31-1用のCPU追加割当時間の時間帯外で、最も近い将来に受信側ゲストOS31-1に割り当てられる予定の時間帯となるCPU時間(ディスパッチ予定時間)を探す。   If the CPU allocation time necessary for the receiving process after the interrupt process in the receiving guest OS 31-1 is insufficient, the guest OS scheduler 221 executes the process of step S62. In this step S62, the guest OS scheduler 221 refers to the CPU time allocation table 222, so that the reception side guest OS 31-1 will be moved to the reception side guest OS 31-1 in the nearest future outside the time zone of the CPU additional allocation time for the reception side guest OS 31-1. The CPU time (scheduled dispatch time) that is the time zone to be allocated is searched.

次にゲストOSスケジューラ221は、現在受信側ゲストOS31-1用に設定されているCPU追加割当時間の時間帯の直後に他のゲストOSに割り当てられるように予定されているCPU時間を、ステップS62で探し求められた、受信側ゲストOS31-1に割り当てられる予定のCPU時間とを入れ替える(ステップS63)。つまり、ゲストOSスケジューラ221は、CPU追加割当時間の時間帯の直後に他のゲストOSに割り当てられるように予定されているCPU時間を受信側ゲストOS31-1用のCPU追加割当時間に追加し、ステップS62で探し求められた、受信側ゲストOS31-1に割り当てられる予定のCPU時間を当該他のゲストOS用に変更する操作を、CPU時間割当テーブル222上で行う。ステップS63が最初に実行される段階では、受信側ゲストOS31-1用に設定されているCPU追加割当時間の時間帯は存在しない。この場合、CPU追加割当時間の時間帯の直後に他のゲストOSに割り当てられるように予定されているCPU時間の時間帯は、送信側ゲストOS31-2が受信側ゲストOS31-1に対して通信を行った時点が属するCPU時間の時間帯であり、送信側ゲストOS31-2用のCPU時間の時間帯である。   Next, the guest OS scheduler 221 sets the CPU time scheduled to be allocated to another guest OS immediately after the CPU additional allocation time currently set for the receiving guest OS 31-1, in step S62. The CPU time scheduled to be allocated to the reception-side guest OS 31-1 searched for in step S63 is replaced (step S63). That is, the guest OS scheduler 221 adds the CPU time scheduled to be assigned to another guest OS immediately after the CPU additional allocation time period to the CPU additional allocation time for the receiving guest OS 31-1. The CPU time allocation table 222 performs an operation of changing the CPU time scheduled to be allocated to the receiving guest OS 31-1 searched for in step S62 for the other guest OS. At the stage when step S63 is first executed, there is no time zone for additional CPU allocation time set for the reception-side guest OS 31-1. In this case, the sending guest OS 31-2 communicates with the receiving guest OS 31-1 during the CPU time scheduled to be assigned to another guest OS immediately after the CPU additional assigning time. This is the time zone of the CPU time to which the point of time belongs, and the time zone of the CPU time for the sending guest OS 31-2.

ゲストOSスケジューラ221は、上述のステップS62及びS63を、受信側ゲストOS31-1に追加で割り当てられるCPU時間(CPU追加割当時間)が不足しなくなるまで(ステップS61)、繰り返す。   The guest OS scheduler 221 repeats steps S62 and S63 described above until there is no shortage of CPU time (CPU additional allocation time) that is additionally allocated to the reception-side guest OS 31-1 (step S61).

図11は、図10のフローチャートの示す手順に従ってゲストOS31-1〜32-3を対象とするスケジュールが調整された際の調整前後のスケジュールの例を示す。図11の例では、時点t10においてゲストOS31-2に2msのCPU時間が割り当てられる。このCPU時間割り当ての直後にゲストOS31-2がゲストOS31-1への通信を行ったものとする。   FIG. 11 shows an example of the schedule before and after adjustment when the schedule for the guest OSs 31-1 to 32-3 is adjusted according to the procedure shown in the flowchart of FIG. In the example of FIG. 11, 2 ms of CPU time is allocated to the guest OS 31-2 at time t10. Assume that the guest OS 31-2 communicates with the guest OS 31-1 immediately after this CPU time allocation.

割り込み管理部23は、この時点(t10の時点)で受信側ゲストOS31-1へのゲストOS間通信の受信割り込みを発生する。するとゲストOSスケジューラ221によって、CPU時間割当テーブル222の示すスケジュールの調整が行われる。この調整では、図11(a)において矢印111で示されるように、時点t10に送信側ゲストOS31-2に割り当てられる予定の(割り当てられた)時点t10から時点t11(=t10+2ms)までの時間帯の2msのCPU時間と、時点t12に受信側ゲストOS31-1に割り当てられる予定の時点t12(=t10+4ms)から時点t13(=t10+6ms)までの時間帯の2msのCPU時間との入れ替えが行われる。同様に、図11(a)において矢印112で示されるように、時点t11(=t10+2ms)にゲストOS31-3に割り当てられる予定の時点t11(=t10+2ms)から時点t12(=t10+4ms)までの時間帯の2msのCPU時間と、時点t14(=t10+10ms)に受信側ゲストOS31-1に割り当てられる予定の時点t14(=t10+10ms)から時点t15(=t10+12ms)までの時間帯の2msのCPU時間との入れ替えが行われる。   The interrupt management unit 23 generates a reception interrupt of communication between guest OSs to the reception-side guest OS 31-1 at this time (time t10). Then, the guest OS scheduler 221 adjusts the schedule indicated by the CPU time allocation table 222. In this adjustment, as indicated by an arrow 111 in FIG. 11A, a time period from a time t10 scheduled to be assigned to the sending guest OS 31-2 at time t10 to a time t11 (= t10 + 2 ms). The 2 ms CPU time is replaced with the 2 ms CPU time in the time zone from the time t12 (= t10 + 4 ms) scheduled to be assigned to the receiving guest OS 31-1 at the time t12 to the time t13 (= t10 + 6 ms). Similarly, as indicated by an arrow 112 in FIG. 11A, a time period from time t11 (= t10 + 2 ms) scheduled to be assigned to the guest OS 31-3 at time t11 (= t10 + 2 ms) to time t12 (= t10 + 4 ms). The 2 ms CPU time is replaced with the 2 ms CPU time in the time period from the time t14 (= t10 + 10 ms) to the time t15 (= t10 + 12 ms) scheduled to be assigned to the receiving guest OS 31-1 at the time t14 (= t10 + 10 ms). Is done.

これにより、図11(b)に示されるように、時点t10での受信割り込み直後に、時点t10から時点t12までの、本来ゲストOS31-2及び31-3に順に割り当てられる予定の4msのCPU時間が、受信側ゲストOS31-1に割り当てられる。これとは逆に、本来受信側ゲストOS31-1に割り当てられる予定の、時点t12から時点t13までの2msのCPU時間及び時点t14から時点t15までの2msのCPU時間が、図11(b)に示されるように、それぞれゲストOS31-2及び31-3に割り当てられる。   As a result, as shown in FIG. 11B, immediately after the reception interruption at time t10, the CPU time of 4 ms that is originally scheduled to be sequentially assigned to the guest OSs 31-2 and 31-3 from time t10 to time t12. Are assigned to the receiving guest OS 31-1. On the contrary, the 2 ms CPU time from the time t12 to the time t13 and the 2 ms CPU time from the time t14 to the time t15, which are originally scheduled to be assigned to the receiving guest OS 31-1, are shown in FIG. As shown, guest OSs 31-2 and 31-3 are assigned respectively.

このように、図11の例では、時点t11での受信割り込み直後に、受信側ゲストOS31-1に、当該ゲストOS31-1での受信処理に必要な(ゲストOSコンテキスト241-1に含まれているCPU追加割当時間情報244の示す)値のCPU時間が割り当てられるように、CPU時間割当テーブル222の示すスケジュールが変更される。また、スケジュールされた範囲内において、ゲストOS31-1〜31-3の各々に割り当てられるCPU時間量は均等に保たれる。   As described above, in the example of FIG. 11, immediately after the reception interrupt at time t11, the reception-side guest OS 31-1 requires the reception processing in the guest OS 31-1 (included in the guest OS context 241-1). The schedule indicated by the CPU time allocation table 222 is changed so that the CPU time of the value indicated by the CPU additional allocation time information 244 is allocated. Further, the CPU time amount allocated to each of the guest OSs 31-1 to 31-3 is kept uniform within the scheduled range.

上記第2の変形例では、説明の簡略化のために、ゲストOS31-1〜31-3に本来割り当てられる予定のCPU時間単位で交換が行われることを前提としている。しかし、受信割り込みは、実行中のゲストOSに割り当てられているCPU時間の途中で発生することが一般的である。また、各ゲストOSに割り当てられるCPU時間も、ゲストOS毎に異なることも考えられる。このような場合、ゲストOSスケジューラ221は、各ゲストOSに割り当てられる予定のCPU時間を必要な時間量(例えばゲストOSスケジューラ221が管理する最小時間単位)に分割してスケジュールの調整をすれば良い。なお、スケジュールの範囲内で受信側ゲストOSに割り当てられるCPU時間がまかなえない場合は、更に先のスケジュールを作成することで解決できる。   In the second modified example, for simplification of explanation, it is assumed that the exchange is performed in units of CPU time originally scheduled to be assigned to the guest OSs 31-1 to 31-3. However, the reception interrupt generally occurs in the middle of the CPU time allocated to the guest OS being executed. In addition, the CPU time allocated to each guest OS may be different for each guest OS. In such a case, the guest OS scheduler 221 may adjust the schedule by dividing the CPU time scheduled to be assigned to each guest OS into a necessary amount of time (for example, the minimum time unit managed by the guest OS scheduler 221). . If the CPU time allocated to the receiving guest OS cannot be covered within the schedule, it can be solved by creating a further schedule.

[第3の変形例]
次に、上記実施形態の第3の変形例について説明する。第3の変形例の特徴は、受信側ゲストOSへの受信割り込み時に当該ゲストOSに追加で割り当てられるCPU時間を、送信側ゲストOSに割り当てられる予定のCPU時間でまかなうことにある。このように第3の変形例では、受信側ゲストOSの受信割り込み処理の後に行われる受信処理用に、送信側ゲストOSに割り当てられる予定のCPU時間を譲渡する手法が適用される。この手法は、例えば、送信側ゲストOSの処理の進行に受信側ゲストOSの応答が必要な場合の通信モデルに適用できる。また、この手法は、受信側ゲストOS(CPU時間が追加で割り当てられる受信側ゲストOS)が関係するゲストOS間通信とは無関係のゲストOSに対するCPU時間の割り当てに影響を与えない。
[Third Modification]
Next, a third modification of the above embodiment will be described. The feature of the third modification is that the CPU time additionally allocated to the guest OS at the time of reception interruption to the receiving guest OS is covered by the scheduled CPU time allocated to the transmitting guest OS. As described above, in the third modification, a method of transferring the CPU time scheduled to be assigned to the transmission side guest OS is applied for the reception process performed after the reception interrupt process of the reception side guest OS. This technique can be applied, for example, to a communication model in a case where a response of the receiving guest OS is required for the progress of processing of the transmitting guest OS. In addition, this method does not affect the allocation of CPU time to the guest OS that is unrelated to the communication between guest OSs related to the reception-side guest OS (reception-side guest OS to which CPU time is additionally allocated).

以下、送信側ゲストOSに割り当てられる予定のCPU時間を受信側ゲストOSの受信処理用に譲渡することによって実現されるスケジュール調整の手順について、図12のフローチャートを参照して説明する。   Hereinafter, the procedure of schedule adjustment realized by transferring the CPU time scheduled to be allocated to the transmission side guest OS for reception processing of the reception side guest OS will be described with reference to the flowchart of FIG.

今、ゲストOS31-1がゲストOS(送信側ゲストOS)31-2からの通信の送信データを受信し、そのゲストOS(受信側ゲストOS)31-1に受信割り込みが発生したものとする。この場合、第2の変形例と同様にスケジュールの変更の必要が発生する。   Now, it is assumed that the guest OS 31-1 has received communication transmission data from the guest OS (transmission-side guest OS) 31-2 and a reception interrupt has occurred in the guest OS (reception-side guest OS) 31-1. In this case, the schedule needs to be changed as in the second modification.

するとゲストOSスケジューラ221は、CPU時間割当テーブル222を参照して、受信割り込み時点における当該CPU時間割当テーブル222の示すスケジュール上の位置(つまり現在のスケジュール位置)を確認する(ステップS71)。次にゲストOSスケジューラ221は、受信割り込み時点から最も最近に確認されたスケジュール位置までに受信側ゲストOS31-1に割り当てられる予定のCPU時間(CPU割当予定時間)の合計量が、当該ゲストOS31-1に固有のCPU追加割当時間情報244の示す値(つまりゲストOS31-1の受信処理に必要な時間)以上であるかを判定する(ステップS72)。   Then, the guest OS scheduler 221 refers to the CPU time allocation table 222 and confirms the position on the schedule (that is, the current schedule position) indicated by the CPU time allocation table 222 at the reception interrupt time (step S71). Next, the guest OS scheduler 221 determines that the total amount of CPU time (CPU allocation scheduled time) scheduled to be allocated to the receiving guest OS 31-1 from the reception interrupt point to the most recently confirmed schedule position is the guest OS 31- It is determined whether it is equal to or greater than the value indicated by the CPU additional allocation time information 244 unique to 1 (that is, the time required for the reception processing of the guest OS 31-1) (step S72).

もし、上述のCPU割当予定時間の合計量が、ゲストOS31-1の受信処理に必要な時間に満たないならば(ステップS72)、ゲストOSスケジューラ221は、最も最近に確認されたスケジュール位置が送信側ゲストOS31-2にCPU時間が割り当てられるディスパッチ予定位置であるかを判定する(ステップS73)。もし、このステップS73での判定がYESであるならば、ゲストOSスケジューラ221は、CPU時間割当テーブル222の示す該当する送信側ゲストOS31-2用のスケジュール位置(ここでは現在のスケジュール位置)を受信側ゲストOS31-1(へのディスパッチ予定)用に変更する(ステップS74)。つまりCPU時間割当テーブル222は、本来送信側ゲストOS31-2に割り当てられるべき2msのCPU時間を、受信側ゲストOS31-1に譲渡させる。この変更(譲渡)により、受信割り込み時点から最も最近に確認されたスケジュール位置までにおける受信側ゲストOS31-1へのCPU割当予定時間の合計量が2msだけ増加する。   If the total amount of the CPU allocation scheduled time described above is less than the time required for the reception process of the guest OS 31-1, (step S72), the guest OS scheduler 221 transmits the most recently confirmed schedule position. It is determined whether or not it is a scheduled dispatch position where the CPU time is allocated to the side guest OS 31-2 (step S73). If the determination in step S73 is YES, the guest OS scheduler 221 receives the corresponding schedule position for the sending guest OS 31-2 shown in the CPU time allocation table 222 (here, the current schedule position). Is changed to the side guest OS 31-1 (to be dispatched to) (step S74). That is, the CPU time allocation table 222 assigns the 2 ms CPU time that should originally be allocated to the transmission side guest OS 31-2 to the reception side guest OS 31-1. As a result of this change (transfer), the total amount of CPU allocation scheduled time to the reception-side guest OS 31-1 from the reception interrupt point to the most recently confirmed schedule position is increased by 2 ms.

ゲストOSスケジューラ221は、ステップS74を実行するとステップS75に進む。これに対し、ステップS73での判定がNOであるならば、ゲストOSスケジューラ221は、ステップS74をスキップしてステップS75に進む。なお、ステップS73での判定がNOであっても、最も最近に確認されたスケジュール位置が受信側ゲストOS31-1にCPU時間が割り当てられるディスパッチ予定位置であるならば、受信割り込み時点から最も最近に確認されたスケジュール位置までにおける受信側ゲストOS31-1へのCPU割当予定時間の合計量は2msだけ増加する。   After executing step S74, the guest OS scheduler 221 proceeds to step S75. On the other hand, if the determination in step S73 is no, the guest OS scheduler 221 skips step S74 and proceeds to step S75. Even if the determination in step S73 is NO, if the most recently confirmed schedule position is a dispatch scheduled position where the CPU time is allocated to the reception-side guest OS 31-1, the latest position from the reception interrupt point is most recently determined. The total amount of CPU allocation scheduled time for the reception-side guest OS 31-1 up to the confirmed schedule position increases by 2 ms.

ステップS75においてゲストOSスケジューラ221は、CPU時間割当テーブル222の次のスケジュール位置を確認する。するとゲストOSスケジューラ221は、ステップS71で現在のスケジュール位置が確認された場合と同様に、ステップS72以降の処理を行う。   In step S75, the guest OS scheduler 221 confirms the next schedule position in the CPU time allocation table 222. Then, the guest OS scheduler 221 performs the processing from step S72 onward in the same manner as when the current schedule position is confirmed in step S71.

即ちゲストOSスケジューラ221は、上述のような受信側ゲストOS31-1へのCPU割当予定時間の合計量が、当該ゲストOS31-1の受信処理に必要な時間に対して依然として不足しているかを判定する(ステップS72)。   That is, the guest OS scheduler 221 determines whether or not the total amount of CPU allocation scheduled time for the receiving guest OS 31-1 as described above is still insufficient with respect to the time required for the reception processing of the guest OS 31-1. (Step S72).

もし、上述のような受信側ゲストOS31-1へのCPU割当予定時間の合計量が不足しているならば(ステップS72)、ゲストOSスケジューラ221は、最も最近に確認されたスケジュール位置、つまりステップS75で確認された次のスケジュール位置が、送信側ゲストOS31-2にCPU時間が割り当てられるスケジュール位置であるかを判定する(ステップS73)。もし、ステップS73の判定がYESであるならば、ゲストOSスケジューラ221は、ステップS75で確認された次のスケジュール位置を受信側ゲストOS31-1用に変更する(ステップS74)。そして、再びステップS75及びS72が行われる。これに対してステップS73の判定がNOであるならば、ステップS74をスキップして、再びステップS75及びS72が行われる。   If the total amount of scheduled CPU allocation time for the receiving guest OS 31-1 as described above is insufficient (step S72), the guest OS scheduler 221 determines the most recently confirmed schedule position, that is, step It is determined whether or not the next schedule position confirmed in S75 is a schedule position where CPU time is allocated to the transmission side guest OS 31-2 (step S73). If the determination in step S73 is yes, the guest OS scheduler 221 changes the next schedule position confirmed in step S75 for the reception-side guest OS 31-1 (step S74). Then, steps S75 and S72 are performed again. On the other hand, if the determination in step S73 is no, step S74 is skipped and steps S75 and S72 are performed again.

やがて、上述のような受信側ゲストOS31-1へのCPU割当予定時間の合計量が、当該ゲストOS31-1の受信処理に必要な時間以上となったならば(ステップS72)、ゲストOSスケジューラ221は図12のフローチャートに従うスケジュール調整処理を終了する。   Eventually, if the total amount of the CPU allocation scheduled time for the receiving guest OS 31-1 as described above becomes equal to or longer than the time required for the receiving process of the guest OS 31-1 (step S72), the guest OS scheduler 221 is executed. Ends the schedule adjustment process according to the flowchart of FIG.

このように本実施形態においては、CPU時間割当テーブル222に基づき、受信割り込み発生時点以降にCPU時間が割り当てられる予定(ディスパッチ予定)のゲストOSを順に調べ、送信側ゲストOS31-2用に割り当てられる予定のCPU時間を受信側ゲストOS31-1用に変更する処理を、受信割り込み発生時点以降に当該ゲストOS31-1に割り当てられることになるCPU時間(CPU割当予定時間)の合計が4msを超えるまで繰り返す。   As described above, in the present embodiment, based on the CPU time allocation table 222, guest OSes scheduled to be allocated (scheduled to be dispatched) after the occurrence of the reception interrupt are sequentially checked and allocated to the sending guest OS 31-2. Processing for changing the scheduled CPU time for the receiving guest OS 31-1 until the total CPU time (scheduled CPU allocation time) to be allocated to the guest OS 31-1 after the occurrence of the reception interrupt exceeds 4 ms. repeat.

図13は、図12のフローチャートの示す手順に従ってゲストOS31-1〜32-3のうちのゲストOS31-1及び31-2を対象とするスケジュールが調整された際の調整前後のスケジュールの例を示す。   FIG. 13 shows an example of the schedule before and after adjustment when the schedule for the guest OSs 31-1 and 31-2 of the guest OSs 31-1 to 32-3 is adjusted according to the procedure shown in the flowchart of FIG. .

今、図13(a)における時点t20、即ちゲストOS31-2へのCPU時間の割り当て時点t20の直後に、当該ゲストOS31-2からゲストOS31-1への通信を行ったものとする。VMM20の割り込み管理部23は時点t20で受信側ゲストOS31-1へのゲストOS間通信の受信割り込みを発生する。するとゲストOSスケジューラ221によって、CPU時間割当テーブル222の示すスケジュールの調整が次のように行われる。   Assume that communication from the guest OS 31-2 to the guest OS 31-1 is performed immediately after time t20 in FIG. 13A, that is, immediately after the time t20 at which the CPU time is allocated to the guest OS 31-2. The interrupt management unit 23 of the VMM 20 generates a reception interrupt for the communication between guest OSs to the reception-side guest OS 31-1 at time t20. Then, the guest OS scheduler 221 adjusts the schedule indicated by the CPU time allocation table 222 as follows.

まず、割り込み時点(現時点)t20直後、時点t21までの2msのCPU時間(つまり現在のスケジュール位置のCPU時間)が割り当てられるゲストOS31-2は、送信側ゲストOSである。この場合、時点t20から時点t21までの2msのCPU時間は、矢印130で示されるように、送信側ゲストOS31-2用から受信側ゲストOS31-1用に変更される。   First, the guest OS 31-2 to which the 2 ms CPU time (that is, the CPU time at the current schedule position) up to the time t21 immediately after the interruption time (current time) t20 is assigned is the sending guest OS. In this case, the CPU time of 2 ms from the time point t20 to the time point t21 is changed from the transmission side guest OS 31-2 to the reception side guest OS 31-1, as indicated by the arrow 130.

次の時点t21から時点t22までの2msのCPU時間はゲストOS31-3用に予定されている。このゲストOS31-3は、ゲストOS31-2とゲストOS31-1との間のゲストOS間通信とは無関係である。このため、ゲストOS31-3用に予定されているCPU時間に関してはスケジュール調整は行われない。   The next 2 ms CPU time from time t21 to time t22 is scheduled for the guest OS 31-3. The guest OS 31-3 has nothing to do with the inter-guest OS communication between the guest OS 31-2 and the guest OS 31-1. For this reason, schedule adjustment is not performed regarding the CPU time scheduled for the guest OS 31-3.

次の時点t22から時点t23までの2msのCPU時間は、もともと受信側ゲストOS31-1用に予定されている。したがって、時点t22から時点t23までの対応するスケジュール位置における2msのCPU時間を含めて、割り込み時点(現時点)t20から6msが経過する当該時点t23までに受信側ゲストOS31-1に割り当てられる予定のCPU時間の合計は、当該受信側ゲストOS31-1での割り込み処理直後の受信処理に必要な4msを充足する。この場合、スケジュールの調整は終了する。   The CPU time of 2 ms from the next time point t22 to the time point t23 is originally scheduled for the reception-side guest OS 31-1. Therefore, including the CPU time of 2 ms at the corresponding schedule position from time t22 to time t23, the CPU scheduled to be assigned to the receiving guest OS 31-1 by time t23 when 6 ms elapses from the interrupt time (current time) t20. The total time satisfies 4 ms required for the reception process immediately after the interrupt process in the receiving guest OS 31-1. In this case, the schedule adjustment ends.

第3の変形例によるスケジュール調整では、受信側ゲストOS31-1に追加で割り当てられるCPU時間は連続にはならない。しかし、受信側ゲストOS31-1との間でゲストOS間通信を行う送信側ゲストOS31-2よりも先に、当該受信側ゲストOS31-1にCPU時間が割り当てられるので一般には問題にならない。   In the schedule adjustment according to the third modified example, the CPU time additionally allocated to the receiving guest OS 31-1 is not continuous. However, since CPU time is allocated to the receiving guest OS 31-1 prior to the transmitting guest OS 31-2 that performs inter-guest OS communication with the receiving guest OS 31-1, there is generally no problem.

上記第3の変形例では、第2の変形例と同様に、説明の簡略化のために、ゲストOS31-1〜31-3に本来割り当てられる予定のCPU時間単位で譲渡(割り当て予定先のゲストOSの変更)が行われることを前提としている。しかし、受信割り込みは、実行中のゲストOSに割り当てられているCPU時間の途中で発生することが一般的である。また、各ゲストOSに割り当てられるCPU時間も、ゲストOS毎に異なることも考えられる。このような場合、ゲストOSスケジューラ221は、各ゲストOSに割り当てられる予定のCPU時間を必要な時間量(例えばゲストOSスケジューラ221が管理する最小時間単位)に分割してスケジュールの調整をすれば良い。   In the third modified example, as in the second modified example, for simplification of description, transfer is performed in the CPU time unit that is originally allocated to the guest OSs 31-1 to 31-3 (guests to be allocated). (OS change) is assumed to be performed. However, the reception interrupt generally occurs in the middle of the CPU time allocated to the guest OS being executed. In addition, the CPU time allocated to each guest OS may be different for each guest OS. In such a case, the guest OS scheduler 221 may adjust the schedule by dividing the CPU time scheduled to be assigned to each guest OS into a necessary amount of time (for example, the minimum time unit managed by the guest OS scheduler 221). .

なお、本発明は、上記実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。   In addition, this invention is not limited to the said embodiment or its modification example as it is, A component can be deform | transformed and embodied in the range which does not deviate from the summary in an implementation stage. In addition, various inventions can be formed by appropriately combining a plurality of constituent elements disclosed in the embodiment or its modification. For example, you may delete a some component from all the components shown by embodiment or its modification.

本発明の一実施形態に係る仮想計算機システムの構成を示すブロック図。1 is a block diagram showing a configuration of a virtual machine system according to an embodiment of the present invention. CPU時間割当テーブルによって表されるスケジュール例を示す図。The figure which shows the example of a schedule represented by CPU time allocation table. ゲストOSコンテキストのデータ構造例を示す図。The figure which shows the data structure example of a guest OS context. CPU時間割当テーブルによって表されるスケジュールの問題を説明するための図The figure for demonstrating the problem of the schedule represented by CPU time allocation table 変更後のCPU時間割当テーブルによって表されるスケジュールの例を示す図。The figure which shows the example of the schedule represented by the CPU time allocation table after a change. 同実施形態におけるスケジュール調整処理の手順を示すフローチャート。6 is a flowchart showing a procedure of schedule adjustment processing in the embodiment. 同実施形態において第1のタイプの通信が行われる状況でシステムを最適化するための処理手順を示すフローチャート。5 is a flowchart showing a processing procedure for optimizing the system in a situation where the first type of communication is performed in the embodiment. 同実施形態において第2のタイプの通信が行われる状況でシステムを最適化するための処理手順を示すフローチャート。7 is a flowchart showing a processing procedure for optimizing the system in a situation where the second type of communication is performed in the embodiment. 同実施形態の第1の変形例で適用される、送信側ゲストOSによる受信側ゲストOSの臨時のCPU追加割当時間指定及び当該指定に基づくスケジュール調整の手順を示すフローチャート。9 is a flowchart showing a procedure for temporary CPU additional allocation time designation of the reception-side guest OS by the transmission-side guest OS and schedule adjustment based on the designation, which is applied in the first modification of the embodiment. 同実施形態の第2の変形例で適用されるスケジュール調整の手順を示すフローチャート。9 is a flowchart showing a procedure for schedule adjustment applied in a second modification of the embodiment. 図10のフローチャートの示す手順に従ってスケジュールが調整された際の調整前後のスケジュールの例を示す図。The figure which shows the example of the schedule before and behind adjustment when a schedule is adjusted according to the procedure which the flowchart of FIG. 10 shows. 同実施形態の第3の変形例で適用されるスケジュール調整の手順を示すフローチャート。9 is a flowchart showing a procedure for schedule adjustment applied in a third modification of the embodiment. 図12のフローチャートの示す手順に従ってスケジュールが調整された際の調整前後のスケジュールの例を示す図。The figure which shows the example of the schedule before and behind adjustment when a schedule is adjusted according to the procedure which the flowchart of FIG. 12 shows.

符号の説明Explanation of symbols

1…物理計算機、10…ハードウェア(HW)、11…CPU(実CPU)、20…仮想計算機マネージャ(VMM)、21…ゲストOS間通信管理部、22…ゲストOS実行管理部、23…割り込み管理部、24…ゲストOSコンテキスト管理部、210…ゲストOS間通信IF、211…ゲストOS間通信監視部、221…ゲストOSスケジューラ、222…CPU時間割当テーブル、223…ディスパッチャ、240…CPU追加割当時間設定部、241-1〜241-3…ゲストOSコンテキスト、242…ゲストOS固有データ、243…割り込み要因レジスタ、244…CPU追加割当時間情報。   DESCRIPTION OF SYMBOLS 1 ... Physical computer, 10 ... Hardware (HW), 11 ... CPU (real CPU), 20 ... Virtual computer manager (VMM), 21 ... Communication management part between guest OSs, 22 ... Guest OS execution management part, 23 ... Interrupt Management unit, 24 ... Guest OS context management unit, 210 ... Guest OS communication IF, 211 ... Guest OS communication monitoring unit, 221 ... Guest OS scheduler, 222 ... CPU time allocation table, 223 ... Dispatcher, 240 ... CPU additional allocation Time setting unit, 241-1 to 241-3 ... guest OS context, 242 ... guest OS specific data, 243 ... interrupt factor register, 244 ... CPU additional allocation time information.

Claims (12)

CPUを含む物理計算機上で動作する仮想計算機マネージャによって提供される仮想計算機実行環境で複数のゲストOSが時分割で実行される仮想計算機システムにおいて、
前記仮想計算機マネージャは、
前記複数のゲストOSのうちの任意のゲストOSへの割り込みを管理する割り込み管理手段であって、送信側ゲストOSから前記仮想計算機マネージャに与えられる受信側ゲストOSへのゲストOS間通信の要求を受けて、前記受信側ゲストOSでの前記ゲストOS間通信の受信を受信割り込みにより当該受信側ゲストOSに通知する割り込み管理手段と、
前記複数のゲストOSを時分割で実行させるためのスケジュールを管理するスケジューラであって、前記複数のゲストOSのうちの任意のゲストOSへの割り込みの要因が発生し、且つ当該要因が前記ゲストOS間通信の受信である場合に、当該任意のゲストOSを前記受信側ゲストOSとして、当該受信側ゲストOSが所定の割り込み処理を行って、当該割り込み処理後に前記受信割り込みの解除を前記仮想計算機マネージャに通知した後に、当該受信側ゲストOS自身によって行われる受信処理に必要なCPU時間が当該受信側ゲストOSに追加で割り当てられるように前記スケジュールを調整するスケジューラと、
前記スケジューラによって調整された前記スケジュールに従って前記複数のゲストOSをディスパッチするディスパッチャと
を具備することを特徴とする仮想計算機システム。
In a virtual machine system in which a plurality of guest OSs are executed in a time-sharing manner in a virtual machine execution environment provided by a virtual machine manager that operates on a physical machine including a CPU,
The virtual machine manager is
Interrupt management means for managing an interrupt to an arbitrary guest OS among the plurality of guest OSs, wherein a request for inter-guest OS communication from the sending guest OS to the receiving guest OS is given to the virtual machine manager. An interrupt management means for notifying the reception guest OS by reception interrupt of reception of the communication between the guest OSs in the reception guest OS ;
A scheduler for managing a schedule for executing the plurality of guest OSs in a time-sharing manner, wherein an interrupt factor to an arbitrary guest OS among the plurality of guest OSs occurs, and the factor is the guest OS In the case of reception of inter-communication, the virtual machine manager cancels the reception interrupt after the interrupt processing, with the arbitrary guest OS as the reception guest OS, and the reception guest OS performs a predetermined interrupt processing. A scheduler that adjusts the schedule so that the CPU time required for the reception process performed by the receiving guest OS itself is additionally allocated to the receiving guest OS,
A virtual machine system comprising: a dispatcher that dispatches the plurality of guest OSs according to the schedule adjusted by the scheduler.
前記割り込み管理手段は、前記ゲストOS間通信の受信を受信割り込みにより前記受信側ゲストOSに通知する前に、前記受信側ゲストOSに固有のゲストOSコンテキストに含まれている割り込み要因レジスタ中のゲストOS間通信受信ビットを第1の状態に設定し、
前記受信側ゲストOSによって行われる前記割り込み処理は、当該受信側ゲストOSが前記ゲストOS間通信受信ビットの前記第1の状態に基づき割り込み要因を確認して、当該ゲストOS間通信受信ビットを前記第1の状態とは異なる第2の状態に設定する処理を含む
ことを特徴とする請求項1記載の仮想計算機システム。
The interrupt management means, before notifying the reception side guest OS of the reception of the communication between the guest OSs by a reception interrupt, the guest in the interrupt factor register included in the guest OS context specific to the reception side guest OS Set the inter-OS communication receive bit to the first state,
The interrupt processing performed by the receiving guest OS confirms the interrupt factor based on the first state of the inter-guest OS communication receiving bit, and the receiving guest OS transmits the inter-guest OS communication receiving bit. The virtual computer system according to claim 1 , further comprising a process of setting to a second state different from the first state .
前記仮想計算機マネージャは、
前記複数のゲストOSの各々のゲストOSコンテキストであって、前記ゲストOS間通信受信ビットに加えて、前記受信割り込みの解除後の受信処理に必要なCPU時間の値をCPU追加割当時間設定値として含むゲストOSコンテキストを管理するゲストOSコンテキスト管理手段と、
ゲストOS間通信を監視することによって通信スループットを観測するゲストOS間通信監視手段と、
前記ゲストOS間通信監視手段による通信スループットの観測結果に基づき、対応するゲストOSに固有の前記ゲストOSコンテキストに含まれている前記CPU追加割当時間設定値を変更するCPU追加割当時間設定手段とを更に具備し、
前記スケジューラは、前記受信側ゲストOSに固有の前記ゲストOSコンテキストに含まれている受信割り込み解除後の受信処理に必要なCPU追加割当時間設定値に基づき前記スケジュールを調整する
とを特徴とする請求項記載の仮想計算機システム。
The virtual machine manager is
In each guest OS context of the plurality of guest OSes, in addition to the inter-guest OS communication reception bit, a CPU time value necessary for reception processing after the reception interrupt is canceled is set as a CPU additional allocation time setting value. A guest OS context management means for managing a guest OS context including:
A guest OS communication monitoring means for observing communication throughput by monitoring communication between guest OSes;
Based on the guest OS communication monitoring means according to the communication throughput observations, corresponding to the guest OS and a CPU additional allocation time setting means for changing the CPU additional allocation time setting value included in the specific of the guest OS context In addition,
The scheduler adjusts the schedule based on a CPU additional allocation time setting value required for reception processing after reception interrupt cancellation included in the guest OS context specific to the receiving guest OS.
Virtual computer system according to claim 2, wherein the this.
前記スケジューラは、特定の時間帯において、前記複数のゲストOSの各々に対するCPU時間の割当量がスケジュール調整前後で一定量に保たれるように前記スケジュールを調整することを特徴とする請求項1記載の仮想計算機システム。   2. The scheduler adjusts the schedule so that an allocation amount of CPU time for each of the plurality of guest OSs is kept constant before and after schedule adjustment in a specific time zone. Virtual computer system. 前記スケジューラは、前記受信側ゲストOSに追加でCPU時間が割り当てられる第1の時間帯に他のゲストOSに割り当てられる予定の第2の時間帯が含まれている場合、前記第2の時間帯と、前記第1の時間帯より後の当該受信側ゲストOSに割り当てられる予定の第3の時間帯とを入れ替えることを特徴とする請求項4記載の仮想計算機システム。   When the second time zone scheduled to be assigned to another guest OS is included in the first time zone in which the CPU time is additionally assigned to the reception-side guest OS, the scheduler includes the second time zone. 5. The virtual machine system according to claim 4, wherein the virtual machine system is replaced with a third time zone scheduled to be assigned to the receiving guest OS after the first time zone. 前記スケジューラは、前記受信側ゲストOSに追加で割り当てられるCPU時間に、前記送信側ゲストOSに割り当てられる予定のCPU時間を充当することを特徴とする請求項1記載の仮想計算機システム。   The virtual machine system according to claim 1, wherein the scheduler allocates a CPU time scheduled to be allocated to the transmitting guest OS to a CPU time additionally allocated to the receiving guest OS. CPUを含む物理計算機上で動作する仮想計算機マネージャによって提供される仮想計算機実行環境で複数のゲストOSが時分割で実行される仮想計算機システムにおいて、前記複数のゲストOSを時分割で実行させるためのスケジュールを調整するスケジュール調整方法であって、
送信側ゲストOSから前記仮想計算機マネージャに与えられる受信側ゲストOSへのゲストOS間通信の要求を受けて、前記仮想計算機マネージャが、前記受信側ゲストOSでの前記ゲストOS間通信の受信を受信割り込みにより当該受信側ゲストOSに通知するステップと、
前記複数のゲストOSのうちの任意のゲストOSへの割り込みの要因が発生した場合に、当該要因が送信側ゲストOSからのゲストOS間通信に伴う前記任意のゲストOSでの前記ゲストOS間通信の受信であるかを前記仮想計算機マネージャが判定するステップと、
前記任意のゲストOSへの割り込みの要因がゲストOS間通信の受信である場合に、前記仮想計算機マネージャが、前記任意のゲストOSを前記受信側ゲストOSとして前記スケジュールを調整するステップであって、当該受信側ゲストOSが所定の割り込み処理を行って、当該割り込み処理後に前記受信割り込みの解除を前記仮想計算機マネージャに通知した後に、当該受信側ゲストOS自身によって行われる受信処理に必要なCPU時間が当該受信側ゲストOSに追加で割り当てられるように、前記仮想計算機マネージャが前記スケジュールを調整するステップと
を具備することを特徴とするスケジュール調整方法。
In a virtual machine system in which a plurality of guest OSs are executed in a time division in a virtual machine execution environment provided by a virtual machine manager that operates on a physical computer including a CPU, the plurality of guest OSs are executed in a time division manner A schedule adjustment method for adjusting a schedule,
Upon receiving a request for inter-guest OS communication from the sending guest OS to the receiving guest OS given to the virtual machine manager, the virtual machine manager receives the reception of the inter-guest OS communication in the receiving guest OS. A step of notifying the receiving guest OS by interruption;
When an interrupt factor to an arbitrary guest OS among the guest OSs occurs, the inter-guest OS communication in the arbitrary guest OS is caused by the inter-guest OS communication from the sending guest OS. The virtual machine manager determining whether it is received,
The virtual machine manager adjusting the schedule with the arbitrary guest OS as the receiving guest OS when the interrupt factor to the arbitrary guest OS is reception of communication between guest OSes , After the receiving guest OS performs predetermined interrupt processing and notifies the virtual machine manager of the cancellation of the receiving interrupt after the interrupt processing, the CPU time required for the receiving processing performed by the receiving guest OS itself The virtual machine manager adjusts the schedule so as to be additionally assigned to the receiving guest OS. A schedule adjustment method comprising:
前記通知するステップにおいて前記前記仮想計算機マネージャは、前記ゲストOS間通信の受信を受信割り込みにより前記受信側ゲストOSに通知する前に、前記仮想計算機マネージャが有するゲストOSコンテキスト管理手段によって管理される前記複数のゲストOSの各々のゲストOSコンテキストのうちの、前記受信側ゲストOSに固有のゲストOSコンテキストに含まれている割り込み要因レジスタ中のゲストOS間通信受信ビットを第1の状態に設定し、
前記受信側ゲストOSによって行われる前記割り込み処理は、当該受信側ゲストOSが前記ゲストOS間通信受信ビットの前記第1の状態に基づき割り込み要因を確認して、当該ゲストOS間通信受信ビットを前記第1の状態とは異なる第2の状態に設定する処理を含む
ことを特徴とする請求項7記載のスケジュール調整方法。
In the notifying step, the virtual machine manager is managed by a guest OS context management unit included in the virtual machine manager before notifying the reception guest OS of reception of the communication between guest OSs by a reception interrupt. Set the guest OS communication reception bit in the interrupt factor register included in the guest OS context unique to the receiving guest OS among the guest OS contexts of the plurality of guest OSs to the first state,
The interrupt processing performed by the receiving guest OS confirms the interrupt factor based on the first state of the inter-guest OS communication receiving bit, and the receiving guest OS transmits the inter-guest OS communication receiving bit. The schedule adjustment method according to claim 7 , further comprising a process of setting a second state different from the first state .
前記ゲストOSコンテキストは、前記ゲストOS間通信受信ビットに加えて、前記受信割り込みの解除後の受信処理に必要なCPU時間の値をCPU追加割当時間設定値として含み、
前記スケジュール調整方法は、
前記仮想計算機マネージャが、ゲストOS間通信を監視することによって通信スループットを観測するステップと、
前記通信スループットの観測結果に基づき、対応するゲストOSに固有の前記ゲストOSコンテキストに含まれている前記CPU追加割当時間設定値を前記仮想計算機マネージャが変更するステップとを更に具備し、
前記調整するステップにおいて前記前記仮想計算機マネージャは、前記受信側ゲストOSに固有の前記ゲストOSコンテキストに含まれている前記受信割り込みの解除後の受信処理に必要な前記CPU追加割当時間設定値に基づき、前記スケジュールを調整する
とを特徴とする請求項8記載のスケジュール調整方法。
The guest OS context includes, in addition to the guest OS communication reception bit, a CPU time value necessary for reception processing after the reception interrupt is canceled as a CPU additional allocation time setting value,
The schedule adjustment method is:
The virtual machine manager observing communication throughput by monitoring communication between guest OSes;
Based on said communication throughput observations, further comprising the step of corresponds to the guest OS to specific the guest OS context included the CPU additional allocation time values that are the virtual machine manager to change,
In the adjusting step, the virtual machine manager is based on the CPU additional allocation time setting value necessary for reception processing after the reception interrupt is released, which is included in the guest OS context specific to the receiving guest OS. , Adjust the schedule
Scheduling method of claim 8, wherein the this.
前記調整するステップにおいて前記仮想計算機マネージャは、特定の時間帯において、前記複数のゲストOSの各々に対するCPU時間の割当量がスケジュール調整前後で一定量に保たれるように前記スケジュールを変更することを特徴とする請求項7記載のスケジュール調整方法。 In the adjusting step, the virtual machine manager changes the schedule so that an allocated amount of CPU time for each of the plurality of guest OSs is kept constant before and after the schedule adjustment in a specific time zone. The schedule adjustment method according to claim 7, wherein: 前記調整するステップにおいて前記仮想計算機マネージャは、前記受信側ゲストOSに追加でCPU時間が割り当てられる第1の時間帯に他のゲストOSに割り当てられる予定の第2の時間帯が含まれている場合、前記第2の時間帯と、前記第1の時間帯より後の当該受信側ゲストOSに割り当てられる予定の第3の時間帯とを入れ替えることを特徴とする請求項10記載のスケジュール調整方法。   In the adjusting step, the virtual machine manager includes a second time zone scheduled to be assigned to another guest OS in a first time zone in which CPU time is additionally assigned to the receiving guest OS. The schedule adjustment method according to claim 10, wherein the second time zone and a third time zone scheduled to be allocated to the receiving guest OS after the first time zone are switched. 前記調整するステップにおいて前記仮想計算機マネージャは、前記受信側ゲストOSに追加で割り当てられるCPU時間に、前記送信側ゲストOSに割り当てられる予定のCPU時間を充当することを特徴とする請求項7記載のスケジュール調整方法。   8. The virtual machine manager according to claim 7, wherein in the adjusting step, the virtual machine manager allocates a CPU time scheduled to be allocated to the transmitting guest OS to a CPU time additionally allocated to the receiving guest OS. Schedule adjustment method.
JP2007242929A 2007-09-19 2007-09-19 Virtual computer system and schedule adjustment method in the same system Expired - Fee Related JP4620097B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007242929A JP4620097B2 (en) 2007-09-19 2007-09-19 Virtual computer system and schedule adjustment method in the same system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007242929A JP4620097B2 (en) 2007-09-19 2007-09-19 Virtual computer system and schedule adjustment method in the same system

Publications (2)

Publication Number Publication Date
JP2009075766A JP2009075766A (en) 2009-04-09
JP4620097B2 true JP4620097B2 (en) 2011-01-26

Family

ID=40610682

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007242929A Expired - Fee Related JP4620097B2 (en) 2007-09-19 2007-09-19 Virtual computer system and schedule adjustment method in the same system

Country Status (1)

Country Link
JP (1) JP4620097B2 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9110878B2 (en) * 2012-01-18 2015-08-18 International Business Machines Corporation Use of a warning track interruption facility by a program
WO2014118870A1 (en) * 2013-01-29 2014-08-07 株式会社日立製作所 Computer and control method for computer
US10235211B2 (en) * 2016-04-22 2019-03-19 Cavium, Llc Method and apparatus for dynamic virtual system on chip

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000322277A (en) * 1999-05-12 2000-11-24 Matsushita Electric Ind Co Ltd Task management device

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6162939A (en) * 1984-09-04 1986-03-31 Fujitsu Ltd Dispatching system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000322277A (en) * 1999-05-12 2000-11-24 Matsushita Electric Ind Co Ltd Task management device

Also Published As

Publication number Publication date
JP2009075766A (en) 2009-04-09

Similar Documents

Publication Publication Date Title
KR101781063B1 (en) Two-level resource management method and appratus for dynamic resource management
US9158565B2 (en) Predictable computing in virtualizated distributed computer systems based on partitioning of computation and communication resources
US8146081B2 (en) Method of selecting one of execution schedules of guest OSes and virtual machine monitor employing the method
US8863138B2 (en) Application service performance in cloud computing
CN101242392B (en) Method, device and system for processing series service message
Snir et al. The communication software and parallel environment of the IBM SP2
Hategan et al. Coasters: uniform resource provisioning and access for clouds and grids
KR101474872B1 (en) Method for elastic virtual cluster management for efficient construction of virtual clusters on cloud, apparatus for elastic virtual cluster management and cloud system using the same
KR20160087706A (en) Apparatus and method for resource allocation of a distributed data processing system considering virtualization platform
JP2008226181A (en) Parallel execution program, recording medium storing it, parallel execution device, and parallel execution method
JP2004535615A (en) Shared I / O in partitioned processing environment
JPWO2008117470A1 (en) Virtual computer control program, virtual computer control system, and virtual computer migration method
CN104102548A (en) Task resource scheduling processing method and task resource scheduling processing system
JP4620097B2 (en) Virtual computer system and schedule adjustment method in the same system
Netto et al. Rescheduling co-allocation requests based on flexible advance reservations and processor remapping
TWI296387B (en) Scheduling method for remote object procedure call and system thereof
JP7451438B2 (en) Communication devices, communication systems, notification methods and programs
Wang et al. Galleon: Reshaping the square peg of nfv
JP4265559B2 (en) Data processing apparatus, data processing server, data processing system, and data processing program
JP2017033234A (en) Request reception system, request reception method and program
JP2015064746A (en) Information processing system, control method and control program for information processing system
CN115811549B (en) Cloud edge resource management scheduling method and system supporting hybrid heterogeneous operation
WO2022033037A1 (en) Message management method, device, and serverless system
KR20160144688A (en) Event router for symmetric multiprocessor system virtual machine using queue and method using the same
KR101286159B1 (en) System and Method for Creation and Termination of MPI Parallel Processes and Recordable Medium Storing the Method

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100413

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100614

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101027

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

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees