CN105900066B - 计算机以及基于管理程序的资源调度方法 - Google Patents

计算机以及基于管理程序的资源调度方法 Download PDF

Info

Publication number
CN105900066B
CN105900066B CN201480072730.0A CN201480072730A CN105900066B CN 105900066 B CN105900066 B CN 105900066B CN 201480072730 A CN201480072730 A CN 201480072730A CN 105900066 B CN105900066 B CN 105900066B
Authority
CN
China
Prior art keywords
mentioned
client
management program
cpu
request
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.)
Active
Application number
CN201480072730.0A
Other languages
English (en)
Other versions
CN105900066A (zh
Inventor
竹内理
田岛幸惠
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of CN105900066A publication Critical patent/CN105900066A/zh
Application granted granted Critical
Publication of CN105900066B publication Critical patent/CN105900066B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0712Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)

Abstract

除了管理程序以外,在计算机上运行简易管理程序。在简易管理程序上,在管理程序故障时也想要保证动作持续的客户机操作系统进行动作,在管理程序上,除此以外的客户机操作系统进行动作。管理程序进行资源调度,即决定对各客户机操作系统分配或回收的资源,对于想要保证动作持续的客户机操作系统,由简易管理程序代替管理程序来执行资源的分配或回收。

Description

计算机以及基于管理程序的资源调度方法
技术领域
本发明大体上涉及一种基于管理程序(hypervisor)的资源调度。
背景技术
已知一种使用管理程序使多个客户机操作系统进行动作的计算机。在这种计算机中,使用管理程序中的动态资源调度功能,根据负载来调节向各客户机操作系统分配的资源量。作为资源,一般为物理存储器和物理CPU(Central Processing Unit:中央处理器)。另外,还存在在同一壳体上共存多个客户机操作系统的计算机。
根据应用这种计算机的用途,必须保证高可用性。这种用途的一例为关键任务的用途。管理程序为具有很多功能的机构(典型的是计算机程序,但也可以是安装了计算机程序的硬件电路),因此,难以将管理程序的可用性提高至能够应用于关键任务的用途的水平。因此,面向关键任务的计算机通常无法搭载管理程序。
作为基于管理程序的资源调度方法,已知非专利文献1所记载的方法。根据该方法,管理程序所具有的CPU调度器(资源调度器的一例)进行与OS(Operating System:操作系统)的CPU调度器相同的动作。
管理程序提供虚拟的执行环境(虚拟计算机),将在各虚拟计算机的虚拟CPU上进行动作的客户机操作系统的处理作为过程(process)而进行处理。而且,决定CPU调度器在物理CPU上对哪个客户机操作系统(过程)进行调度。并且,管理程序还执行物理CPU上的执行上下文的切换处理(资源的分派/抢占处理)。
现有技术文献
非专利文献1:VMware Inc.,”The CPU scheduler in VMware vSphere 5.1”,VMware technical white paper,2013.
发明内容
发明要解决的课题
在上述方法中,在管理程序发生故障的情况下,所有客户机操作系统的动作不能持续。这是因为,由于管理程序故障,不能执行向客户机操作系统的资源的分派/抢占处理(分配/回收处理)。所有客户机操作系统无法使用动作所需的资源(CPU、存储器等),从而动作不能持续。
用于解决课题的手段
除了管理程序以外,使简易管理程序在计算机上运行。管理程序具有:包含一个以上的物理存储器和多个物理CPU的多个资源的仿真功能以及资源调度(对各客户机操作系统决定进行分配或回收的资源)的功能,但是简易管理程序具有以下代理功能:代替管理程序进行针对客户机操作系统的资源分配或资源回收。在简易管理程序上,第一客户机操作系统(例如,在管理程序故障时也想保证持续动作的客户机操作系统)进行动作,在管理程序上,第二客户机操作系统(第一客户机操作系统以外的客户机操作系统)进行动作。管理程序进行资源调度,简易管理程序代替管理程序对第一客户机操作系统执行资源的分配或回收。
发明的效果
即使管理程序发生故障也能够保证第一客户机操作系统持续动作。
附图说明
图1是在本发明的实施方式中设想的系统结构。
图2是在本发明的实施例中设想的硬件结构。
图3是分派/抢占请求日志的数据结构。
图4是CPU分配状态的数据结构。
图5是存储器分配状态的数据结构。
图6是管理程序上下文保存区域的数据结构。
图7是管理程序代理上下文保存区域的数据结构。
图8是表示在分派/抢占处理时使用的代码区域和堆栈区域的配置的图。
图9是地址变换表的数据结构。
图10是CPU使用履历管理表的数据结构。
图11是存储器使用履历管理表(1001)的数据结构。
图12是CPU调度器的动作流程(定期启动时)。
图13是CPU调度器的动作流程(从CPU分派代理开始的捕获返回时)。
图14是CPU分派代理和第一客户机操作系统CPU调度器的动作流程(分派请求时)。
图15是CPU分派代理和第一客户机操作系统CPU调度器的动作流程(抢占请求时)。
图16是存储器调度器的动作流程。
图17是存储器分派代理和第一客户机操作系统存储器调度器的动作流程。
图18是特权命令执行部和无状态CPU仿真器的动作流程。
图19是再启动控制的动作流程(定期启动时)。
图20是再启动控制的动作流程(再启动时)。
具体实施方式
以下,说明一实施方式。
此外,在以下说明中,通过“kkk表”的表达说明信息,但是信息也可以通过表以外的数据结构来表达。为了表示不依赖于数据结构,能够将“kkk表”称为“kkk信息”。
另外,在以下说明中,有时将“程序”作为主语来说明处理,但是程序通过物理CPU来执行,由此适当地使用存储资源(例如存储器)和/或通信接口设备(例如通信端口)来进行所决定的处理,因此也可以将处理的主语设为物理CPU。相反,能够解释为通过执行一个以上的程序来进行物理CPU成为主语的处理。另外,物理CPU可以包含用于进行处理器所进行的部分或全部处理的的硬件电路,也可以是指多核处理器的各核。计算机程序可以从程序源码安装于各计算机中。程序源码例如也可以是程序分发服务器或存储介质。
图1表示实施方式的概要。
计算机201具有多个资源(物理资源),该多个资源包含多个物理CPU(111)和物理存储器(112)和(113)。物理存储器(112)为第一物理存储区域的一例,物理存储器(113)为第二物理存储区域的一例。物理存储器(112)和(113)也可以是从一体的物理存储器的存储区域中确保的多个存储区域。
在计算机201中,除了管理程序(101)以外还存在管理程序代理(102),提供虚拟计算机环境。管理程序代理(102)为简易管理程序的一例。在管理程序代理(102)所提供的虚拟计算机上,第一客户机操作系统(103)进行运行,在管理程序(101)所提供的虚拟计算机上,第二客户机操作系统(104)进行运行。对第一客户机操作系统(103)和第二客户机操作系统(104)中的各个客户机操作系统进行动态地对资源进行分配或回收的资源调度。在本实施方式中,作为动态地分配或回收的资源,存在物理CPU和存储区域(在本实施方式中还称为“页”)。
在管理程序代理(102)的动作中使用的资源可以只是多个资源中的第一客户机操作系统(103)能够使用(管理程序(101)不使用)的资源。管理程序代理(102)能够通过更新地址变换表(134)来进行存储器虚拟化,其中,地址变换表表示从客户机操作系统指定的逻辑地址(在本实施方式中客户机物理页编号)以及与该逻辑地址对应的物理地址(在本实施方式中主机物理页编号)之间的对应。由此,能够控制第一客户机操作系统(103)可访问的存储区域(页)。地址变换表(134)例如可以是EPT(扩展页表)或DWAR(DMA(Direct MemoryAccess)Remapping:直接存储器访问重映射)表。
决定资源调度的是管理程序(101),但是对第一客户机操作系统(103)的资源分配或资源回收,由管理程序代理(102)代替管理程序来执行。
管理程序(101)通过向非易失性区域(非易失性存储区域)(114)写入资源的分派/抢占(分配/回收)请求发布来进行该请求发布。管理程序代理(102)从非易失性区域(114)读出该请求,按该请求执行处理。也可以采用易失性的存储区域来代替非易失性区域(114)。另外,非易失性区域(114)也可以存在于计算机(201)外(参照图2)。
如果请求为CPU的分派请求,则将分派对象的物理CPU的上下文从管理程序(101)切换到管理程序代理(102),在该物理CPU上管理程序代理(102)进行动作。并且,管理程序代理(102)向第一客户机操作系统(103)通知能够使用该物理CPU。结果,第一客户机操作系统(103)能够在该物理CPU上开始动作。
如果请求为物理CPU的抢占请求,则管理程序代理(102)向第一客户机操作系统(103)通知无法使用该物理CPU。结果,第一客户机操作系统(103)不在该物理CPU上进行动作。并且,抢占对象的物理CPU的上下文从管理程序代理(102)切换到管理程序(101)。
如果请求为存储器分派请求或存储器抢占请求,则执行地址变换表(134)的更新处理,从而使第一客户机操作系统(103)能够访问所指定的存储区域或不能访问。此时,管理程序代理(102)向第一客户机操作系统(103)进行通知,第一客户机操作系统(103)也能够识别能够访问或不能访问该存储区域。
在管理程序代理(102)所提供的虚拟计算机环境中,物理CPU不被虚拟化,但是物理存储器(112和113)被虚拟化。即,第一客户机操作系统(103)对物理CPU(111)上的寄存器(115)一边直接进行更新一边占用执行。但是,第一客户机操作系统(103)经由地址变换表(134)向物理存储器(112和113)进行存取。此时,物理存储器的地址空间被变换,无法从第一客户机操作系统(103)识别出存在部分物理存储器(区域)。
为了实现动态资源调度,管理程序(101)具有CPU调度器(121)和存储器调度器(122)。这些调度器用于决定物理CPU(111)、物理存储器(112和113)向第一客户机操作系统(103)和第二客户机操作系统(104)的分配。
管理程序代理(102)具有CPU分派代理(126)、存储器分派代理(125)和无状态CPU仿真器124。
上述调度器不直接进行物理CPU(111)、物理存储器(112和113)向第一客户机操作系统的分派处理,而是经由非易失性区域(114)发布资源的分派/抢占请求。参考该请求,管理程序代理(102)的CPU分派代理(126)、存储器分派代理(125)进行CPU/存储器的分派处理。
在CPU的分派处理中,进行物理CPU(111)的执行上下文的切换处理。由此,在物理CPU(111)上进行动作的客户机操作系统进行切换。另外,在存储器的分派处理中,进行地址变换表(134)的设定处理(更新处理)。由此,从第一客户机操作系统(103)能够重新访问或重新无法访问物理存储器(112)的一部分。第一客户机操作系统(103)具有客户机CPU调度器(129)、客户机存储器调度器(128)以及特权命令执行部(127),但是为了实现分派处理,管理程序代理(102)与客户机CPU调度器(129)和存储器调度器(128)进行协作。
通过采取上述那样的结构,能够实现第一客户机操作系统(103)和第二客户机操作系统(104)所使用的CPU/存储器资源的动态调度。
在本实施方式中设想的系统结构中,第一客户机操作系统(103)在物理CPU(111)上直接执行。但是,在根据物理CPU(111)使基于地址变换表(134)的存储器虚拟化功能有效的情况下,有时在第一客户机操作系统(103)执行特权命令时发生捕获。在该情况下为了保证直接执行,管理程序代理(102)具有上述无状态CPU仿真器(124)。无状态CPU仿真器(124)根据捕获到的特权命令,执行物理CPU(111)上的寄存器(115)的更新处理。
另外,即使管理程序(101)发生故障,为了能够使第一客户机操作系统(103)和管理程序代理(102)的动作继续,同时能够使管理程序(101)和第二客户机操作系统(104)再启动和继续处理,将管理程序代理(102)和第一客户机操作系统(103)配置在物理存储器的保护区域(112),即不能从管理程序(101)和第二客户机操作系统(104)进行写入的区域。管理程序(101)和第二客户机操作系统(104)无法破坏该区域的数据、代码。另外,管理程序(101)具有再启动控制(123)。非易失性区域(114)存储请求日志表(131)、CPU分配状态表(132)以及存储器分配状态表(133),再启动控制(131)参照在非易失性区域(114)中保存的这些信息(131)~(133)。然后,再启动控制(123)等待至请求日志表(131)中登录的发布中的请求的处理全部完成为止。并且,再启动控制(123)根据CPU/存储器的分配状态,仅使用管理程序(101)和第二客户机操作系统(104)能够使用的CPU/存储器,进行它们的启动处理。
由管理程序代理(102)代替管理程序(101)进行第一客户机操作系统(103)所使用的资源的分派。另外,在执行第一客户机操作系统(103)的过程中在其间进行CPU仿真的也是管理程序代理(102),而非管理程序(101)。即,即使在管理程序(101)发生故障,第一客户机操作系统(103)和管理程序代理(102)也能够继续动作。管理程序代理(102)的提供功能与管理程序(101)相比少(例如,远少于管理程序(101)),因此,认为即使管理程序(101)发生故障也不难使第一客户机操作系统(103)的动作继续。
另外,构成为将请求日志表(131)、CPU分配状态表(132)以及存储器分配状态表(133)保存在非易失性区域(114)中,在管理程序(101)再启动之后也能够进行参照,由此即使在管理程序发生故障后,也能够仅使第二客户机操作系统(104)和管理程序(101)再启动以及继续处理。
以下,详细说明本实施方式。
图2表示计算机201的硬件结构。
第一客户机操作系统(103)、管理程序代理(102)、第二客户机操作系统(104)以及管理程序(101)那样的程序配置在计算机(201)的物理存储器(112和113)上。物理存储器(112和113)经由CPU总线(202)与多个物理CPU(111)可通信地连接。多个物理CPU(111)中的至少一个CPU(111)读取并执行上述程序。地址变换表(134)配置在物理存储器(112和113)上,用于在执行第一客户机操作系统(103)、第二客户机操作系统(104)时的存储器存取中的地址变换的控制。请求日志表(131)、CPU分配状态表(132)、存储器分配状态表(133)配置在非易失性区域(114)。计算机(102)具有I/O(输入/输出)控制器(203),能够经由I/O控制器(203)和I/O线缆(204),从在物理CPU(111)上执行的程序向非易失性区域(114)进行存取。例如在进行读取处理的情况下,程序对I/O控制器(203)发布I/O请求。I/O控制器(203)经由I/O线缆(204)来读取非易失性区域(114)上的数据,将读取到的数据经由CPU总线(202)写入到物理存储器(112和113)中。在物理CPU(111)上进行动作的程序经由CPU总线(202)取得该写入的数据。I/O线缆(204)也可以是通信网络中的线缆。
图3表示请求日志表(131)的结构。
请求日志表(131)是用于管理日志的表,该日志包含CPU调度器(121)、存储器调度器(122)所发布的资源分派/抢占请求以及通过CPU分派代理(126)和存储器代理(125)对该请求的处理状况。本表针对每个请求具有资源种类(301)、编号(302)、原状态(303)、新状态(304)、客户机物理编号(305)和处理状态(306)的字段。一个列与一个请求的日志对应。
资源种类(301)表示分派/抢占对象为CPU还是存储器。
编号(302)表示成为分派/抢占的对象的资源的编号(识别编号)。在CPU为分派对象的情况下,编号(302)表示分派对象的物理CPU的编号,在存储器为分派对象的情况下,表示分派对象的存储区域(页)的主机物理页编号、识别页的编号。
原状态(303)和新状态(304)表示在分派/抢占处理前和后能够使用对象资源的客户机操作系统的编号。在对象资源未被分配给任何客户机操作系统而处于空闲状态的情况下,原状态(303)和新状态(304)中的至少一个值可以是意味着空闲状态的值“F”。
客户机物理编号(305)不是在由管理程序(101)进行的资源分派/抢占请求中使用,而是仅在管理程序(101)将地址变换表(134)的设定委托给管理程序代理(102)的特殊事例中使用。在本实施方式中,地址变换表(134)由管理程序(101)和管理程序代理(102)共享。此时,为了防止管理程序(101)破坏地址变换表(134),将地址变换表(134)配置在物理存储器(保护区域)(112)。管理程序(101)在更新地址变换表(134)时,将指定了设定所需的信息(例如编号(302)和新状态(304))的地址变更请求发给存储器分派代理(125)。
处理状态(306)表示按照请求的分派/抢占处理的处理状况。当CPU调度器(121)或存储器调度器(122)发布了请求时,将与该请求对应的处理状态(306)更新为“处理中”。另外,当CPU分派代理(126)或存储器分派代理(125)完成了按照请求的处理时,将与该请求对应的处理状态(306)更新为“完成”。
根据请求的种类,仅使用上述字段中的部分字段。例如在请求为CPU的分派/抢占请求的情况下,不使用客户机物理编号(205)的字段。
另外,作为存储器的分派/抢占请求,存在向第一客户机操作系统(103)分配存储区域(页)的分派请求、从第一客户机操作系统(103)回收存储区域的抢占请求以及由管理程序(101)进行的地址变换表(134)的地址更新请求这三种。在为分派请求的情况下,不使用客户机物理编号(305)的字段。在为抢占请求的情况下,不使用编号(302)和客户机物理编号(305)的字段(可以请求回收第一客户机操作系统(103)当前正在使用的任意1页)。另外,在为地址变换请求的情况下,不使用原状态(303)的字段(这是因为在请求前后资源的所有者不变更)。
图4表示CPU分配状态表(132)的结构。
CPU分配状态表(132)针对每个物理CPU具有CPU编号(401)的字段和分配目的地(402)的字段。CPU编号(401)表示物理CPU(111)的编号(识别编号),分配目的地(402)表示被分配了对应的物理CPU(111)的客户机操作系统的编号(识别编号)。关于不存在分配目的地的客户机操作系统为空闲状态的物理CPU(111),分配目的地(402)的值可以是意味着空闲状态的值“F”。另外,关于为分派/抢占处理中的物理CPU(111),分配目的地(402)的值可以是意味着处理中的值“#”。
图5表示存储器分配状态表(133)的结构。
存储器分配状态表(133)针对每一页具有主机物理页编号(501)的字段、客户机物理页编号(502)的字段以及分配目的地(503)的字段。主机物理页编号(501)表示页的编号(识别编号),相当于物理地址。客户机物理页编号(502)表示客户机操作系统所识别的页编号,相当于逻辑地址。分配目的地(503)表示页的分配目的地的客户机操作系统的编号。关于不存在分配目的地的客户机操作系统为空闲状态的页,客户机物理页编号(502)和分配目的地(503)分别可以是意味着空闲状态的值“F”。另外,关于分派/抢占处理中的页,客户机物理页编号(502)和分配目的地(503)分别可以是意味着处理中的值“#”。
图6表示第一上下文保存区域(601)。
第一上下文保存区域(601)可以是物理存储器(113)的一部分区域。CPU调度器(121)在进行CPU分派/抢占处理时,使用第一上下文保存区域(601)。CPU调度器(121)使用第一上下文保存区域(601),进行管理程序代理(102)的执行上下文的保存和恢复。
图7表示第二上下文保存区域(701)。
第二上下文保存区域(701)可以是物理存储器(112)的一部分区域。CPU分派代理(126)在发布CPU分派请求之前,将管理程序(101)的执行上下文保存为本数据结构。另外,在抢占请求处理完成之后,从第二上下文保存区域(701)将管理程序(101)的执行上下文恢复。
图8表示代码区域和堆栈区域的配置。
代码区域和堆栈区域在物理CPU(111)的分派/抢占处理时使用。由CPU调度器(121)发布CPU的分派/抢占请求。将用于进行该处理的代码配置在CPU调度器代码区域(1)(813)中。另外,把进行该处理时使用的堆栈配置在CPU调度器堆栈区域(815)中。这些区域位于物理存储器(113)上。
通过发布捕获命令来发布物理CPU(111)的分派请求。将此时的跳跃目的地登录在由管理程序(101)管理的中断处理程序表(801)中,通过该表(801),实现向CPU分派代理(126)的跳跃。把由CPU分派代理(126)进行的处理的代码配置在CPU分派代理代码区域(812)。另外,此时,堆栈的切换也同时发生,将新的堆栈配置在CPU分派代理堆栈区域(811)。这些区域配置在物理存储器(保护区域)(112)。
通过向抢占对象的物理CPU(111)发出中断通知,发布CPU抢占请求。在发生了针对抢占对象的物理CPU(111)的中断之后,与上述情况同样地,产生中断处理程序表(801)的参照、跳跃、堆栈切换,CPU分派代理(126)被启动。
当CPU分派代理(126)完成了抢占处理时,通过捕获返回使控制返回到CPU调度器(121)。把之后执行的处理的代码配置在CPU调度器代码区域(2)(814)。另外,此时,使用堆栈也被变更为位于CPU调度器堆栈区域(815)中的堆栈。这些区域位于物理存储器(113)上。
当CPU分派代理(126)完成了分派处理时,之后,被分派的物理CPU(111)由管理程序代理(102)和第一客户机操作系统(103)占有执行,因此控制不会返回至CPU调度器(121)。通过上述抢占处理完成,控制返回到CPU调度器(121)。
图9表示地址变换表(134)的结构。
地址变换表(134)针对每个条目(记录)具有:用于保存表示条目是有效还是无效的值(V)(901)的字段、表示页的分配目的地的客户机操作系统的编号的客户机操作系统编号(902)的字段、表示从客户机操作系统指定的页编号的客户机物理页编号(903)的字段以及与客户机物理页编号相对应的主机物理页编号(904)的字段。
图10表示CPU使用履历管理表(1001)的结构。
CPU使用履历管理表(1001)是由CPU调度器(121)管理的表,例如配置在物理存储器113中。CPU履历管理表(1001)针对每个客户机操作系统具有客户机操作系统编号(1011)、最小CPU量(1012)、最大CPU量(1013)以及分配CPU累计(1014)的各字段。客户机操作系统编号(1011)表示客户机操作系统的编号,最小CPU量(1012)表示向该客户机操作系统分配的CPU量的下限值,最大CPU量(1013)表示向该客户机操作系统分配的CPU量的上限值,分配CPU累计(1014)表示被分配的CPU量的累积值。CPU量例如可以是物理CPU的数量。最小CPU量(1012)和最大CPU量(1013)的组合表示向客户机操作系统分配的CPU的量的范围。
图11表示存储器使用履历管理表(1101)的结构。
存储器使用履历管理表(1101)是由存储器调度器(122)管理的表,例如配置在物理存储器113中。存储器使用履历管理表(1101)针对每个客户机操作系统,具有客户机操作系统编号(1111)、最小存储器量(1112)、最大存储器量(1113)以及分配存储器累计(1114)的各字段。客户机操作系统编号(1111)表示客户机操作系统的编号,最小存储器量(1112)表示向该客户机操作系统分配的存储器量的下限值,最大存储器量(1113)表示向该客户机操作系统分配的存储器量的上限值,分配存储器累计(1114)表示被分配的存储器量的累积值。存储器量例如可以是页数或页的总容量。最小存储器量(1112)和最大存储器量(1113)的组合表示向客户机操作系统分配的存储器量的范围。
CPU履历管理表(1001)和存储器履历管理表(1101)分别保存在非易失性区域(114)。表(1001)/(1101)表示CPU/存储器的能够向各客户机操作系统分配的最大/最小的资源量以及分配的资源的总量(累计)。CPU调度器(121)/存储器调度器(122)在进行资源调度时,参考在表(1001)/(1101)中登录的最大/最小的资源量,在要执行超过/低于该最大/最小资源量的调度的情况下,中止该分配。另外,因为针对每个客户机操作系统管理分配资源量(累计),因此能够实现与资源使用实绩相对应的计费。
图12表示CPU调度器(121)的定期启动的动作流程。
在步骤1201中,CPU调度器(121)进行CPU使用履历管理表(1001)的更新处理。具体地说,例如,CPU调度器(121)参照CPU分配状态表(132),对于各客户机操作系统,计算分配CPU数。然后,对于各客户机操作系统,CPU调度器(121)对CPU使用履历管理表(1001)的分配CPU累计(1014)相加计算出的分配CPU数。通过该处理,能够管理CPU使用实绩的累计值,能够实现与该累计值相对应的计费等。
以下,为了容易理解地进行说明,将被分派或抢占资源的客户机操作系统即对象客户机操作系统设为“第一客户机操作系统”。
在步骤1202中,CPU调度器(121)决定针对第一客户机操作系统的调度对象CPU(分派或抢占的物理CPU)。在进行该决定时,CPU调度器(121)从CPU使用履历管理表(1001),对于第一客户机操作系统(103),确定CPU量范围(最小CPU量(1012)和最大CPU量(1013)的组合)。然后,当对与第一客户机操作系统(103)对应的分配CPU累计(1014)相加或减去了调度对象CPU的量时,在超过了确定的CPU量范围的上限或低于确定的CPU量范围的下限的情况下,CPU调度器(121)中止该分配。
在步骤1203中,CPU调度器(121)将在步骤1202中决定的调度状态(第一客户机操作系统(103)与调度后的物理CPU的组合)与CPU分配状态表(132)进行比较,判断分配是否有变化(第一客户机操作系统与物理CPU的组合中是否有变更)。
如果没有变化,则CPU调度器(121)在步骤1204中结束处理。
如果有变化,则CPU调度器(121)在步骤1205中对CPU分配状态表(132)进行更新,具体地说,例如将与第一客户机操作系统(103)对应的分配目的地(402)更新为“#”。
并且,在步骤1206中,CPU调度器(121)进行请求日志表(131)的更新。具体地说,例如CPU调度器(121)设定“CPU”来作为资源种类(301),设定关于第一客户机操作系统(103)的调度对象CPU(111)的编号来作为编号(302),设定在执行调度前后应占有该物理CPU(111)的客户机操作系统的编号来作为原状态(303)和新状态(304),并设定“处理中”来作为处理状态(306)。
在步骤1207中,CPU调度器(121)判断需要向CPU分派代理(126)发布的请求为分派还是抢占。如果请求为分派请求,则进入到步骤1209,如果请求为抢占请求,则进入到步骤1208。
在步骤1208中,CPU调度器(121)对调度对象CPU(111)进行中断通知。在调度对象CPU(111)上进行动作的第一客户机操作系统(103)和管理程序代理(102)中断动作,之后,控制转移到CPU分派代理(130)。另外,还进行堆栈变更,进行将CPU分派代理堆栈区域(811)作为堆栈使用的动作。然后,进入到步骤1212。
在步骤1209中,CPU调度器(121)进行高速缓冲存储器/TLB(TranslationLookaside Buffer:转换后备缓冲器)的闪存处理,具体地说,发布特权命令,该特权命令用于指示高速缓冲存储器/TLB的闪存(向预定的存储目的地(例如非易失性区域114)吐出高速缓冲存储器和TLB内的数据的处理)。由当前的物理CPU(111)(执行管理程序101的物理CPU(111))接受该特权命令,该物理CPU(111)进行高速缓冲存储器/TLB的闪存。在此,高速缓冲存储器和TLB可以是物理存储器113内的区域。
在步骤1210中,CPU调度器(121)向第一上下文保存区域(601)保存执行上下文。执行上下文例如存储当前的物理CPU(111)(执行管理程序101的物理CPU(111))的寄存器(115)的值。
在步骤1211中,CPU调度器(121)发布捕获命令。由此,在正在执行的物理CPU(111)上,CPU分派代理(130)开始进行动作。此时,使用堆栈区域也被变更,之后的CPU分派代理(130)的处理一边使用CPU分派代理堆栈区域(811)的堆栈一边进行动作。
在步骤1212中,CPU调度器(121)完成处理。
图13表示以来自CPU分派代理(126)的捕获返回为契机而启动的CPU调度器(121)的动作流程。
在步骤1301中,CPU调度器(1301)发布hlt命令。通过该hlt命令的发布,CPU调度器(1301)等待至通过后述的再启动控制(123)发布中断通知为止。在CPU分派代理(126)正在代行物理CPU(111)的分派/抢占处理的过程中,由于管理程序(101)的故障管理程序(101)有可能再启动。在该情况下,在步骤1210中保存的上下文也变得无效。通过在该上下文恢复前进行该等待,避免使用该无效上下文,从而能够使管理程序(101)在再启动后继续动作。
在步骤1302中,CPU调度器(121)从管理程序上下文保存区域(301)恢复上下文。由此,将该区域(301)内的上下文所具有的各值加载到物理CPU(111)(执行管理程序101的物理CPU(111))的寄存器(115)。在此之后,管理程序(101)和第二客户机操作系统(104)专有该物理CPU,进行动作。
在步骤1303中,CPU调度器(121)完成处理。
CPU分派代理(126)在通过定期地参照请求日志表(131)而检测出分派请求的情况下(分派的情况下)或者接收到来自CPU调度器(129)的中断通知的情况下(抢占的情况下),开始进行动作。在检测出CPU的分派请求的情况下,进行图14所示的动作流程,在检测出CPU的抢占请求的情况下,进行图15所示的动作流程。
图14表示检测出CPU的分派请求的CPU分派代理(126)和客户机CPU调度器(129)的动作流程。
在图14中,在步骤1401中,CPU分派代理(126)从第二上下文保存区域(701)恢复上下文。具体地说,例如,CPU分派代理(126)将第二上下文保存区域(701)内的上下文所具有的各值加载到物理CPU(111)的寄存器(115)。该物理CPU(111)是执行管理程序代理(102)的物理CPU(111),换言之是执行第一客户机操作系统103的物理CPU(111)。
在步骤1402中,CPU分派代理(126)对第一客户机操作系统(103)的客户机CPU调度器(129)发送对CPU的结构信息进行更新的请求即CPU更新请求。
在步骤1403中,客户机操作系统调度器(129)接收该CPU更新请求。此时,将成为分派对象的物理CPU(111)的编号通知给客户机操作系统调度器(129)。具体地说,例如,CPU更新请求可以包含成为分派对象的物理CPU(111)的编号,可以将成为分派对象的物理CPU(111)的编号与该请求一起通知给客户机操作系统调度器(129)。
在步骤1404中,客户机CPU调度器(129)对第一客户机操作系统(103)的调度对象的CPU列表加上通知的物理CPU编号。之后,第一客户机操作系统(103)能够使用该物理CPU(111)。
在步骤1405中,客户机CPU调度器(129)对CPU分派代理(126)发送CPU更新完成。
在步骤1406中,CPU分派代理(126)接收上述完成。
在步骤1407中,CPU分派代理(126)对请求日志表(131)进行更新,具体地说,例如将与检测到的CPU分派请求对应的处理状态(306)的值更新为“完成”。
然后,在步骤1408中,CPU分派代理(126)完成处理。
图15表示检测出CPU的抢占请求的CPU分派代理(126)和客户机CPU调度器(129)的动作流程。
在步骤1501中,CPU分派代理(126)对第一客户机操作系统(103)的客户机CPU调度器(129)发送CPU更新请求。
在步骤1502中,客户机CPU调度器(129)接收CPU更新请求。此时,通过与图14相同的方法,将成为抢占对象的物理CPU(111)的编号通知给客户机CPU调度器(129)。
在步骤1503中,客户机CPU调度器(129)从第一客户机操作系统(103)的调度对象的CPU列表中删除通知的物理CPU编号。之后,第一客户机操作系统(103)无法使用该物理CPU(111)。
在步骤1504中,客户机CPU调度器(129)将CPU更新完成发送给CPU分派代理(126)。
在步骤1505中,CPU分派代理(126)接收上述完成。
在步骤1506中,CPU分派代理(126)对请求日志表(131)进行更新,具体地说,例如将与检测到的CPU抢占请求对应的处理状态(206)的值更新为“完成”。
在步骤1507中,CPU分派代理(126)向第二上下文保存区域(701)保存上下文。具体地说,例如CPU分派代理(126)将包含有物理CPU(111)的寄存器(115)中记录的值的上下文存储到第二上下文保存区域(701)。该物理CPU(111)为执行管理程序代理(102)的物理CPU(111),换句话说,是执行第一客户机操作系统103的物理CPU(111)。
在步骤1508中,CPU分派代理(126)发布捕获返回命令(参照图8)。通过该捕获返回命令的发布,堆栈进行切换,之后动作的CPU调度器(121)使用CPU调度器堆栈区域(815)来进行动作。
在步骤1509中,动作完成。
图16表示存储器调度器(122)的动作流程。存储器调度器进行定期动作。
在步骤1601中,存储器调度器(122)进行存储器使用履历管理表(1101)的更新处理。具体地说,例如存储器调度器(122)参照存储器分配状态表(133),对各客户机操作系统,计算分配存储器量。然后,存储器调度器(122)针对各客户机操作系统,对存储器用履历管理表(1101)的分配存储器累计(1114)相加计算出的分配存储器量。通过该处理,能够管理存储器使用实绩的累计值,能够实现与该累计值相应的计费等。
在步骤1602中,存储器调度器(122)决定针对第一客户机操作系统的调度对象存储区域(分派或抢占的存储区域(页))。在进行该决定时,存储器调度器(122)从存储器使用履历管理表(1101)中,对于第一客户机操作系统(103),确定存储器量范围(最小存储器量(1111)和最大存储器量(1112)的组合)。然后,当对与第一客户机操作系统(103)对应的分配存储器累计(1114)相加或减去调度对象存储区域的量时,在超过所确定的存储器量范围的上限或低于所确定的存储器量范围的下限的情况下,存储器调度器(122)中止该分配。
在步骤1603中,存储器调度器(122)检查向第一客户机操作系统的存储器分配量是否有变更。
如果没有变更,则在步骤1604中,存储器调度器(122)完成处理。
如果有变更,则在步骤1605中,存储器调度器(122)进行存储器分配状态表(133)的更新。如果所发布的请求需要向第一客户机操作系统(103)分派存储器(分配存储器量增大),则存储器调度器(122)决定成为分配对象的存储区域(物理页)。该物理页为没有分配目的地而成为空闲状态的物理页或向第二客户机操作系统(104)分配的物理页中的能够抢占的页。然后,关于该物理页,在存储器分配状态表(133)中,将客户机物理页编号(502)和分配目的地(503)分别更新为“#”。另一方面,在所发布的请求为向第一客户机操作系统的抢占请求或地址变更请求的情况下,不进行该步骤中的更新处理。
在步骤1606中,存储器调度器(122)向请求日志表(131)进行登录处理。具体地说,例如,存储器调度器(122)将与请求对应的资源种类(301)和处理状态(306)分别更新为“存储器”和“处理中”。如果请求为向第一客户机操作系统(103)的存储器分派请求,则编号(302)为成为对象的物理页编号,原状态(303)和新状态(304)分别为在分派处理前后被分配了该物理页的客户机操作系统的编号。如果请求为向第一客户机操作系统(103)的存储器抢占请求,则原状态(303)和新状态(304)分别为在分派处理前后被分配了该物理页的客户机操作系统的编号。
在步骤1607中,处理完成。
图17表示存储器分派代理(125)和客户机存储器调度器(128)的动作流程。
在步骤1701中,存储器分派代理(125)从请求日志表(131)中提取资源种类(301)为“存储器”且处理状态(306)为“处理中”的请求。
然后,在步骤1702中,存储器分派代理(125)进行提取出的请求(列)的判断。如果编号(302)、原状态(303)和新状态(304)全部进行了设定,则判断请求为存储器分派请求,如果设定了原状态(303)和新状态(304)但没有设定编号(302),则判断请求为存储器抢占请求,如果设定了编号(302)和新状态(304)但没有设定原状态(303),则判断请求为地址变更请求。如果请求为存储器分派/抢占请求,则进入到步骤1703,如果请求为地址变更请求,则进入到步骤1708。
在步骤1703中,存储器分派代理(125)对第一客户机操作系统的客户机存储器调度器(128)发送对存储器的结构信息进行更新的请求即存储器更新请求。
在步骤1704中,客户机存储器调度器(128)接收上述请求。
在步骤1705中,客户机存储器调度器(128)对上述请求进行响应,对第一客户机操作系统所能够使用的客户机物理页编号一览即物理页列表进行页编号的追加/删除。此时,客户机存储器调度器(128)决定要追加/删除的客户机物理页编号。如果请求为存储器分派请求,则客户机存储器调度器(128)决定向列表追加的客户机物理页编号。如果请求为存储器抢占请求,则客户机存储器调度器(128)决定从列表中删除的客户机物理页编号。
在步骤1706中,客户机存储器调度器(128)对存储器分派代理(125)发送存储器更新完成。此时,把在步骤1705中决定的客户机物理页编号通知给存储器分派代理(125)。客户机物理页编号可以包含在完成(应答)中,也可以与完成(应答)分开地通知。
在步骤1707中,存储器分派代理(125)接收上述完成和客户机物理页编号。
在步骤1708中,存储器分派代理(125)进行地址变换表(134)的更新。在请求为存储器分派请求的情况下,存储器分派代理(125)将与该请求对应的新状态(304)所表示的客户机操作系统编号、在步骤1707中接收到的客户机物理页编号以及与请求对应的编号(302)所表示的主机物理页编号(603)登录为地址变换表(134)的客户机操作系统编号(902)、客户机物理页编号(903)以及主机物理页编号(904),并将登录了这些内容的条目中的V(901)的值更新为“1”(有效)。在请求为存储器抢占请求的情况下,存储器分派代理(125)从地址变换表(134)中搜索在客户机操作系统编号(902)和客户机物理页编号(903)中具有与请求对应的新状态(304)所表示的客户机操作系统编号以及在步骤1707中接收到的客户机物理页编号的条目,将搜索到的条目的V(901)的值更新为“0”(无效)。并且,存储器分派代理(125)将与搜索到的条目中的主机物理页编号(904)对应的客户机物理页编号(502)和分配目的地(503)(参照图5)分别更新为“#”。在请求为地址变更请求的情况下,存储器分派代理(125)将与请求对应的新状态(304)所表示的客户机操作系统编号、与请求对应的客户机物理页编号(305)所表示的客户机物理页编号、与请求对应的编号(302)所表示的主机物理页编号(603)登录为地址变换表(134)的客户机操作系统编号(902)、客户机物理页编号(903)以及主机物理页编号(904),并将登录了这些值的条目中的V(901)的值更新为“1”(有效)。
在步骤1709中,存储器分派代理(125)进行高速缓冲存储器/TLB的清除处理,具体地说发布特权命令,该特权命令指示高速缓冲存储器/TLB的清除(高速缓冲存储器和TLB内的数据的删除)。物理CPU(111)(执行管理程序代理10的物理CPU(111))接收该特权命令,该物理CPU(111)进行高速缓冲存储器/TLB的清除。在此高速缓冲存储器和TLB可以是物理存储器112(保护区域)内的区域。
在步骤1710中,存储器分派代理(125)进行请求日志表(131)的更新。具体地说,例如,存储器分派代理(125)将与请求对应的处理状态(306)的值更新为“完成”。另外,存储器分派代理(125)将客户机物理页编号(305)的值更新为在步骤1706中接收到的值。并且,在请求为存储器抢占请求的情况下,将在步骤1708中读出的主机物理页编号(904)的值登录为对应的编号(302)。
在步骤1711中,处理完成。
图18表示特权命令执行部(127)和无状态CPU仿真器(124)的动作流程。
在步骤1801中,特权命令执行部(127)执行特权命令。结果,在物理CPU(111)上发生捕获,控制转移到无状态CPU仿真器(124)。例如,某个供应商的物理CPU具有存储器仿真功能和CPU仿真功能两者,这些功能可以两者均有效或两者均无效,无法仅使单个功能有效。在本实施方式中,作为实现存储器的虚拟化的手段,调出物理CPU所具有的存储器仿真功能(使其有效),但是无法仅使存储器仿真功能有效,因此CPU仿真功能也变得有效。这是发生特权命令(随着执行发生的捕获)的一例。
在步骤1802中,无状态CPU仿真器(124)读出执行中的命令。
在步骤1803中,无状态CPU仿真器(124)根据上述读出的命令,进行物理存储器(112)、物理CPU(111)(执行第一客户机操作系统103的物理CPU(111))的寄存器(115)的更新处理。
在步骤1804中,无状态CPU仿真器(124)发布捕获返回命令,将控制返回到特权命令执行部(127)。
在步骤1805中,特权命令执行部(127)继续进行处理,在步骤1806中完成处理。
图19表示再启动控制(123)的定期动作的流程。
在步骤1901中,再启动控制(123)从请求日志表(131)中搜索处理状态(306)成为“完成”的条目。
在步骤1902中,再启动控制(123)判断是否搜索到上述条目。如果有该条目,则进入到步骤1903,如果没有该条目,则进入到步骤1906。
在步骤1903中,再启动控制(123)对CPU分配状态表(132)和存储器分配状态表(133)进行更新。具体地说,例如,再启动控制(123)在通过步骤1901搜索到的条目为与CPU分派/抢占请求对应的条目的情况下,将与该条目的编号(302)对应的分配目的地(402)的值更新为该条目的新状态(304)所表示的值。另外,例如,再启动控制(123)在通过步骤1901搜索到的条目为与存储器分派请求对应的条目的情况下,将与该条目的编号(302)对应的条目中的分配目的地(502)的值更新为该条目的新状态(304)所表示的值。并且,再启动控制(123)将与该条目的编号(302)对应的条目中的客户机物理页编号(502)的值更新为该条目的客户机物理编号(305)所表示的值。另外,例如,再启动控制(123)在通过步骤1901搜索到的条目为与存储器抢占请求对应的条目的情况下,将与该条目的编号(302)对应的条目中的客户机物理页编号(502)和分配目的地(503)的值分别更新为“F”。另外,例如,再启动控制(123)在通过步骤1901搜索到的条目为与地址更新请求对应的条目情况下,可以不进行任何动作。在上述更新处理之后,再启动控制(123)删除请求日志表(131)的该条目(搜索到的条目)。
在步骤1904中,再启动控制(123)判断在通过步骤1901搜索到的条目中是否包含CPU抢占完成请求。如果包含,则进入到步骤1905,如果没有包含,则进入到步骤1906。
在步骤1905中,再启动控制(123)向成为对象的物理CPU(111)发送中断。通过该中断发送,能够安全地重新开始在步骤1301中停止的CPU调度器(121)的动作。
在步骤1906中处理完成。
图20表示随着故障的管理程序再启动后的再启动控制(123)的动作流程。
在步骤2001中,如果在请求日志表(131)中存在处理状态(306)为“处理中”的条目,则再启动控制(123)等待至该处理状态成为“完成”为止。
在步骤2002中,再启动控制(123)判断等待时间长度是否成为超时。如果为超时,则进入到步骤2003,如果未超时,则进入到步骤2004。
在步骤2003中,再启动控制(123)进行发生了超时的请求的取消处理。具体地说,例如在超时的请求为CPU分派/抢占请求的情况下,再启动控制(123)确定与超时的请求对应的对象条目中的编号(302),将与确定的编号(302)对应的分配目的地(402)的值更新为上述对象条目中的原状态(303)的值。另外,在超时的请求为存储器分派请求的情况下,再启动控制(123)确定与超时的请求对应的对象条目中的编号(302),将与确定的编号(302)对应的客户机物理页编号(502)和分配目的地(503)的值分别更新为“F”。在超时的请求为存储器抢占请求或地址变更请求的情况下,再启动控制(123)不进行任何动作。在上述取消处理已完成的情况下,再启动控制(123)从请求日志表(131)中删除与超时的请求对应的条目。
在步骤2004中,再启动控制(123)进行CPU/存储器分配状态的更新处理。在该更新处理中,与步骤1903同样地,按照请求日志表(131)的处理状态(306)成为“完成”的条目的登录内容,对CPU分配状态表(132)和存储器分配状态表(133)进行更新。
在步骤2005中,根据上述处理的结果,再启动控制(123)确定管理程序(101)、第二客户机操作系统(104)能够使用的CPU/存储器,仅使用该能够使用的CPU/存储器(换言之,不使用管理程序代理(102)、第一客户机操作系统(103)所使用的资源),执行管理程序(101)和第二客户机操作系统(104)的初始化处理(启动(boot)处理)。由此,能够不对管理程序代理(102)、第一客户机操作系统(103)带来影响地,进行管理程序(101)和第二客户机操作系统(104)的再启动。
在步骤2006中,再启动控制(123)进行第一上下文保存区域(601)的初始化处理。通过该初始化,保证安全地进行步骤1302的上下文恢复处理。
以上,说明了一个实施方式,但是该实施方式仅是用于说明本发明的示例,并非是将本发明的范围仅限定于该实施方式的宗旨。本发明也能够通过其它各种方式来实施。
附图标记说明
101:管理程序;102:管理程序代理(102);3:第一客户机操作系统;104:第二客户机操作系统;111:物理CPU;112:物理存储器(保护区域);113:物理存储器。

Claims (15)

1.一种计算机,其特征在于,具有多个资源,该多个资源包含一个以上的物理存储器和多个物理CPU,其中,CPU为中央处理单元,
上述多个物理CPU执行管理程序、简易管理程序、第一客户机操作系统以及第二客户机操作系统,
在上述多个资源中,上述管理程序使用的资源与上述简易管理程序使用的资源不同,
上述一个以上的物理存储器具有上述管理程序不使用的第一物理存储区域以及上述管理程序使用的第二物理存储区域,
基于上述第一物理存储区域,在上述简易管理程序上执行上述第一客户机操作系统,
基于上述第二物理存储区域,在上述管理程序上执行上述第二客户机操作系统,
上述管理程序具有将上述多个资源虚拟化为多个虚拟资源的功能即仿真功能以及对于上述第一客户机操作系统和第二客户机操作系统中的各个客户机操作系统决定动态地分配或回收的资源的功能即资源调度功能,
上述简易管理程序具有以下的调度代理功能:代替上述管理程序按照上述管理程序的上述资源调度功能进行针对上述第一客户机操作系统的资源分配或资源回收,
上述管理程序发布与资源的分配或回收有关的请求,上述简易管理程序取得上述请求,按照上述请求来执行处理。
2.根据权利要求1所述的计算机,其特征在于,
将上述请求写入存储区域中,
上述简易管理程序从上述存储区域取得上述请求。
3.根据权利要求2所述的计算机,其特征在于,
与执行上述管理程序的第一物理CPU不同的第二物理CPU执行上述简易管理程序,
上述请求的发布是捕获命令的发布或对上述第二物理CPU的中断的通知。
4.根据权利要求2所述的计算机,其特征在于,
上述存储区域是存储请求日志信息的非易失性区域,
将上述请求作为日志追加到上述请求日志信息中,
上述简易管理程序基于按照上述请求执行处理,对上述请求日志信息内的上述日志进行更新。
5.根据权利要求1所述的计算机,其特征在于,
在上述请求为CPU分配请求的情况下,上述简易管理程序在分配对象的物理CPU上开始动作,并向上述第一客户机操作系统通知能够使用上述分配对象的物理CPU,
在上述请求为CPU回收请求的情况下,上述简易管理程序向上述第一客户机操作系统通知已向上述第一客户机操作系统分配的物理CPU中的回收对象的物理CPU,并停止上述回收对象的物理CPU上的动作。
6.根据权利要求5所述的计算机,其特征在于,
上述CPU分配请求的发布是捕获命令的发布,
上述CPU回收请求的发布是针对不能使用的上述物理CPU的中断通知。
7.根据权利要求1所述的计算机,其特征在于,
在上述请求为存储器分配请求的情况下,上述简易管理程序对地址变换表进行更新,从而能够从上述第一客户机操作系统对上述一个以上的物理存储器中的分配对象的存储区域进行存取,并向上述第一客户机操作系统通知能够使用上述分配对象的存储区域,其中,上述地址变换表表示从上述第一客户机操作系统指定的逻辑地址即客户机地址与上述一个以上的物理存储器中的存储区域的物理地址即主机地址的对应,
在上述请求为存储器回收请求的情况下,上述简易管理程序向上述第一客户机操作系统通知已向上述第一客户机操作系统分配的存储区域中的不能使用的存储区域,并且对上述地址变换表进行更新从而无法从上述第一客户机操作系统对上述不能使用的存储区域进行存取。
8.根据权利要求4所述的计算机,其特征在于,
上述请求日志信息内的各日志包含按照与该日志对应的请求的处理的进度状况,
上述非易失性区域还存储表示上述多个资源的分配状态的分配状态信息,
上述管理程序在已再启动的情况下,参照上述非易失性区域内的上述请求日志信息和上述分配状态信息,关于处理中的请求,等待至处理完成为止,根据上述请求日志信息来更新上述分配状态信息,并根据更新后的分配状态信息,使用上述多个资源中的未分配给上述第一客户机操作系统的资源,执行上述管理程序和上述第二客户机操作系统的初始化。
9.根据权利要求1所述的计算机,其特征在于,
将上述第一客户机操作系统、上述简易管理程序以及地址变换表配置在第一存储区域中,其中,地址变换表表示从上述第一客户机操作系统指定的逻辑地址即客户机地址与上述一个以上的物理存储器中的存储区域的物理地址即主机地址的对应,
上述第一存储区域是无法从上述管理程序和上述第二客户机操作系统写入的区域。
10.根据权利要求1所述的计算机,其特征在于,
上述简易管理程序在从上述第一客户机操作系统发布了特权命令的情况下,代替上述管理程序根据上述特权命令更新寄存器的值。
11.根据权利要求1所述的计算机,其特征在于,
上述管理程序针对各客户机操作系统,确定能够使用的资源量的范围,当按照发布对象的请求执行了资源分配或资源回收时,在已分配的资源量成为上述确定的范围外的资源量的情况下,中止上述发布对象的请求的发布。
12.根据权利要求1所述的计算机,其特征在于,
上述管理程序管理针对各客户机操作系统分配的资源的量即分配资源量,
上述管理程序针对各客户机操作系统,随着资源分配或资源回收,更新上述分配资源量。
13.根据权利要求9所述的计算机,其特征在于,
上述管理程序发布地址变更请求,该地址变更请求用于控制能够从上述第二客户机操作系统进行存取的存储区域,
上述简易管理程序按照上述地址变更请求来更新上述地址变换表。
14.根据权利要求4所述的计算机,其特征在于,
上述请求日志信息内的各日志包含按照与该日志对应的请求的处理的进度状况,
在上述请求为CPU回收请求的情况下,上述简易管理程序向上述第一客户机操作系统通知已向上述第一客户机操作系统分配的物理CPU中的回收对象的物理CPU,并停止上述回收对象的物理CPU上的动作,
上述管理程序在上述简易管理程序按照上述CPU回收请求停止了动作之后,等待中断通知,从上述请求日志信息确定与上述CPU回收请求对应的处理的进度状况,在上述确定的进度状况表示完成的情况下,对上述回收对象的物理CPU进行中断通知。
15.一种资源调度方法,其是在具有多个资源的计算机中通过管理程序进行资源调度的资源调度方法,上述多个资源包含一个以上的物理存储器和多个物理CPU,其中,CPU为中央处理单元,
上述资源调度方法的特征在于,
在上述一个以上的物理存储器中设置上述管理程序不使用的第一物理存储区域以及上述管理程序使用的第二物理存储区域,使用上述多个资源中的与上述管理程序使用的资源不同的资源来执行简易管理程序,
在上述简易管理程序上,基于上述第一物理存储区域,执行第一客户机操作系统,在上述管理程序上,基于上述第二物理存储区域,执行第二客户机操作系统,上述管理程序具有将上述多个资源虚拟化为多个虚拟资源的功能即仿真功能以及对于上述第一客户机操作系统和第二客户机操作系统中的各个客户机操作系统决定动态地分配或回收的资源的功能即资源调度功能,上述简易管理程序具有以下的调度代理功能:代替上述管理程序按照上述管理程序的上述资源调度功能进行针对上述第一客户机操作系统的资源分配或资源回收,
通过上述管理程序发布与资源的分配或回收有关的请求,
通过上述简易管理程序取得上述请求,按照上述请求来执行处理。
CN201480072730.0A 2014-02-17 2014-02-17 计算机以及基于管理程序的资源调度方法 Active CN105900066B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/053613 WO2015122007A1 (ja) 2014-02-17 2014-02-17 計算機、及び、ハイパバイザによる資源スケジューリング方法

Publications (2)

Publication Number Publication Date
CN105900066A CN105900066A (zh) 2016-08-24
CN105900066B true CN105900066B (zh) 2018-05-11

Family

ID=53799770

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480072730.0A Active CN105900066B (zh) 2014-02-17 2014-02-17 计算机以及基于管理程序的资源调度方法

Country Status (6)

Country Link
US (1) US10162663B2 (zh)
JP (1) JP6198858B2 (zh)
CN (1) CN105900066B (zh)
DE (1) DE112014005348T5 (zh)
GB (1) GB2537760A (zh)
WO (1) WO2015122007A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6515771B2 (ja) * 2015-10-07 2019-05-22 富士通コネクテッドテクノロジーズ株式会社 並列処理装置及び並列処理方法
CN110838938B (zh) * 2019-10-11 2021-09-07 成都飞机工业(集团)有限责任公司 一种基于工控网的dnc数据存储服务器调度方法
US11593170B2 (en) 2020-03-25 2023-02-28 Red Hat, Inc. Flexible reverse ballooning for nested virtual machines
US20220321567A1 (en) * 2021-03-31 2022-10-06 Netapp, Inc. Context Tracking Across a Data Management Platform

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1181551A (zh) * 1996-10-28 1998-05-13 三菱电机株式会社 群集控制系统
CN101727297A (zh) * 2008-10-30 2010-06-09 株式会社日立制作所 存储装置、存储控制器内部网络的数据路径故障切换方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7886293B2 (en) * 2004-07-07 2011-02-08 Intel Corporation Optimizing system behavior in a virtual machine environment
US7814495B1 (en) * 2006-03-31 2010-10-12 V Mware, Inc. On-line replacement and changing of virtualization software
US7673113B2 (en) * 2006-12-29 2010-03-02 Intel Corporation Method for dynamic load balancing on partitioned systems
JP4980792B2 (ja) * 2007-05-22 2012-07-18 株式会社日立製作所 仮想計算機の性能監視方法及びその方法を用いた装置
US7970903B2 (en) * 2007-08-20 2011-06-28 Hitachi, Ltd. Storage and server provisioning for virtualized and geographically dispersed data centers
US7979869B2 (en) * 2007-09-28 2011-07-12 Oracle America, Inc. Method and system for performing I/O operations using a hypervisor
US7743375B2 (en) * 2008-06-27 2010-06-22 International Business Machines Corporation Information handling system including dynamically merged physical partitions
JP5222651B2 (ja) * 2008-07-30 2013-06-26 株式会社日立製作所 仮想計算機システムおよび仮想計算機システムの制御方法
US8635057B2 (en) * 2009-03-30 2014-01-21 Microsoft Corporation Enlightenment for low overhead hardware access
US8381033B2 (en) * 2009-10-30 2013-02-19 International Business Machines Corporation Fault management in virtual computing environments
US20110113426A1 (en) * 2009-11-09 2011-05-12 Hsiang-Tsung Kung Apparatuses for switching the running of a virtual machine between multiple computer devices belonging to the same computer platform and the associated switching methods
JP5493125B2 (ja) * 2010-02-05 2014-05-14 株式会社日立製作所 仮想化方法及び計算機
JP5463267B2 (ja) * 2010-11-19 2014-04-09 株式会社日立製作所 仮想計算機システムおよび仮想計算機の移行方法
US8898666B2 (en) * 2010-12-21 2014-11-25 Panasonic Intellectual Property Corporation Of America Virtual machine system and virtual machine system control method for controlling program execution on a plurality of processors that have a plurality of privileged modes
US8499112B2 (en) * 2011-08-16 2013-07-30 Hitachi, Ltd. Storage control apparatus
JP5754294B2 (ja) * 2011-08-17 2015-07-29 富士通株式会社 情報処理装置、情報処理方法及び情報処理プログラム
US9075642B1 (en) * 2011-09-30 2015-07-07 Emc Corporation Controlling access to resources using independent and nested hypervisors in a storage system environment
WO2013121531A1 (ja) * 2012-02-15 2013-08-22 株式会社日立製作所 仮想計算機システム及び仮想計算機の障害予兆回復方法
KR101471879B1 (ko) * 2012-10-31 2014-12-11 삼성에스디에스 주식회사 하이퍼바이저 기반 서버 이중화 시스템, 그 방법 및 서버 이중화 컴퓨터 프로그램이 기록된 기록매체
US9229752B2 (en) * 2013-03-12 2016-01-05 International Business Machines Corporation Systems and methods to offload hardware support using a hypervisor subpartition
US9606818B2 (en) * 2013-03-14 2017-03-28 Qualcomm Incorporated Systems and methods of executing multiple hypervisors using multiple sets of processors
JP5941868B2 (ja) * 2013-04-18 2016-06-29 株式会社日立製作所 仮想計算機システムおよび仮想計算機におけるi/o実施方法
GB2518894A (en) * 2013-10-07 2015-04-08 Ibm A method and a system for operating programs on a computer cluster

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1181551A (zh) * 1996-10-28 1998-05-13 三菱电机株式会社 群集控制系统
CN101727297A (zh) * 2008-10-30 2010-06-09 株式会社日立制作所 存储装置、存储控制器内部网络的数据路径故障切换方法

Also Published As

Publication number Publication date
JPWO2015122007A1 (ja) 2017-03-30
CN105900066A (zh) 2016-08-24
DE112014005348T5 (de) 2016-08-11
GB201608554D0 (en) 2016-06-29
US20160378533A1 (en) 2016-12-29
US10162663B2 (en) 2018-12-25
GB2537760A (en) 2016-10-26
JP6198858B2 (ja) 2017-09-20
WO2015122007A1 (ja) 2015-08-20

Similar Documents

Publication Publication Date Title
CN104508634B (zh) 虚拟机的动态资源分配
US9250943B2 (en) Providing memory condition information to guest applications
CN102906691B (zh) 虚拟机迁移技术
US8296775B2 (en) Efficient context switching of virtual processors by managing physical register states in a virtualized environment
US11579908B2 (en) Containerized workload scheduling
US20040205755A1 (en) Operating systems
CN105900066B (zh) 计算机以及基于管理程序的资源调度方法
CN103176845A (zh) 一种虚拟机部署方法、系统和装置
US20200341789A1 (en) Containerized workload scheduling
US11188370B2 (en) Memory scheduler using guest-originated statistics
CN112579251A (zh) 虚拟机内存管理的方法及设备
CN106030515A (zh) 用于多处理器和多核平台的二进制翻译
US9513952B2 (en) Sharing resources allocated to an entitled virtual machine
US8966212B2 (en) Memory management method, computer system and computer readable medium
CN102597972A (zh) 虚拟计算机系统、区域管理方法及程序
US9904567B2 (en) Limited hardware assisted dirty page logging
US20170286152A1 (en) Control method for virtual machine system, and virtual machine system
US9164909B1 (en) Method for the use of process identifiers to invalidate cached data in environments that allow processes to migrate between physical machines
KR20190116641A (ko) 가상화 시스템을 위한 저장 장치 및 그 동작 방법
Lee et al. VM-aware flush mechanism for mitigating inter-VM I/O interference

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant