WO2014141419A1 - 仮想計算機システムおよびスケジューリング方法 - Google Patents

仮想計算機システムおよびスケジューリング方法 Download PDF

Info

Publication number
WO2014141419A1
WO2014141419A1 PCT/JP2013/057141 JP2013057141W WO2014141419A1 WO 2014141419 A1 WO2014141419 A1 WO 2014141419A1 JP 2013057141 W JP2013057141 W JP 2013057141W WO 2014141419 A1 WO2014141419 A1 WO 2014141419A1
Authority
WO
WIPO (PCT)
Prior art keywords
cpu
logical
physical
cache
logical cpu
Prior art date
Application number
PCT/JP2013/057141
Other languages
English (en)
French (fr)
Inventor
翔一 竹内
周平 松本
Original Assignee
株式会社日立製作所
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 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2013/057141 priority Critical patent/WO2014141419A1/ja
Priority to US14/762,027 priority patent/US9740528B2/en
Publication of WO2014141419A1 publication Critical patent/WO2014141419A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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
    • 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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, 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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • 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/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5022Workload threshold

Definitions

  • the present invention relates to scheduling for generating a plurality of logical partitions (hereinafter referred to as LPAR) obtained by logically dividing physical resources on a physical computer and sharing a plurality of physical CPUs among a plurality of logical CPUs by time division.
  • LPAR logical partitions
  • a hypervisor divides or shares a computer resource such as a physical CPU, physical memory, and input / output device and allocates it to a logical computer, LPAR (Logical PARtion), one or more logical computers A method of generating and controlling a simple computer.
  • the hypervisor time-divides the physical CPU into unit times called time slices, and manages and shares the execution time of the logical CPU assigned to each LPAR. It is necessary to let This control is generally called scheduling.
  • a physical computer a plurality of CPUs and memories are combined into a group called one node, and the access cost to the memory in the same node as viewed from one physical CPU is the access cost to the memory in the other node.
  • a computer configuration that is smaller than the NUMA is called a NUMA (Non-UniformUMemory Access) configuration.
  • a memory in the same node is called a local memory, and a memory in another node is called a remote memory.
  • the access cost to the physical memory there is a physical memory cache (hereinafter referred to as “cache”) that temporarily stores the memory contents at a location physically close to the physical CPU.
  • cache a physical memory cache
  • the access speed to the cache can be higher than that to access the local memory.
  • Patent Document 1 discloses a technique in which, when the entire system is busy, processing with higher priority is distributed among physical CPUs while suppressing a decrease in LPAR processing capability. ing.
  • Patent Document 1 if a physical CPU is idle, high priority processing is repeatedly performed on the physical CPU. The same can be said for the case where processing with high priority is replaced with LPAR processing.
  • the present invention has been made in view of the above-described problems, and an object thereof is to suppress a state in which a high access cost to a physical memory is continued.
  • the present invention is a virtual computer system comprising a physical CPU having a cache memory and a plurality of nodes including the physical memory, and a virtualization unit that allocates computer resources of the plurality of nodes to a virtual computer, A plurality of nodes are connected via an interconnect, and the virtualization unit includes a logical partition management unit that generates a logical partition and a logical CPU as computer resources to be allocated to the virtual machine, and the physical CPU that executes the logical CPU.
  • the physical CPU that executes the CPU is selected from the same node as the physical CPU that was previously executed. If said performance information does not satisfy the predetermined threshold, the physical CPU that executes the logical CPU, selected from different other node than the node of the physical CPU that last executed.
  • a plurality of physical CPUs access a plurality of physical memories, such as a computer having a NUMA configuration
  • a physical computer having different memory access performance depending on the positional relationship between the physical CPU and the physical memory
  • the number of physical CPUs is sufficient with respect to the number of logical CPUs
  • the access performance of the physical memory to the logical CPUs is observed at a predetermined observation time of about 1 second, it is intermediate between the highest performance and the lowest performance.
  • the cache hit rate is high, an effect of high memory read / write performance by the cache memory can be obtained.
  • FIG. 1 is a block diagram illustrating an example of a virtual machine system according to a first embodiment of this invention.
  • FIG. It is a block diagram which shows the 1st Example of this invention and shows the detail of the resource management data which a hypervisor manages.
  • FIG. 5 is a diagram illustrating an example of an LPAR management table that holds LPAR settings according to the first embodiment of this invention. It is a figure which shows the 1st Example of this invention and shows the initial state of the physical CPU management table holding the information of the physical CPU which operates a logical CPU. It is a figure which shows a 1st Example of this invention and shows an example of the CPU state table which shows the correspondence of the state of a CPU, and a code
  • FIG. 3 is a state transition diagram of a CPU according to the first embodiment of this invention.
  • FIG. 5 is a diagram illustrating an initial state of a unique logical CPU management table that holds information on logical CPUs set for each physical CPU according to the first embodiment of this invention. It is a figure which shows the 1st Example of this invention and shows the initial state of the shared logical CPU management table holding the information of the logical CPU which can be operate
  • FIG. 3 is a diagram illustrating an initial state of a temporary storage logical CPU management table that temporarily holds information of a logical CPU when the logical CPU is operated by a physical CPU according to the first embodiment of this invention.
  • FIG. 5 is a first half of a flowchart illustrating an example of LPAR activation processing performed by the hypervisor according to the first embodiment of this invention.
  • FIG. 6 is a flowchart illustrating an example of LPAR activation processing performed by the hypervisor according to the first embodiment of this invention, and is the latter half of the flowchart. It is a flowchart which shows a 1st Example of this invention and shows an example of the wake-up process of physical CPU performed by a hypervisor.
  • FIG. 11 is a diagram illustrating an example of the physical CPU management table after the LPAR activation process of FIGS. 11A and 11B according to the first embodiment of this invention.
  • FIG. 11 is a diagram illustrating an example of the shared logical CPU management table after the LPAR activation process of FIGS. 11A and 11B according to the first embodiment of this invention.
  • FIG. 1 It is a flowchart which shows the 1st Example of this invention and shows the outline
  • FIG. 5 is a flowchart when the logical CPU to be processed in the physical CPU dispatch start process does not exist in the details of the scheduling process according to the first embodiment of this invention. It is a figure which shows the 1st Example of this invention and shows the relationship between the entry of the shared logical CPU management table at the time of a scheduling process, and the logical CPU management table for temporary storage. It is a figure which shows the 1st Example of this invention and shows the temporary calculation table in the case of a scheduling process. 4 is a flowchart illustrating an example of logical CPU execution processing in scheduling processing according to the first embodiment of this invention. It is a figure which shows 1st Example of this invention and shows an example of the factor code table of a guest mode completion
  • FIG. 10 is a first half of a flowchart illustrating an example of a physical CPU dispatch end process in the scheduling process according to the first embodiment of this invention.
  • FIG. 5 shows the first embodiment of the present invention and is an intermediate part of a flowchart of physical CPU dispatch end processing in scheduling processing.
  • FIG. 9 shows the first embodiment of this invention and is the latter half of the flowchart of the physical CPU dispatch end process in the scheduling process.
  • FIG. 20A It is a figure which shows the 1st Example of this invention and shows the relationship between the logical CPU management table entry for temporary storage at the time of implementing the process of FIG. 20B and FIG. 20C, and a common logical CPU management table. It is a flowchart which shows a 1st Example of this invention and shows an example of the process which stores a threshold value in a threshold value management table. It is a flowchart which shows a 1st Example of this invention and shows an example of the monitor validation process for measuring the cache hit rate of a logical CPU. It is a flowchart which shows a 1st Example of this invention and shows an example of the monitoring process for measuring the cache hit rate of a logical CPU.
  • FIG. 3 is a block diagram of a computer having a NUMA configuration, showing an example of memory access. It is a time chart which shows a prior art example and shows an example of the process on physical CPU by a scheduling process.
  • the time chart which shows a 1st Example of this invention and shows an example of the process on physical CPU by a scheduling process, and is a case where a total cache hit rate threshold value is 0.5. It is a block diagram of the calculation mechanism of a NUMA structure, and is a figure which shows another example of a memory access. It is a time chart which shows a 1st Example of this invention and shows an example of the process on physical CPU when a computer system is a busy state in the scheduling process of this invention. It is a block diagram which shows the 2nd Example of this invention and shows an example of a virtual machine system.
  • FIG. 1A and FIG. 1B are block diagrams showing a basic configuration example of a virtual machine system according to the present invention.
  • a physical computer that provides one or more virtual machines includes physical CPUs (# 0 to # 3) 4 to 7, timers 16 to 19 provided for each physical CPU (or physical processor), and a physical cache that exists for each node. It includes memories 8 to 9, physical memories 10 to 11 connected to each node, an input / output device 13, and a system processing unit 15.
  • the physical CPUs 4 to 5 and timers 16 to 17, the physical cache memory 8, and the physical memory 10 belong to the node (# 0) 2, and the physical CPUs 6 to 7 and timers 18 to 19, the physical cache memory 9, and the physical memory 111 are assigned to the node (# 1)
  • Each node belongs to 3 and the nodes are connected by an interconnect 14.
  • the hypervisor (virtualization unit) 20 loaded into a part of the memory of the computer divides or shares physical computer resources such as the physical CPUs 4 to 7, the physical memories 10 to 11, and the input / output device 13 to logically
  • One or more logical computers (or virtual computers) are generated and controlled by being assigned to LPAR (Logical PARTION: Logical partition) 801 and 802, which are various computers.
  • the system processing unit 15 includes a physical CPU 15A and a physical memory 15B that perform only the processing of the hypervisor 20 without being assigned to the LPARs 801 and 802.
  • the hypervisor 20 receives input from the user via the input / output device 13, and also sets the input / output function 21 for outputting information to the user, setting of computer resources allocated to the LPARs 801 and 802, and generation and activation of the LPARs 801 and 802.
  • LPAR management function 22 to be performed, physical CPU wake-up function 23 to wake up physical CPUs 4 to 7 in a dormant state (or stopped state), and one physical CPU by a plurality of logical CPUs (logical processors) in time division (time slice)
  • the scheduling function 24 to be shared, the monitoring function 25 for measuring the cache hit rate for each of the logical CPUs 811 and 812 (or the number of cache reads and cache hits of the physical CPUs 4 to 7), and the resource information of the physical computer (hardware) 1 Resource management data to be retained Configured to include the other 26.
  • each function of the hypervisor 20 is processed by the system processing unit 15 as described above.
  • the hypervisor 20 generates logical CPUs 811 and 812 and logical memories 821 and 822 from the hardware 1 of the physical computer, and allocates respective resources to the generated LPARs 801 and 802.
  • the logical CPUs 811 and 812 allocated to the LPARs 801 and 802, the LPAR management table 100 for managing the capacity of the logical memories 821 and 822, and the states of the physical CPUs 4 to 7 are managed.
  • Physical CPU management table 200 the unique logical CPU management table 300 that holds information of logical CPUs that can be executed (or assigned) only by the target physical CPUs 4 to 7, for each physical CPU 4 to 7, and all physical CPUs 4 to 7 Calculates the shared logical CPU management table 400 that holds information on the logical CPU to be executed in step 1, the temporary storage logical CPU management table entry 500 that is held for each physical CPU 4 to 7, and the hit ratio of the cache memories 8 and 9 Temporary calculation table 600 and logical CPUs 811, 81 For the next time slice period, a threshold management table 700 that holds reference values for determining which physical CPUs 4 to 7 are to be executed, a CPU state table 450 that defines the operating states of the physical CPUs 4 to 7, and an LPAR 801 , 802, the factor code table 460 that holds factors that cause the guest mode to end.
  • the maximum number of LPARs on the hypervisor 20 and the number of logical CPUs constituting the LPAR is determined by the maximum number defined in the hypervisor 20.
  • the hypervisor generates two LPARs 801 and 802, and each LPAR 801 and 802 is assigned one logical CPU 811 and 812 and logical memory 821 and 822 set from the hardware 1, respectively. An example is shown.
  • the monitoring function 25 of the hypervisor 20 measures the number of reads (hereinafter referred to as “cache read number”) and the number of hits (hereinafter referred to as “cache hit number”) of the cache memories 8 and 9 for each of the logical CPUs 811 and 812 (or physical CPUs 4 to 7).
  • a counter is provided to calculate a cache hit rate for each of the logical CPUs 811 and 812 (or physical CPUs 4 to 7).
  • the outline of the present invention is as follows.
  • the hypervisor 20 when the logical CPU 811 (812) is continuously executed by the physical CPU 4 (5 to 7) on the same node, the hypervisor 20 causes the continuous execution time of the logical CPU 811 (812) to be a predetermined cache hit rate. It is determined whether or not a predetermined time expected to be satisfied has elapsed. When the predetermined time has elapsed, the hypervisor 20 determines whether or not the cache hit rate of the logical CPU 811 (812) is higher than the threshold value.
  • the hypervisor 20 determines that the cache memory 8 or 9 is not benefiting, and the logical CPU 811 (812) is in a dormant physical state on a node different from the node on which the logical CPU 811 (812) is continuously executed. If the CPU exists, the physical CPU is woken up and the logical CPU is executed.
  • the cache hit rate is higher than the threshold, even if there is a dormant physical CPU on a node different from the node on which the logical CPU 811 (812) is continuously executed, the physical CPU 4 of the current node continues.
  • the logical CPU 811 is executed at (or 5). Even when the cache hit rate is low but there is no physical CPU in a dormant state on a node different from the node on which the logical CPU 811 is continuously executed, the physical CPU 6 (or 7) that is currently woken up is also used.
  • the logical CPU (811) is executed.
  • the logical CPU 811 (812) to be executed by the physical CPU 4 ( ⁇ 7) is held in a logical CPU queue (shared logical CPU management table 400) provided in the hypervisor 20.
  • the hypervisor 20 causes the physical CPU 4 ( ⁇ 7) to execute the logical CPU 811 (812) in the order of entering the queue, and when the execution of the logical CPU 811 (812) is completed after a predetermined time slice time has elapsed, the logical CPU 811 Is re-queued into the logical CPU queue.
  • the threshold ⁇ for the total execution time of the logical CPU that is expected to have a predetermined cache hit rate and the threshold ⁇ for the cache hit rate for determining that the logical CPU is benefiting from the cache memories 8 and 9 are: Can be set.
  • the former is the total execution time threshold ⁇
  • the latter is the cache hit rate threshold ⁇ .
  • the threshold ⁇ of the total execution time is assumed to be smaller than the time T (described later) for measuring the average value of the memory access performance (latency, transfer speed, etc.) of the physical memories 10 and 11. The reason is as follows.
  • the time for which the logical CPU 811 (812) is continuously executed by the physical CPU 4 (or 5) on the same node is the total execution time threshold value ⁇ , which is longer than the time T for measuring the average value of the memory access performance. If the threshold ⁇ of the total execution time is larger, the logical CPU 811 continues to be executed by the physical CPU 4 (or 5) of one node during the time T.
  • the average memory access performance of the logical CPU 811 at the time T may be a remote memory access performance, that is, low performance (high latency). Means there is. For this reason, the threshold ⁇ of the total execution time is set to a value smaller than the time T for measuring the average value of the memory access performance.
  • each functional unit such as the hypervisor 20 and the scheduling function 24 of the hypervisor 20 is loaded as a program into the memory 15B of the system processing unit 15 and executed by the physical CPU 15A of the system processing unit 15.
  • the physical CPU 15A of the system processing unit 15 operates as a functional unit that realizes a predetermined function by operating according to a program of each functional unit.
  • the physical CPU 15A functions as the scheduling function 24 by operating according to the scheduling program.
  • the physical CPU 15A of the system processing unit 15 also operates as a functional unit that realizes each of a plurality of processes executed by each program.
  • a computer and a virtual computer system are an apparatus and a system including these functional units.
  • Information such as programs and tables for realizing each function of the hypervisor 20 is a storage subsystem (not shown), a nonvolatile semiconductor memory, a hard disk drive, a storage device such as an SSD (Solid State Drive), an IC card, an SD card, a DVD Etc., and can be stored in a computer readable non-transitory data storage medium.
  • a storage subsystem not shown
  • a nonvolatile semiconductor memory such as a hard disk drive
  • a storage device such as an SSD (Solid State Drive)
  • an IC card such as an SD card, a DVD Etc.
  • FIG. 2 is a diagram illustrating an example of an LPAR management table 100 that holds LPAR settings.
  • the LPAR management table 100 shown in FIG. 2 includes an LPAR number 101 that is an identifier of the LPARs 801 and 802, a logical CPU number 102 that stores the number of logical CPUs 811 and 812 assigned to the LPARs 801 and 802, and LPARs 801 and 822 as logical memories 821 and 822.
  • An allocation physical memory start position 103 for storing the start positions (addresses) of the physical memories 10 and 11 to be assigned to 802, and a physical memory size 104 for storing the sizes of the physical memories 4 to 7 to be assigned to the logical memories 821 and 822 from the start position. .
  • the LPAR management table 100 has entries corresponding to the number of LPARs 801 and 802 defined in advance. Each entry in the LPAR management table 100 is received by the input / output function 21 of the hypervisor 20 via the input / output device 13 as an instruction for setting the LPAR environment by the user. Then, the LPAR management function 22 reads the information of the LPAR number, the number of logical CPUs, and the memory area, and defines each entry of the LPAR management table 100.
  • FIG. 3 is a diagram showing an initial state of the physical CPU management table 200 that holds information of the physical CPUs 4 to 7 that operate the logical CPUs 811 and 812.
  • the physical CPU management table 200 shown in FIG. 3 includes a physical CPU number 201 that is an identifier of the physical CPUs 4 to 7, a state 202 that stores the operating state of the physical CPUs 4 to 7, and a physical CPU that holds the node number to which the physical CPUs 4 to 7 belong.
  • a node number (203) is provided.
  • the physical CPU management table 200 shown in FIG. 3 has entries for the number of physical CPUs that execute the logical CPUs 811 and 812 of the LPARs 801 and 802 in order to hold the physical CPUs that can be shared in time division in the LPARs 801 and 802.
  • FIG. 4A and 4B show a correspondence table and state transition diagrams of the states and codes of the physical CPUs 4 to 7 and the logical CPUs 811 and 812 defined in advance by the hypervisor 20.
  • FIG. 4A is a diagram showing an example of a CPU state table 450 indicating the correspondence between the states of the physical CPUs 4 to 7 (logical CPUs 811 and 812) and codes.
  • FIG. 4B is a state transition diagram of the physical CPUs 4 to 7 (logical CPUs 811 and 812).
  • the physical CPU management table 200 recognizes the physical CPUs 4 to 7 and their node numbers when the hypervisor 20 is activated, and only the physical CPUs 4 to 7 defined in advance in the hypervisor 20 are added. In this case, all physical CPU states are HALT. Note that a sleeping state may be added to the HALT state.
  • FIG. 5 is a diagram showing an initial state (entry is 0) of the unique logical CPU management table 300 that holds information of the logical CPUs 811 and 812 set for each of the physical CPUs 4 to 7.
  • the unique logical CPU management table 300 shown in FIG. 5 includes an entry number 301 indicating an entry order, an LPAR number 302 and a logical CPU number 303 of the entry, a logical CPU state 304, and a physical CPU that was previously executed by the logical CPU of the entry.
  • the previous node number 305 which means the number of the node to which the node belongs, the total cache read count 306 and the total cache hit count 307 executed at the previous node, the total execution time 308, and the LPARs 801 and 802.
  • the unique logical CPU management table 300 is set by the hypervisor 20 for each of the physical CPUs 4 to 7, and the scheduling function 24 holds the entries of the logical CPUs 811 and 812 to be preferentially assigned to the corresponding physical CPUs 4 to 7.
  • This unique logical CPU management table 300 corresponds to a technique for causing the logical CPU 811 to be executed by the physical CPUs 4 and 5 on other nodes in the outline of the present invention described above.
  • FIG. 6 is a diagram showing an initial state (entry is 0) of the shared logical CPU management table 400 that holds information of the logical CPUs 811 and 812 operated by all the physical CPUs 4 to 7.
  • the shared logical CPU management table 400 shown in FIG. 6 includes entries having the same configuration as the unique logical CPU management table 300 shown in FIG. That is, entry number 401, LPAR number 402, logical CPU number 403, logical CPU state 404, previous node number 405, total cache read count 406, total cache hit count 407, total execution time 408, and physical CPU of node 0
  • entry number 401 entry number 401, LPAR number 402, logical CPU number 403, logical CPU state 404, previous node number 405, total cache read count 406, total cache hit count 407, total execution time 408, and physical CPU of node 0
  • One entry is constituted by the execution time 409 and the execution time 410 in the physical CPU of the node 1.
  • FIG. 7 is a diagram showing an initial state (entry is 0) of the temporary storage logical CPU management table 500 that temporarily holds information of the logical CPUs 811 and 812 when the logical CPUs 811 and 812 are operated by the physical CPUs 4 to 7. is there.
  • the temporary storage logical CPU management table entry 500 shown in FIG. 7 is also configured with entries having the same configuration except that the entry number is deleted from the unique logical CPU management table 300 shown in FIG. That is, LPAR number 501, logical CPU number 502, logical CPU state 503, previous node number 504, total cache read count 505, total cache hit count 506, total execution time 507, execution time 508 in the physical CPU of node 0, One entry is constituted by the execution time 509 in the physical CPU of the node 1.
  • the temporary storage logical CPU management table entry 500 does not have an entry number.
  • the temporary storage logical CPU management table entry 500 is set for each of the physical CPUs 4 to 7, and the scheduling function 24 holds the entries of the logical CPUs 811 and 812 executed by the physical CPUs 4 to 7 to be controlled.
  • the execution times 309 to 310 in the physical CPU of the node (# 0, # 1) of FIG. 7 are each in two columns (2 entries). To prepare. As the number of nodes increases, the number of columns increases.
  • the maximum value of the total number of entries in the unique logical CPU management table 300 and the shared logical CPU management table 400 is the number of logical CPUs 811 and 812 assigned to the active LPARs 801 and 802.
  • the temporary storage logical CPU management table entry 500 holds information of the logical CPUs 811 and 812 being executed by the physical CPUs 4 to 7, and therefore the number of entries is at most one.
  • the initial values of the unique logical CPU management table 300, the shared logical CPU management table 400, and the temporary storage logical CPU management table entry 500 are in a state in which no logical CPU is executed.
  • the entry in FIG. 7 is deleted, that is, an empty table.
  • FIG. 8 is a diagram showing an initial state of a temporary calculation table that temporarily stores calculation information when the physical CPUs 4 to 7 for executing the logical CPUs 811 and 812 are selected.
  • the temporary calculation table 600 shown in FIG. 8 includes a total cache hit rate 601, a cache read count 602 and a cache hit count 603 when the logical CPU is executed on the physical CPU, and an execution start time of the logical CPU on the physical CPU.
  • An area for storing 604 and execution end time 605 is provided.
  • FIG. 9 is a diagram illustrating an example of a threshold management table 700 that holds thresholds for determination when selecting the physical CPUs 4 to 7 that execute the logical CPUs 811 and 812.
  • the threshold management table 700 shown in FIG. 9 is a threshold that means a threshold of the total cache hit rate that is required when selecting the LPAR number 701, the logical CPU number 702, and the physical CPU to be executed next by the logical CPU of the entry.
  • threshold ⁇ 704 indicating a threshold of total execution time
  • a monitor valid flag 705 that holds whether or not the current operation status is monitored
  • a write completion flag 706 that holds whether or not the monitored contents are written
  • one entry is composed of the total cache hit rate 707 and the total execution time 708 for writing the monitored contents.
  • the threshold management table 700 defines the entries in FIG. 9 after the LPAR management function 22 defines the entries in the LPAR management table 100.
  • LPAR # 1 (801) and LPAR # 2 (802) are defined, and the threshold ⁇ is defined as “0.5” and the threshold ⁇ is defined as “2000” in the hypervisor 20 in advance. Shows the state immediately after the entry is created.
  • the initial value when the LPARs 801 and 802 are not defined is an entry having no entry, that is, an empty table.
  • the threshold value ⁇ is smaller than the time T (for example, 1 second) for measuring the average value of the memory access performance.
  • FIG. 10 is a flowchart illustrating an example of threshold value registration processing performed by the hypervisor 20.
  • FIG. 10 shows processing that continues after the LPAR environment setting command is received from the input / output function 21 of the hypervisor 20 via the input / output device 13 and the LPAR management function 22 adds the entry of the LPAR management table 100.
  • the function 22 indicates processing for registering the threshold values of the logical CPUs 811 and 812 of the LPARs 801 and 802 in the threshold value management table 700.
  • the process will be described assuming that the LPAR 801 of the entry added to the LPAR management table 100 immediately before the execution of the process is the LPAR.
  • the LPAR management function 22 repeats the loop of setting the logical CPU number to 0, executing step 903 according to the number of logical CPUs 811 of the LPAR 801, and adding 1 to the logical CPU number (902 to 904).
  • the LPAR management function 22 defines the LPAR number 701 as the LPAR number, the logical CPU number 702 as the current logical CPU number, the threshold value ⁇ 703 and the threshold value ⁇ 704 in advance at the hypervisor 20 at the end of the threshold management table 700. And an entry in which the other fields 705 to 708 are set to “0” is inserted.
  • the LPAR management function 22 creates entries according to the number of logical CPUs 811 of the LPAR 801 and adds them to the end of the threshold management table 700.
  • the LPAR number 701 and the logical CPU number 702 of the threshold management table 700 are searched as an index, and the entry of the target logical CPU is deleted. Good.
  • the LPAR number 701 and the logical CPU number 702 of the threshold management table 700 are searched as an index, and after the entry of the largest logical CPU number among them, step 903 is performed.
  • the entry may be added in the same procedure as.
  • FIG. 11A is the first half of a flowchart showing an example of the activation process of the LPARs 801 and 802 performed by the hypervisor 20, and FIG. 11B shows the second half.
  • 11A and 11B show processing when the LPAR management function 22 activates the LPARs 801 and 802 by receiving an activation command for the LPARs 801 and 802 from the input / output function 21 of the hypervisor 20 via the input / output device 13.
  • the LPAR 801 to be activated will be described as the LPAR 801. This processing is executed by the hypervisor 20 when a command is received from the input / output device 13.
  • the LPAR management function 22 of the hypervisor 20 reads the number of logical CPUs and the amount of memory allocated to the LPAR 801 (or 802) from the LPAR management table 100 (932).
  • the LPAR management function 22 inserts a new entry into the shared logical CPU management table 400, sets a value obtained by adding 1 to the largest entry number as the entry number 401, sets the target LPAR number as the LPAR number 402, and sets the logical number.
  • the CPU number 403 is set to 0, the logical CPU state 404 is set to READY, the previous node number 405 is set to "-1" meaning undefined, and the other fields 406 to 410 are set to 0 ( 933).
  • the shared logical CPU management table 400 is empty, the entry number 401 of the entry to be inserted is “1”.
  • the LPAR management function 22 repeats the loop processing from step 934 to step 936 up to the number of logical CPUs.
  • the LPAR management function 22 repeats the process of setting the logical CPU number to 1, performing the process of step 935, and adding 1 to the logical CPU number for the number of logical CPUs of the LPAR 801 (934 to 936).
  • step 935 is different from step 933 in that the logical CPU state 404 is set to “HALT” and the logical CPU number 403 is incremented by one in one loop.
  • the LPAR management function 22 searches the physical CPU management table 200 for an entry in which the physical CPU state 202 is the HALT state from the one having the smaller physical CPU number (steps 937, 938, and 940 in FIG. 11B). When an entry in the HALT state is detected, the LPAR management function 22 selects the physical CPU and wakes up (939).
  • the logical CPU 811 assigned to the LPAR 108 is registered in the shared logical CPU management table 400 by the processing of the above flowchart.
  • the registered logical CPUs are assigned physical CPUs 4 to 7 by the scheduling function 24 and start executing.
  • FIG. 12 is a flowchart showing an example of the wake-up process of the physical CPUs 4 to 7 performed by the hypervisor 20.
  • the physical CPU wake-up function 23 of the hypervisor 20 wakes up the physical CPUs 4 to 7 in the HALT state.
  • the physical CPUs 4 to 7 to be woken up are the physical CPUs 4.
  • the physical CPU wake-up function 23 of the hypervisor 20 updates the state 202 of the physical CPU number 201 of the physical CPU 4 in the physical CPU management table 200 from the HALT in the CPU state table 450 of FIG. 4A to the code “2” corresponding to READY. (952). Thereafter, the physical CPU wake-up function 23 updates the state 202 of the physical CPU 4 in the physical CPU management table 200 to the code “1” corresponding to RUN (953).
  • the hypervisor 20 starts the scheduling process by the scheduling function 24 for the physical CPU 4 woken up by the physical CPU wake-up function 23 (954).
  • FIGS. 13 and 14 show changes in the table when LPAR # 1 (801) is activated in the states of FIGS. 2, 3, and 5 to 9.
  • FIG. 13 and 14 show changes in the table when LPAR # 1 (801) is activated in the states of FIGS. 2, 3, and 5 to 9.
  • FIG. 13 is a diagram illustrating an example of the physical CPU management table 200 after the activation process of the LPAR 801.
  • FIG. 14 is a diagram illustrating an example of the shared logical CPU management table 400 after the activation process of the LPAR 801.
  • the physical CPU state 202 of the physical CPU management table 200 of FIG. 3 is “3” in which all entries indicate the HALT state. Therefore, the smallest physical CPU number 403 is obtained by the processing of steps 937 to 940 of FIG. 11B.
  • the LPAR management table 100, the unique logical CPU management table 300, the temporary storage logical CPU management table entry 500, the temporary calculation table 600, and the threshold management table 700 are not changed.
  • FIG. 15 is a flowchart showing an outline of scheduling processing performed by the hypervisor 20.
  • This process is roughly divided into a physical CPU dispatch start process (972) for selecting which logical CPUs 811 and 812 are to be executed by the physical CPUs 4 to 7, and a logical CPU for executing the logical CPUs 811 and 812 on the physical CPUs 4 to 7.
  • An execution process (973) and a physical CPU dispatch end process (974) for selecting which physical CPUs 4 to 7 to execute the logical CPUs 811 and 812 for which the time-sharing process has been completed next are configured.
  • the scheduling function 24 of the hypervisor 20 repeatedly executes the processes in steps 972 to 974.
  • the scheduling function 24 is performed for one physical CPU 4 to 7, and when there are a plurality of physical CPUs, a plurality of scheduling processes are executed in parallel.
  • the physical CPUs 4 to 7 that are scheduled by the scheduling function 24 will be described as the physical CPU 4.
  • FIG. 16A, FIG. 16B, FIG. 16C, and FIG. 16D are flowcharts showing an example of the physical CPU dispatch start processing (972).
  • 16A shows the first half of the physical CPU dispatch start process
  • FIG. 16B shows the intermediate part
  • FIG. 16C shows the second half
  • FIG. 16D shows the logical CPU to be processed in the physical CPU dispatch start process. It is a flowchart when not doing.
  • the physical CPU dispatch start process (972) starts from the process 1001 in FIG. 16A.
  • the scheduling function 24 searches the unique logical CPU management table 300 corresponding to the physical CPU 4 for entries whose logical CPU state 304 is “2” indicating READY in order from the smallest entry number (1002 to 1004). If there is an entry whose logical CPU state 304 is “2” indicating READY, the scheduling function 24 proceeds to processing 1005.
  • the scheduling function 24 copies entries other than the entry number 301 to the logical CPU management table entry 500 for temporary storage in the logical CPU state 304 entry that is READY, and removes the entry from the unique logical CPU management table 300 (1005). ).
  • the scheduling function 24 decrements the entry number 301 of each entry in the unique logical CPU management table 300 by one (1006), and proceeds to step 1012, that is, step 1014 in FIG. 16C.
  • the scheduling function 24 searches the shared logical CPU management table 400 for entries in which the value of the logical CPU state 404 is “2” indicating READY in order from the smallest entry number 401 (1007 to 1009). If there is an entry whose logical CPU state 404 value is “2” indicating READY, the process proceeds to step 1010.
  • step 1013 that is, step 1022 of FIG. 16D.
  • step 1005 If there is an entry for the logical CPU state 404 that is READY in the shared logical CPU management table 400, it is the same as step 1005 above. That is, the scheduling function 24 copies the entry other than the entry number 401 of the entry from the shared logical CPU management table 400 to the temporary storage logical CPU management table entry 500 and removes the entry from the shared logical CPU management table 400 (1010). .
  • the scheduling function 24 decreases the entry number 401 of each entry in the shared logical CPU management table 400 by one (1011), and proceeds to Step 1012, that is, Step 1014 in FIG. 16C.
  • step 1014 in FIG. 16C it is determined whether or not the node number to which the physical CPU belongs matches the previous node number 504 in the temporary storage logical CPU management table entry 500 (1015). If YES in step 1016, the flow advances to step 1016. If they match, the flow advances to step 1017.
  • the scheduling function 24 writes the node number to which the physical CPU 4 belongs to the previous node number 504 of the temporary storage logical CPU management table entry 500, the total cache read count 505, the total cache hit count 506, and the total execution A process of writing “0” at time 507 is performed (1016).
  • the scheduling function 24 writes the current time at the execution start time 604 of the temporary calculation table 600 and the RUN into the logical CPU state 503 of the temporary storage logical CPU management table entry 500 (1017).
  • the scheduling function 24 resets a counter included in the monitoring function 25.
  • the scheduling function 24 resets the counters for the number of cache reads and the number of cache hits by the logical CPUs 811 and 812 to be activated with respect to the monitoring function 25, and starts these counts (1018).
  • the timers 16 to 19 of the physical CPUs 4 to 7 are set at a time slice time (or period) predefined by the hypervisor 20 (1019). At this time, the timers that cause the guest mode to end are generated by the timers 16 to 19 in the physical CPUs 4 to 7 that have passed the time slice time. Note that the timer mode is switched to the host mode by the timer interruption by the timers 16 to 19, and the control is transferred to the hypervisor 20.
  • the scheduling function 24 switches the physical CPUs 4 to 7 to the guest mode in which the hypervisor 20 is not interposed, starts the logical CPUs 811 and 812 (1020), and completes the physical CPU dispatch start process (972) (1021).
  • the scheduling function 24 writes “3” corresponding to HALT in the physical CPU state 202 of the entry of the physical CPU 4 in the physical CPU management table 200 (1023).
  • the scheduling function 24 puts the physical CPU into a dormant state (1024), and the scheduling process ends (1025).
  • the scheduling function 24 is a logical CPU that preferentially selects a logical CPU 811 (812) of an entry with a small entry number 401 in the unique logical CPU management table 400 and causes the physical CPUs 4 to 7 to execute it.
  • the scheduling function 24 When there is no “2” logical CPU state 404 entry corresponding to READY in the unique logical CPU management table 400, the scheduling function 24 similarly reads “2” corresponding to READY from the shared logical CPU management table entry 500.
  • the logical CPU state 503 is searched and the logical CPU 811 (812) is selected, and when there is still no work to be processed by the physical CPU, the physical CPU is put into a dormant state.
  • the scheduling function 24 can always execute the logical CPU 811 by the physical CPU 4 by newly inserting an entry of the logical CPU 811 into the unique logical CPU management table 300.
  • the scheduling process is an entry from the shared logical CPU management table 400 that holds entries of the logical CPUs 811 (812) that can be executed by all the physical CPUs 4 to 7. Therefore, it can be ensured that any one of the physical CPUs 4 to 7 executes the logical CPU in the READY state.
  • the scheduling function 24 targets the physical CPU # 0 (4) in step 954 of the flowchart of FIG. 12 in the states of FIGS. 2, 5, 7 to 14, 13, and 14.
  • the scheduler process is started, the results of the processes in the flowcharts of FIGS. 16A, 16B, 16C, and 16D are shown in FIGS. 17A and 17B, and the reason for this will be described below.
  • step 1010 in FIG. 16B is not performed this time.
  • step 1017 the current time is written in the execution start time 604 of the temporary calculation table 600, and the logical CPU state 503 of the temporary storage logical CPU management table entry 500 is updated to a value “1” corresponding to the RUN state.
  • the physical CPU # 0 (4) is switched to the guest mode by the processing of steps 1018 to 1020.
  • Step 1017 as shown in FIG.
  • the physical CPUs 4 to 7 have a virtualization support function, and have a host mode for executing the hypervisor 20 and a guest mode for executing the guest OS.
  • FIG. 18 is a flowchart showing an example of the logical CPU execution process (973) shown in FIG. The content of this process is that the target physical CPU # 0 (4) is executed in the guest mode until the cause of termination of the guest mode of the physical CPU # 0 (4) occurs, and the logical CPU 811 being executed by the monitoring function 25 is executed. The cache read count and cache hit count are counted (1052).
  • the guest mode termination factor code and factor, and the subsequent logical CPU state are predetermined in the hypervisor, and are identified by the logical CPU termination factor code and logical CPU state correspondence table shown in FIG.
  • FIG. 19 is a diagram illustrating an example of the cause code table 460 for ending the guest mode.
  • the factor code table 460 stores a factor code 461 that stores an instruction when the guest mode ends, a factor 462 that stores the name of the factor, and a logical CPU state 463 that stores the state of the logical CPU after the execution of the factor code. An entry is constructed from.
  • FIG. 20A, 20B, and 20C are flowcharts illustrating an example of processing performed in the physical CPU dispatch end processing (974) of FIG.
  • the physical CPU dispatch end process (974) starts from step 1061 in FIG. 20A.
  • FIG. 20A is the first half of a flowchart showing an example of the physical CPU dispatch end process of the scheduling process.
  • FIG. 20B shows an intermediate part of the physical CPU dispatch end process
  • FIG. 20C shows a latter half part.
  • the scheduling function 24 refers to the factor code table 460, determines the logical CPU state of the factor code table 460 of FIG. 19 according to the cause of termination of the guest mode of the logical CPU 811, and determines the logical value of the temporary storage logical CPU management table entry 500. Write to CPU state 503. Then, the scheduling function 24 stops the timer 16 set in the physical CPU # 0 (4) (1062). The scheduling function 24 determines the logical CPU state based on the termination factor with reference to the factor code table 460 of FIG.
  • Step 1064 includes processing when the logical CPU 811 uses up the time slice, and in this case, processing corresponds to the timer interrupt of the physical CPU # 0 (4).
  • the scheduling function 24 reads the number of cache reads and the number of cache hits of the logical CPU 811 from the monitoring function 25, and writes them in the corresponding fields 602 and 603 of the temporary calculation table 600.
  • the scheduling function 24 adds the read cache read count and the cache hit count to the total cache read count 505 and the total cache hit count 506 of the temporary storage logical CPU management table entry 500 (1066).
  • the scheduling function 24 writes the current time at the execution end time 605 of the temporary calculation table 600 and calculates the difference between the execution end time 605 and the execution start time 604. Then, the scheduling function 24 adds the calculated difference to the execution time 508 or 509 corresponding to the node to which the physical CPU # 0 that executed the logical CPU 811 belongs in the temporary storage logical CPU management table entry 500 (1067). . The scheduling function 24 also adds the calculated difference to the total execution time 708 of the threshold management table 700 (1067).
  • the scheduling function 24 divides the total cache hit count 506 of the temporary storage logical CPU management table entry 500 by the total cache read count 505, and writes the result to the total cache hit rate 601 of the temporary calculation table 600 (1068).
  • the scheduling function 24 acquires, from the threshold management table 700, an entry in which the LPAR number 501 of the temporary storage logical CPU management table entry 500 matches the logical CPU number 502 (1071 in FIG. 20B).
  • this entry acquired from the threshold management table 700 is set as a target entry of the threshold management table 700.
  • the scheduling function 24 determines whether or not the monitor valid flag 705 of the target entry in the threshold management table 700 is “1” (1072). If the monitor valid flag 705 is 1, the process proceeds to step 1073. Otherwise, the process proceeds to step 1074.
  • the scheduling function 24 uses the total cache hit rate 707 and the total execution time 708 in the target entry of the threshold management table 700 to the total cache hit rate 601 of the temporary calculation table 600 and the total execution time of the logical CPU management table entry 500 for temporary storage. 507 is written, "1" is written to the write completion flag 706, and "0" is written to the monitor valid flag 705 (1073).
  • the scheduling function 24 determines whether or not the total execution time 507 of the temporary storage logical CPU management table entry 500 is greater than the threshold ⁇ 704 of the entry in the threshold management table 700 (1074). If the total execution time 507 is greater than the threshold value ⁇ 704, the process proceeds to step 1075. If the total execution time 507 is equal to or less than the threshold value ⁇ 704, the process proceeds to step 1078.
  • step 1075 the scheduling function 24 determines whether or not the total cache hit rate 601 of the temporary calculation table 600 is smaller than the threshold ⁇ 703 of the target entry of the threshold management table 700. If the total cache hit rate 601 is smaller than the threshold value ⁇ 703, the process proceeds to step 1076. If the total cache hit rate 601 is equal to or greater than the threshold value ⁇ 703, the process proceeds to step 1078.
  • step 1076 the scheduling function 24 determines whether or not a physical CPU in the HALT state exists in a different node from the node to which the physical CPU belongs in the physical CPU management table 200. If there is a physical CPU in the HALT state other than the node to which the physical CPU belongs, the process proceeds to step 1077, and if not, the process proceeds to step 1078.
  • the total execution time 507 of the temporary storage logical CPU management table entry 500 is larger than the threshold value ⁇ 704, the total cache hit rate 601 is smaller than the threshold value ⁇ 703, and HALT is applied to a node other than the node to which the physical CPU belongs. If there is a physical CPU in the state, the process proceeds from step 1077 to step 1079 in FIG. 20C. If any one of the determinations in steps 1074 to 1076 is NO, the process proceeds from step 1078 to step 1083 in FIG. 20C.
  • Step 1079 proceeds to Step 1080, and Steps 1080 to 1082 perform the following processing.
  • the scheduling function 24 selects the physical CPU of the node that is in the HALT state at another node and has the shortest execution time (508 or 509) in the temporary storage logical CPU management table entry 500 (1080).
  • the scheduling function 24 temporarily manages the logical CPU for temporary storage as a new entry number 301 by adding “1” to the largest entry number 301 to the unique logical CPU management table 300 corresponding to the physical CPU selected in step 1080. It is inserted into the table entry 500 (1081). However, if the entry in the unique logical CPU management table 300 is empty, the entry number 301 of the entry to be inserted is “1”.
  • the scheduling function 24 wakes up the physical CPU selected in step 1080 by the physical CPU wake-up function 23 of the hypervisor 20 (1082).
  • step 1083 proceeds to processing 1084.
  • step 1084 the logical CPU management table entry 500 for temporary storage is inserted into the shared logical CPU management table 400 corresponding to the physical CPU as a new entry number 401 obtained by adding 1 to the largest entry number 401 (1084). However, if the entry of the shared logical CPU management table 400 is empty, the entry number 401 of the entry to be inserted is “1”.
  • step 1082 or step 1084 Upon completion of the processing in step 1082 or step 1084, the physical CPU dispatch end processing is completed (1085).
  • the scheduling function 24 After the guest mode of the logical CPU is completed, depending on the logical CPU state 503, after performing post-processing by the hypervisor 20, the scheduling function 24 performs the cache read count and cache hit during the period when the logical CPU is executed from the monitoring function 25. The number of times is acquired, and the total cache hit rate 707 and the total execution time 708 which are statistical information are calculated and updated.
  • the scheduling function 24 compares the total cache hit rate 707 with the threshold ⁇ to It is determined whether the memories 8 and 9 are effectively used.
  • the specific logical CPU management table 300 is used to execute the logical CPU 811 by the physical CPU in another node. Add an entry for the logical CPU that was executed. Thereby, the physical CPU that executes the logical CPU can be moved from node to node, and when the memory access performance of the logical CPU 811 is measured in a time longer than the threshold ⁇ , the physical memory 10 viewed from the logical CPU 811, The access cost to 11 can be varied.
  • the logical CPU 811 may benefit from the cache memory 8 and thus the logical CPU may be continuously executed by the physical CPUs 4 and 5 of the same node. Therefore, an entry of the executed logical CPU 811 is added to the shared logical CPU management table 400.
  • the entry of the logical CPU 811 is obtained from the shared logical CPU management table 400 in the scheduling process for the physical CPUs 6 and 7 of the other nodes. It is possible to extract and execute the logical CPU 811.
  • the access cost to 10 and 11 can vary.
  • the selection of the logical CPUs 811 and 812 selected in the physical CPU dispatch start process becomes random.
  • the memory access performance of the logical CPUs 811 and 812 is measured at a time T longer than the threshold value ⁇ , the access cost to the physical memories 10 and 11 as viewed from the logical CPU can vary.
  • FIG. 21A, FIG. 21B, and FIG. 21C show the results of performing the processing of FIG. 20A, FIG. 20B, and FIG. 20C from the state shown in FIG. 17A and FIG. 17B.
  • the execution start time 604 of the logical CPU 811 is “200”
  • the execution end time is “1000” as described above
  • the termination factor of the logical CPU 811 is a timer interrupt
  • the cache read of the physical CPU 4 during the period of execution of the logical CPU 811 is performed. It is assumed that the number of times is “1000” and the number of cache hits is “300”.
  • FIGS. 21A to 21C show the results of performing steps 1061 to 1068 of FIG. 20A.
  • FIG. 21A is a diagram showing a temporary storage logical CPU management table entry 500 when the physical CPU dispatch end process of FIG. 20A is executed.
  • FIG. 21B is a diagram showing a temporary calculation table 600 when the physical CPU dispatch end process of FIG. 20A is executed.
  • FIG. 21C is a diagram showing the relationship between the temporary storage logical CPU management table entry 500 and the common logical CPU management table 400 when the processes of FIGS. 20B and 20C are executed.
  • step 1062 of FIG. 20A the logical CPU state 503 of the temporary storage logical CPU management table entry 500 is as shown in FIG. The value is changed from RUN to “2” indicating READY.
  • the scheduling function 24 performs the temporary calculation shown in FIG. 21B in step 1066 of FIG. In the table 600, “1000” is written in the cache read count 602, and “300” is written in the cache hit count 603. Further, the scheduling function 24 adds “1000” to the total cache read count 505 and “300” to the total cache hit count 506 in the temporary storage logical CPU management table entry 500 of FIG. 21A.
  • the scheduling function 24 executes the temporary calculation table 600 of FIG. 21B. "1000" is written at the end time 605, the difference 800 between the execution end time 605 and the execution start time 604 is calculated, the total execution time 507 of the temporary storage logical CPU management table entry 500 of FIG. The difference of 800 is added to the execution time 508 in the CPU 4.
  • step 1068 of FIG. 20A “300” which is the total cache hit count 506 of the temporary storage logical CPU management table entry 500 shown in FIG. 21A is divided by “1000” which is the total cache read count 505. The result “0.3” is written in the total cache hit rate 601 of the temporary calculation table 600 shown in FIG. 21B.
  • FIG. 21C is a diagram showing the relationship between the temporary storage logical CPU management table entry 500 and the common logical CPU management table 400 as a result of performing the processing of FIGS. 20B and 20C.
  • the monitor valid flag 705 is “0” as shown in FIG. Is not implemented, and the threshold management table 700 is not updated.
  • the threshold ⁇ 704 is “2000”, and the total execution time 507 of the temporary storage logical CPU management table entry 500 of FIG. Since it is larger than “800”, the process proceeds from step 1074 in FIG. 20B to step 1084 in FIG. 21C.
  • the entry number 401 in FIG. 21C is set to “1” in step 1084 in FIG. Insert into the CPU management table 400.
  • FIG. 22 is a flowchart showing an example of threshold setting processing for storing thresholds in the threshold management table 700.
  • the threshold setting process shown in FIG. 22 is performed by the LPAR management function 22 when the user inputs a setting instruction for the total cache hit rate threshold and the total execution time threshold to the hypervisor 20 via the input / output device 13 and the input / output function 21. Processing to be performed.
  • the LPAR management function 22 reads the LPAR number, logical CPU number, total cache hit rate threshold value, and total execution time threshold value for setting the threshold value from the input / output function 21 (1102).
  • the LPAR management function 22 writes the read total cache hit rate threshold value and total execution time threshold value as the threshold ⁇ 703 and the threshold ⁇ 704 in the entry of the threshold management table 700 having the LPAR number and logical CPU number read in step 1102 ( 1103).
  • the threshold management table 700 is set.
  • FIG. 23 is a flowchart showing an example of monitor validation processing for measuring the cache hit rate of a logical CPU.
  • the monitor validation process shown in FIG. 23 is a process performed by the monitoring function 25 when the user inputs a monitoring validation command to the hypervisor 20 via the input / output device 13 and the input / output function 21.
  • the monitoring function 25 reads the LPAR number and logical CPU number to be monitored from the input / output function 21 (1112).
  • the monitoring function 25 writes “1” in the monitor valid flag 705 in the entry of the threshold management table 700 having the LPAR number and the logical CPU number read in step 1112 (1113).
  • FIG. 24 is a flowchart illustrating an example of a monitoring process for measuring a cache hit rate of a logical CPU.
  • the monitoring process shown in FIG. 24 is performed when a user inputs a monitoring execution command to the hypervisor 20 via the input / output device 13 and the input / output function 21. This is processing performed by the monitoring function 25.
  • the monitoring function 25 reads the LPAR number and logical CPU number for monitoring from the input / output function 21 (1122).
  • the monitoring function 25 determines whether or not the monitor valid flag 705 and the write completion flag 706 are both 0 in the entry of the threshold management table 700 including the LPAR number and logical CPU number read in step 1122 (1123). If both are "0", the process proceeds to step 1124 to output an error via the input / output function 21.
  • the monitoring function 25 determines whether or not the write completion flag 706 is “1” in the entry of the threshold management table 700 including the LPAR number and the logical CPU number, and waits until the write completion flag 706 becomes “1”. (1125).
  • the monitoring function 25 sets the total cache hit rate 707 and the total execution time 708 in the entry of the threshold management table 700 including the LPAR number and the logical CPU number.
  • the data is output via the input / output function 21 and the write completion flag is set to “0” (1126).
  • the user can obtain the total cache hit rate and total execution time for any logical CPU.
  • FIG. 25A, FIG. 25B, and FIG. 25C show threshold management until the monitoring process is completed after the user issues a monitoring validation instruction and a monitoring execution instruction to the logical CPU # 0 (811) of LPAR # 1 (801). The transition of the table 700 is shown.
  • FIG. 25A is a diagram showing the threshold management table 700 after the monitor validation process of FIG. 23 is performed.
  • FIG. 25B is a diagram showing the threshold management table 700 after performing the physical CPU dispatch end process of FIGS. 20A to 20C.
  • FIG. 25C is a diagram illustrating the threshold management table 700 after the monitoring process of FIG. 24 is performed.
  • the logical CPU # 0 (811) of the LPAR # 1 (801) has a total cache hit rate of “0.4” and a total execution time between the setting of the monitor activation and the completion of the monitoring process. It is assumed that it was “500”.
  • the reason for the transition of FIGS. 25A to 25C will be described.
  • FIG. 25A shows that the monitor valid flag 705 is “1” when the LPAR number 701 is 1 and the logical CPU number 702 is “0” in the threshold management table 700 as a result of the process of step 1113 of the monitor validation process shown in FIG. The result is updated to "".
  • FIG. 25B shows the total cache for the entry whose LPAR number 701 is “1” and logical CPU number 702 is “0” in the threshold management table 700 in step 1073 shown in FIG. 20B as the physical CPU dispatch end process 974 of the scheduling process. This is a result of updating the hit rate 707 to “0.4”, the total execution time 708 to “500”, the write completion flag 706 to “1”, and the monitor valid flag 705 to “0”.
  • FIG. 25C shows that the monitoring function 25 performs the total cache hit for the entry of the LPAR number 701 of “1” and the logical CPU number 702 of “0” in the threshold management table 700 by the step 1126 of the monitoring process shown in FIG. This is a result of updating the write completion flag 706 to “0” after outputting the rate 707 and the total execution time 708 to the input / output function 21.
  • the user permits each logical CPU to continuously execute on the physical CPU in one node up to the time when the predetermined cache hit rate is expected, that is, the threshold ⁇ , by the threshold setting process shown in FIG. Then, the physical CPUs 4 to 7 to which the logical CPU 811 (812) is assigned can be controlled in accordance with whether or not the cache hit rate has reached the threshold value ⁇ after the total execution time of the logical CPU has exceeded the threshold value ⁇ .
  • the outline of the control content is as follows. If the total cache hit rate has reached the threshold value ⁇ , the logical CPUs 811 and 812 have benefited from the cache memories 8 and 9, so that even if the logical CPUs are continuously executed by the physical CPUs 4 to 7 of the same node. Good. For this reason, the hypervisor 20 does not wake up even when a physical CPU in the HALT state exists in another node, and executes it on any of the physical CPUs that are currently woken up.
  • the hypervisor 20 determines that the processing executed by the logical CPU 811 does not benefit from the cache, and the physical CPUs 4 to 7 in the HALT state are sent to another node. Is present, the physical CPU in the HALT state is woken up and assigned to execute the logical CPU.
  • the memory access performance is measured in a time longer than the threshold value ⁇ , the access cost of the physical memories 10 and 11 as viewed from the logical CPU is varied, and the memory access cost to the physical memories 10 and 11 is maximized. It can be an intermediate value between the value and the minimum value.
  • FIG. 26 is a graph showing the relationship between the execution time of the logical CPU and the cache hit rate.
  • the graph G1 in the figure is a graph showing the relationship between the execution time of the logical CPU having the characteristic that the cache hit rate increases in a short time and the cache hit rate.
  • the graph G2 is a graph showing the relationship between the execution time of the logical CPU having the characteristic that the cache hit rate gradually increases and the cache hit rate.
  • the graph G3 is a graph showing the relationship between the execution time of the logical CPU having the characteristic that the cache hit rate is changing without increasing and the cache hit rate is increased.
  • the cache hit rate is increased in a shorter time than the graph G2 and the graph G3.
  • the amount of memory used by the program to be processed on the logical CPU is smaller than the capacity of the cache memories 8 and 9 due to the high cache hit rate after the execution time exceeds the threshold value ⁇ . It is conceivable.
  • the cache hit rate gradually increases compared to the graph G1. In such a case, it is considered that the cache hit rate is gradually increased by performing a large amount of writing in the cache memories 8 and 9, so that the memory used by the program is about the same as the cache capacity. Etc. are considered.
  • the cache hit rate fluctuates without increasing as compared with the graph G1 and the graph G2.
  • the amount of memory used by the program is larger than the cache capacity because the cache hit does not increase even if data is written to the cache memories 8 and 9.
  • the time for the cache hit rate to rise to the predetermined threshold ⁇ differs depending on the program processed by the logical CPUs 811 and 812.
  • the monitoring function 25 causes the cache hit rate as shown in the graphs G1 to G3 and the logical CPU 811, A relationship with the continuous execution time of 812 can be obtained, and as a result, the time until a predetermined cache rate is reached can be checked.
  • the graph G1 Is set to a value larger than “0.5” where the ratio of the number of accesses to the cache memories 8 and 9 and the physical memories 1 and 011 is exactly in the middle.
  • the execution time of the logical CPU 811 (812) until the cache hit rate reaches the threshold value ⁇ is set as the threshold value ⁇ in the threshold value setting process described above.
  • the number of accesses to the physical memories 1 and 011 is the number of logical CPU 811 (812) cache misses.
  • the threshold is set when the logical CPU 811 (812) is processing a program with a small memory usage. Since the cache hit rate is higher than ⁇ , the benefits of the cache memories 8 and 9 are easily received, and the cache hit rate is lower than the threshold ⁇ when a program with a large amount of memory is being processed. Therefore, the logical CPU 811 (812 The access cost to the physical memories 10 and 11 can be varied, and the memory access cost can be set to an intermediate value between the maximum value and the minimum value.
  • the threshold value setting process of the LPAR management function 22 performs cache processing. It is also possible to tune the threshold values ⁇ and ⁇ in real time by feeding back the hit rate to the input / output device 13.
  • the cache hit rate of the logical CPUs 811 and 812 is higher than the threshold value ⁇ in the state where there is a dormant physical CPU. Is higher, the logical CPUs 811 and 812 are executed again by the physical CPUs 4 to 7 of the same node so that the benefits of the cache memories 8 and 9 are easily received.
  • the cache hit rate is low, the access to the physical memories 10 and 11 is moved between physical CPUs on a plurality of nodes, and the access cost to the physical memories 1 and 011 viewed from the logical CPUs 811 and 812 is maximized. And the minimum value can be set to an intermediate value.
  • FIG. 27 is a block diagram showing a configuration of hardware (virtual computer) 1 having a NUMA configuration in which the memory access cost differs depending on the memory access position.
  • the cost for accessing (31) the physical memory 1 (11) of the node (1) 3 different from the node 0 (2) to which the physical CPU 1 (5) belongs from the physical CPU 1 (5) is the node (0) 2 and the node (1) 3 must be routed through the interconnect 14 to connect the physical CPU (1) 5 to the physical memory (0) 10 of the node (0) 2 to which the physical CPU (1) 5 belongs.
  • the hardware 1 operates a conventional hypervisor (not shown).
  • FIG. 28 shows a time series of logical CPUs (solid lines) and hypervisors (dotted lines) that are executed by the physical CPUs of the nodes 0 and 1, and the time advances in the downward direction in the figure.
  • An arrow 40 is a time required for logical CPU processing
  • a dashed arrow 60 is a time required for hypervisor processing
  • a broken line 70 is a hibernation time
  • a time for measuring an average value of memory access performance is a time T80.
  • the maximum length of the arrow 40 indicating the processing of the logical CPU is a unit time called a time slice defined in advance by the hypervisor.
  • the time slice is generally set to about several tens of milliseconds.
  • a logical CPU when a logical CPU is continuously executed by physical CPUs on the same node, has the hypervisor 20 passed the time ⁇ until the continuous execution time of the logical CPU reaches a predetermined cache hit rate? If the time ⁇ has elapsed, it is determined whether or not the cache hit rate of the logical CPU has reached the threshold value ⁇ .
  • the hypervisor 20 determines that the benefits of the cache memories 8 and 9 have not been received, and is in a dormant state on a node different from the node that has continuously executed the logical CPU. If the physical CPU exists, the physical CPU is woken up to execute the logical CPU.
  • the hypervisor 20 continues to wake up even if there is a dormant physical CPU on a node other than the node on which the logical CPU is continuously executed.
  • the logical CPU is caused to execute on the physical CPU that has woken up at the node.
  • the hypervisor 20 is the physical CPU that is currently woken up. The logical CPU is executed again.
  • the logical CPU to be executed is held in the queue of the logical CPU of the hypervisor 20, and the logical CPU is executed on the physical CPU in the order of entering the queue, and the logical CPU is executed in a predetermined cycle (such as a time division cycle). When completed, re-queue the logical CPU.
  • the threshold value ⁇ of the total cache hit rate is 0.5 and the threshold value ⁇ of the total execution time is two time slices of the logical CPU in the present invention, it is executed by the physical CPUs 4 to 7 of each node.
  • An example of a time series of a logical CPU and a hypervisor is shown.
  • the time advances in the downward direction in the figure.
  • the arrows 41 to 44 indicate the time required for processing by the logical CPU (eg, 811), and the broken arrow 61 indicates the processing by the hypervisor 20.
  • the time required, the broken line 71 is the hibernation time, and the time for measuring the average value of the memory performance is the time T81.
  • the hypervisor 20 determines that the cache hit rate of the logical CPU has not reached the threshold ⁇ , and the hypervisor 20 is in a dormant state on another node 1. Even if there is a physical CPU, the logical CPU is to be executed by the physical CPU that has been woken up as much as possible without being woken up.
  • the hypervisor 20 determines that it does not benefit from the cache memories 8 and 9, wakes up the physical CPU belonging to the node 1, and sets the logical CPU to the node 1 is executed by a physical CPU belonging to 1.
  • the hypervisor 20 determines that the logical CPU does not benefit from the cache memories 8 and 9 as in the period 90 in which the threshold value ⁇ of the first total execution time has elapsed, and wakes up the physical CPU belonging to the node 0. The logical CPU is executed again by the physical CPU belonging to the node 0.
  • the hypervisor 20 Therefore, the logical CPU is continuously executed by the physical CPU belonging to the node 0 without waking up the physical CPU belonging to the node 1 (44).
  • the cache hit rate is lower than the total cache hit rate threshold value ⁇ immediately after the period 90 and immediately after the period 91, so that the logical CPU frequently accesses the physical memories 10 and 11. Can be considered.
  • the total of the logical CPU execution times 41 and the total of the logical CPU execution times 42 are both equal to or greater than the total execution time threshold ⁇ .
  • the logical CPU is executed by the physical CPU belonging to the node 0 and the physical CPU belonging to the node 1 for the same total execution time threshold ⁇ .
  • FIG. 30 shows a hardware diagram when the process is continued.
  • the physical memory access during the time T is executed by the physical CPU 1 (5) belonging to the node 0 and the physical CPU 2 (6) belonging to the node 1 for the same total execution time.
  • the memory access 31 and the memory access 32 are performed in the same time. Therefore, the average physical memory access cost at the time T of the logical CPU is approximately between the local memory access cost, ie, the minimum value, and the remote memory access cost, ie, the maximum value.
  • the physical memory for the logical CPUs when there are sufficient physical CPUs for the number of logical CPUs, the physical memory for the logical CPUs.
  • the access performance is observed at a time T of about 1 second, at least an intermediate performance between the highest performance and the lowest performance is obtained, and when the cache hit rate is equal to or higher than the threshold value ⁇ , the cache memories 8 and 9 are used. High memory read / write performance can be obtained.
  • FIG. 31 shows a case where the virtual machine system in which no physical CPU in the dormant state is busy is busy in the present invention.
  • FIG. 31 shows a time series of processing of the logical CPU and the hypervisor executed by the physical CPUs of the nodes 0 and 1 as in FIG. 28, and time advances in the downward direction in the figure.
  • FIG. 31 there are three logical CPUs, logical CPUa, logical CPUb, and logical CPUc to be executed, arrows 50, 53, and 56 indicate the time required for processing by the logical CPUa, and arrows 51 and 54 indicate processing by the logical CPUb.
  • the time required, arrows 52, 55 and 57 are the time required for the processing of the logical CPUc, the broken arrows 62 to 67 are the time required for the processing of the hypervisor 20, and the time for measuring the average value of the memory performance is the time T82.
  • the logical CPU states in the queue of the logical CPU when the processing of the logical CPU and the hypervisor 20 is started are also illustrated in time series.
  • the hypervisor 20 sequentially takes out the logical CPU to be executed next from the elements on the left side of the figure in the queue, and when the execution of the logical CPU is completed, it is input as the elements of the queue on the right side of the figure. For example, in the queue when the processing 51 of the logical CPUb is completed, c, a, and b are obtained. Since the processing of the logical CPUb is completed, b is inserted on the right side of the queue in the figure, and c, That is, the logical CPUc is taken out by the hypervisor 20.
  • the logical CPU that the hypervisor 20 takes out from the queue is also random, and the physical CPU that executes the logical CPU is also random.
  • the hypervisor 20 determines the logical CPU 811 and 812 according to the result of comparing the cache hit rate of the logical CPUs 811 and 812 with the threshold ⁇ . The physical CPUs 4 to 7 to be executed next are determined. Then, if the cache hit rate, which is the performance information of the logical CPUs 811 and 812, is greater than or equal to the threshold ⁇ , the hypervisor 20 selects the physical CPUs 4 to 5 in the same node, so that the logical CPU 811 is stored in the cache memory 8. Data or instructions can be read and processing can be performed efficiently.
  • the hypervisor 20 selects the physical CPUs 6 to 7 that are inactive in other nodes, wakes up the physical CPU, and then the logical CPUs 811 and 812. Is executed.
  • the cache hit rate is less than the threshold value ⁇
  • the physical CPU that executes the logical CPUs 811 and 812 is sequentially moved to the physical CPUs of other nodes, so that the state of high access cost to the physical memory continues. Can be suppressed.
  • the monitoring function 25 measures performance information related to access to the cache memories 8 and 9 of the physical CPUs 4 to 7 .
  • the processor performance monitoring unit 12 may measure performance information such as the number of cache reads and the number of cache hits of the physical CPUs 4 to 7, and the monitoring function 25 may calculate the cache hit rate.
  • the processor performance monitoring unit 12 is connected to each of the nodes 2 and 3 and measures information related to the performance of the physical CPUs 4 to 7 (or logical CPUs).
  • a counter for measuring the number of reads (cache read count) of the cache memories 8 and 9 of the physical CPUs 4 to 7 (or logical CPU) and a counter for measuring the number of hits (cache hit count) of the cache memories 8 and 9 are provided (respectively). (Not shown).
  • the physical CPUs 4 and 5 share the cache memory 8
  • the physical CPUs 6 and 7 share the cache memory 9
  • the cache processor performance monitoring unit 12 determines the number of cache reads for each of the physical CPUs 4 to 7.
  • a counter for counting the number of cache hits is provided.
  • the hypervisor 20 considers the logical CPU access after the time when the counter of the processor performance monitoring unit 12 is reset, and measures the number of cache reads and the number of cache hits.
  • the time slice time set in the timers 16 to 19 may be the timer interrupt period of the guest OSs (not shown) of the LPARs 801 and 802.
  • the configuration of the computer, the processing unit, and the processing unit described in the present invention may be partially or entirely realized by dedicated hardware.
  • the various software exemplified in this embodiment can be stored in various recording media such as electromagnetic, electronic and optical, for example, non-transitory storage media, and can be stored in a computer through a communication network such as the Internet. Downloadable.
  • the present invention is not limited to the above-described embodiments, and includes various modifications.
  • the above-described embodiments have been described in detail for easy understanding of the present invention, and are not necessarily limited to those having all the configurations described.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

 キャッシュメモリを備えた物理CPUと物理メモリを含むノードを複数有し、複数のノードの計算機資源から論理CPUと論理区画を生成して仮想計算機を稼動させる仮想化部が、論理CPUに物理CPUを割り当てるスケジューリング方法であって、複数のノードは、インターコネクトを介して接続され、仮想化部が、論理CPUに割り当てる物理CPUを選択し、論理CPUから物理メモリへのアクセス性能に関する性能情報を測定し、性能情報が所定の閾値を満たす場合には、論理CPUに割り当てる物理CPUを、前回割り当てた物理CPUと同一ノードから選択し、性能情報が所定の閾値を満たさない場合には、論理CPUに割り当てる物理CPUを、前回割り当てた物理CPUのノードとは異なるノードから選択する。

Description

仮想計算機システムおよびスケジューリング方法
 本発明は、物理計算機上の物理リソースを論理分割した論理区画(以下:LPAR)を複数生成し、複数の物理CPUを複数の論理CPU間で時分割により共有する際のスケジューリングに関する。
 近年、1台の物理計算機の性能が向上したため、計算機の集約率を上げて管理コストや消費電力の削減をするべく、物理計算機上に論理的な計算機を複数台構築する方法が一般的となってきている。論理的な計算機の構築方法として、ハイパバイザが物理CPU、物理メモリ、入出力装置などの計算機リソースを分割または共有して論理的な計算機であるLPAR(Logical PARtition)に割り当て、1個以上の論理的な計算機を生成して制御する方法が挙げられる。
 一つの物理CPUを複数のLPARにて共有させるには、ハイパバイザが物理CPUをタイムスライスとよばれる単位時間にて時分割し、各々のLPARに割り当てられた論理CPUの実行時間を管理して共有させる必要がある。この制御を一般的にスケジューリングとよぶ。
 一方で、物理計算機において、複数のCPUとメモリを一つのノードとよばれる組にまとめ、ある物理CPUから見て同じノード内のメモリへのアクセスコストが、他のノード内のメモリへのアクセスコストと比べて小さくなるような計算機構成のことをNUMA(Non-Uniform Memory Access)構成と呼ぶ。このとき、同じノード内のメモリをローカルメモリ、他のノードのメモリをリモートメモリとよぶ。
 全ての物理CPUからのメモリアクセスコストが同じとなるUMA(Uniform Memory Access)構成では、物理CPUを多く搭載する場合において物理メモリアクセスが物理CPU間で競合が発生しやすくなるのに対し、NUMA構成ではノードごとに並列して物理メモリアクセスができるため競合を減らすことができる、というメリットがある。このため、搭載CPU数が増加している近年では、NUMA構成を採用している計算機は少なくない。
 物理メモリへのアクセスコストを軽減する機構としては、物理CPUに対して物理的に近い位置にメモリ内容を一時保存する物理メモリキャッシュ(以下: キャッシュ)が存在する。物理メモリへアクセスを行なう度にキャッシュにもアクセスしたメモリ内容を保存することで、次回同じメモリ内容へアクセスする際はキャッシュへアクセスすればよくなるため、結果的に物理メモリへのアクセスコストを軽減できるのである。なお、一般的にキャッシュへのアクセス速度はローカルメモリにアクセスするよりも高速にアクセスすることができる。
 特許文献1の仮想計算機の実装方法では、システム全体がビジーのとき、より優先度の高い処理をLPARの処理能力の低下を抑制しながら物理CPU間で分散して実施する、という技術が開示されている。
特開2008-186136号公報
 しかしながら、上記特許文献1では、物理CPUがアイドルであればその物理CPU上で優先度の高い処理を繰り返し実施してしまう。これは、優先度の高い処理をLPARの処理として置き換えて考えても同様なことが言える。
 NUMA構成の計算機の場合、LPARの処理を一つの物理CPUで処理させ続けてしまうと、当該LPARの処理に対してキャッシュ容量以上のメモリアクセスが伴い、かつ、処理を実行する物理CPUに対してリモートメモリへのアクセスとなっていた場合、計算機システム全体がビジーにならない限りリモートメモリへのアクセスを継続し、物理メモリのアクセスコストが高い状態で処理を継続してしまう、という問題があった。
 そこで本発明は、上記問題点に鑑みてなされたもので、物理メモリへのアクセスコストが高い状態が継続するのを抑制することを目的とする。
 本発明は、キャッシュメモリを備えた物理CPUと物理メモリを含むノードを複数有し、前記複数のノードの計算機資源を仮想計算機に割り当てる仮想化部と、を備えた仮想計算機システムであって、前記複数のノードは、インターコネクトを介して接続され、前記仮想化部は、前記仮想計算機に割り当てる計算機資源として論理区画と論理CPUを生成する論理区画管理部と、前記論理CPUを実行する前記物理CPUを選択するスケジューリング部と、前記論理CPUから前記物理メモリへのアクセス性能に関する性能情報を測定するモニタリング部と、を備え、前記スケジューリング部は、前記性能情報が所定の閾値を満たす場合には、前記論理CPUを実行する前記物理CPUを、前回実行した物理CPUと同一ノードから選択し、前記性能情報が所定の閾値を満たさない場合には、前記論理CPUを実行する前記物理CPUを、前回実行した物理CPUのノードとは異なる他のノードから選択する。
 本発明によれば、NUMA構成の計算機のように、複数の物理CPUが複数の物理メモリにアクセスする際に、物理CPUと物理メモリの位置関係に応じてメモリのアクセス性能が異なる物理計算機において、論理CPU数に対して物理CPUの数が十分にある場合には、論理CPUに対する物理メモリのアクセス性能を、1秒程度の所定の観測時間にて観測した際に、最高性能と最低性能の中間程度の性能が少なくとも得られ、さらにキャッシュヒット率が高い際にはキャッシュメモリによる高いメモリリード、ライト性能となるという効果が得られる。
本発明の第1の実施例を示し、仮想計算機システムの一例を示すブロック図である。 本発明の第1の実施例を示し、ハイパバイザが管理するリソース管理データの詳細を示すブロック図である。 本発明の第1の実施例を示し、LPARの設定を保持するLPAR管理テーブルの一例を示す図である。 本発明の第1の実施例を示し、論理CPUを稼動させる物理CPUの情報を保持する物理CPU管理テーブルの初期状態を示す図である。 本発明の第1の実施例を示し、CPUの状態とコードとの対応関係を示すCPU状態テーブルの一例を示す図である。 本発明の第1の実施例を示し、CPUの状態遷移図である。 本発明の第1の実施例を示し、物理CPUごとに設定された論理CPUの情報を保持する固有論理CPU管理テーブルの初期状態を示す図である。 本発明の第1の実施例を示し、全物理CPUで稼動させることのできる論理CPUの情報を保持する共有論理CPU管理テーブルの初期状態を示す図である。 本発明の第1の実施例を示し、論理CPUを物理CPUで稼動させるときに一時的に論理CPUの情報を保持する一時保管用論理CPU管理テーブルの初期状態を示す図である。 本発明の第1の実施例を示し、論理CPUを実行させる物理CPUを選択する際の計算情報を一時的に保管する一時計算テーブルの初期状態を示す図である。 本発明の第1の実施例を示し、論理CPUを実行させる物理CPUを選択する際の判定用の閾値を保持する閾値管理テーブルの一例を示す図である。 本発明の第1の実施例を示し、ハイパバイザで行われる閾値の登録処理の一例を示すフローチャートである。 本発明の第1の実施例を示し、ハイパバイザで行われるLPARの起動処理の一例を示すフローチャートで、前半部である。 本発明の第1の実施例を示し、ハイパバイザで行われるLPARの起動処理の一例を示すフローチャートで、後半部である。 本発明の第1の実施例を示し、ハイパバイザで行われる物理CPUの起床処理の一例を示すフローチャートである。 本発明の第1の実施例を示し、図11A、図11BのLPARの起動処理後の物理CPU管理テーブルの一例を示す図である。 本発明の第1の実施例を示し、図11A、図11BのLPARの起動処理後の共有論理CPU管理テーブルの一例を示す図である。 本発明の第1の実施例を示し、ハイパバイザで行われるスケジューリング処理の概要を示すフローチャートである。 本発明の第1の実施例を示し、スケジューリング処理の詳細のうち、物理CPUディスパッチ開始処理の前半部を示すフローチャートである。 本発明の第1の実施例を示し、スケジューリング処理の詳細のうち、物理CPUディスパッチ開始処理の中間部を示すフローチャートである。 本発明の第1の実施例を示し、スケジューリング処理の詳細のうち、物理CPUディスパッチ開始処理の後半部を示すフローチャートである。 本発明の第1の実施例を示し、スケジューリング処理の詳細のうち、物理CPUディスパッチ開始処理で処理すべき論理CPUが存在しなかったときのフローチャートである。 本発明の第1の実施例を示し、スケジューリング処理の際の共有論理CPU管理テーブルと一時保管用論理CPU管理テーブルのエントリの関係を示す図である。 本発明の第1の実施例を示し、スケジューリング処理の際の一時計算テーブルを示す図である。 本発明の第1の実施例を示し、スケジューリング処理における論理CPU実行処理の一例を示すフローチャートである。 本発明の第1の実施例を示し、ゲストモード終了の要因コードテーブルの一例を示す図である。 本発明の第1の実施例を示し、スケジューリング処理のうち、物理CPUディスパッチ終了処理の一例を示すフローチャートの前半部である。 本発明の第1の実施例を示し、スケジューリング処理における物理CPUディスパッチ終了処理のフローチャートの中間部である。 本発明の第1の実施例を示し、スケジューリング処理における物理CPUディスパッチ終了処理のフローチャートの後半部である。 本発明の第1の実施例を示し、図20Aの物理CPUディスパッチ終了処理の処理を実施した際の一時保管用論理CPU管理テーブルを示す図である。 本発明の第1の実施例を示し、図20Aの物理CPUディスパッチ終了処理の処理を実施した際の一時計算テーブルを示す図である。 本発明の第1の実施例を示し、図20B、図20Cの処理を実施した際の一時保管用論理CPU管理テーブルエントリと共通論理CPU管理テーブルの関係を示す図である。 本発明の第1の実施例を示し、閾値を閾値管理テーブルに格納する処理の一例を示すフローチャートである。 本発明の第1の実施例を示し、論理CPUのキャッシュヒット率を測定するためのモニタ有効化処理の一例を示すフローチャートである。 本発明の第1の実施例を示し、論理CPUのキャッシュヒット率を測定するためのモニタリング処理の一例を示すフローチャートである。 本発明の第1の実施例を示し、図23のモニタ有効化処理を実施した際の閾値管理テーブルを示す図である。 本発明の第1の実施例を示し、物理CPUディスパッチ終了処理を実施した際の閾値管理テーブルを示す図である。 本発明の第1の実施例を示し、図24のモニタリング処理を実施した際の閾値管理テーブルを示す図である。 本発明の第1の実施例を示し、論理CPUの実行時間とキャッシュヒット率との関係を示すグラフである。 NUMA構成の計算機のブロック図で、メモリアクセスの一例を示す図である。 従来例を示し、スケジューリング処理による物理CPU上の処理の一例を示すタイムチャートである。 本発明の第1の実施例を示し、スケジューリング処理による物理CPU上の処理の一例を示すタイムチャートで、総キャッシュヒット率閾値が0.5の場合である。 NUMA構成の計算機構のブロック図で、メモリアクセスの他の一例を示す図である。 本発明の第1の実施例を示し、本発明のスケジューリング処理において計算機システムがビジー状態であった際の物理CPU上の処理の一例を示すタイムチャートである。 本発明の第2の実施例を示し、仮想計算機システムの一例を示すブロック図である。
 以下、本発明の一実施形態について添付図面を用いて説明する。
  図1A、図1Bは、本発明における仮想計算機システムの基本的な構成例を示すブロック図である。
 1以上の仮想計算機を提供する物理計算機は、物理CPU(#0~#3)4~7と、物理CPU(または物理プロセッサ)ごとに設けたタイマ16~19と、ノードごとに存在する物理キャッシュメモリ8~9と、ノード毎に接続された物理メモリ10~11と、入出力装置13と、システム処理用ユニット15を有する。
 物理CPU4~5およびタイマ16~17、物理キャッシュメモリ8、物理メモリ10はノード(#0)2に属し、物理CPU6~7およびタイマ18~19、物理キャッシュメモリ9、物理メモリ111はノード(#1)3にそれぞれ属しており、ノード間はインターコネクト14で接続されている。
 当該計算機のメモリの一部にロードされるハイパザイザ(仮想化部)20は、物理CPU4~7、物理メモリ10~11、入出力装置13などの物理的な計算機リソースを分割または共有して論理的な計算機であるLPAR(Logical  PARtition:論理区画)801、802に割り当て、1以上の論理的な計算機(または仮想計算機)を生成して制御する。
 システム処理用ユニット15は、LPAR801、802に割り当てず、ハイパバイザ20の処理のみを行う物理CPU15Aと物理メモリ15Bを有する。
 ハイパバイザ20は、入出力装置13を介してユーザからの入力を受け付け、またユーザへ情報の出力を行なう入出力機能21と、LPAR801、802に割り当てる計算機リソースの設定およびLPAR801、802の生成及び起動を行うLPAR管理機能22と、休止状態(または停止状態)の物理CPU4~7を起床させる物理CPU起床機能23と、ひとつの物理CPUを複数の論理CPU(論理プロセッサ)で時分割(タイムスライス)で共有させるスケジューリング機能24と、論理CPU811、812(または物理CPU4~7のキャッシュリード回数、キャッシュヒット回数)ごとのキャッシュヒット率を測定するモニタリング機能25と、物理計算機(ハードウェア)1のリソース情報を保持するリソース管理データ26とを含んで構成される。
 また、ハイパバイザ20の上記各機能は、上述のようにシステム処理用ユニット15にて処理される。図1の例では、ハイパバイザ20は、物理計算機のハードウェア1から論理CPU811、812と論理メモリ821、822を生成し、生成したLPAR801、802へそれぞれのリソースを割り当てる例を示す。
 リソース管理データ26には、図1Bで示すように、LPAR801、802に割り当てた論理CPU811、812と、論理メモリ821、822の容量を管理するLPAR管理テーブル100と、物理CPU4~7の状態を管理する物理CPU管理テーブル200と、対象の物理CPU4~7でのみ実行(または割り当て)可能な論理CPUの情報を物理CPU4~7ごとに保持する固有論理CPU管理テーブル300と、全ての物理CPU4~7にて実行させる論理CPUの情報を保持する共有論理CPU管理テーブル400と、物理CPU4~7ごとに保持している一時保管用論理CPU管理テーブルエントリ500と、キャッシュメモリ8、9のヒット率を演算するための一時計算用テーブル600と、論理CPU811、812を、次のタイムスライス期間ではどの物理CPU4~7で実行させるかを決定するための基準値を保持する閾値管理テーブル700と、物理CPU4~7の稼動状態を定義するCPU状態テーブル450と、LPAR801、802の仮想計算機が、ゲストモードを終了させる要因を保持する要因コードテーブル460と、が含まれる。
 ハイパバイザ20上のLPAR数およびLPARを構成する論理CPU数の最大数はハイパバイザ20内で定義される最大数によって決定される。当該構成図では、ハイパバイザは2台のLPAR801、802を生成し、それぞれのLPAR801、802には、ハードウェア1から設定した各1個の論理CPU811、812と論理メモリ821、822がそれぞれ割り当てられた例を示している。
 ハイパバイザ20のモニタリング機能25は、論理CPU811、812(または物理CPU4~7)毎にキャッシュメモリ8、9のリード回数(以下、キャッシュリード回数)と、ヒット回数(以下、キャッシュヒット回数)を測定するカウンタを備え、論理CPU811、812(または物理CPU4~7)ごとのキャッシュヒット率を演算する。
 本発明の概要は、次のとおりである。本発明では、論理CPU811(812)が同じノード上の物理CPU4(5~7)で連続実行された際に、ハイパバイザ20にて当該論理CPU811(812)の連続実行時間が、所定のキャッシュヒット率となることを期待する所定時間を経過しているか否かを判定する。所定時間を経過している場合には、ハイパバイザ20は論理CPU811(812)のキャッシュヒット率が閾値よりも高いか否を判定する。キャッシュヒット率が閾値よりも低い場合は、キャッシュメモリ8、9の恩恵を受けていないとハイパバイザ20は判断し、論理CPU811(812)が連続実行したノードとは別のノード上に休止状態の物理CPUが存在すれば当該物理CPUを起床して当該論理CPUを実行させる。
 一方、キャッシュヒット率が閾値よりも高い場合は、論理CPU811(812)を連続実行したノードと別のノード上に休止状態の物理CPUが存在しても起床させず、引き続き現在のノードの物理CPU4(または5)にて当該論理CPU811を実行させる。また、キャッシュヒット率は低いが、論理CPU811を連続実行させたノードとは別のノード上に休止状態の物理CPUが存在しなかった場合に関しても、現在起床している物理CPU6(または7)にて当該論理CPU(811)を実行させる。
 物理CPU4(~7)に実行させる論理CPU811(812)は、ハイパバイザ20に設けた論理CPUのキュー(共有論理CPU管理テーブル400)にて保持する。ハイパバイザ20は、キューに入った順で論理CPU811(812)を物理CPU4(~7)にて実行させ、所定のタイムスライス時間が経過して論理CPU811(812)の実行が完了したら、当該論理CPU811を再度論理CPUのキューに入れる。
 所定のキャッシュヒット率となることを期待する論理CPUの総実行時間の閾値βと、論理CPUがキャッシュメモリ8、9の恩恵を受けていると判定するためのキャッシュヒット率の閾値αは、ユーザにより設定できる。なお、前者を総実行時間の閾値β、後者をキャッシュヒット率の閾値αとする。
 総実行時間の閾値βは物理メモリ10、11のメモリアクセス性能(レイテンシや転送速度など)の平均値を測定する時間T(後述)よりも小さいものとする。この理由は次の通りである。本発明において論理CPU811(812)が連続して同じノード上の物理CPU4(または5)で実行される時間は、総実行時間の閾値βとなり、メモリアクセス性能の平均値を測定する時間Tよりも総実行時間の閾値βの方が大きいと、時間Tの間に一つのノードの物理CPU4(または5)で論理CPU811が実行され続けてしまう。これは、上記発明が解決しようとする課題で述べたように、時間Tにおける論理CPU811の平均メモリアクセス性能は、リモートメモリへのアクセス性能、すなわち低い性能(レイテンシが大)となってしまう可能性があることを意味する。このため、メモリアクセス性能の平均値を測定する時間Tよりも総実行時間の閾値βは小さい値に設定される。
 次に、ハイパバイザ20及びハイパバイザ20のスケジューリング機能24等の各機能部はプログラムとしてシステム処理用ユニット15のメモリ15Bにロードされ、システム処理用ユニット15の物理CPU15Aによって実行される。
 システム処理用ユニット15の物理CPU15Aは、各機能部のプログラムに従って動作することによって、所定の機能を実現する機能部として動作する。例えば、物理CPU15Aは、スケジューリングプログラムに従って動作することでスケジューリング機能24として機能する。他のプログラムについても同様である。さらに、システム処理用ユニット15の物理CPU15Aは、各プログラムが実行する複数の処理のそれぞれを実現する機能部としても動作する。計算機及び仮想計算機システムは、これらの機能部を含む装置及びシステムである。
 ハイパバイザ20の各機能を実現するプログラム、テーブル等の情報は、図示しないストレージサブシステムや不揮発性半導体メモリ、ハードディスクドライブ、SSD(Solid State Drive)等の記憶デバイス、または、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
 図2は、LPARの設定を保持するLPAR管理テーブル100の一例を示す図である。図2に示すLPAR管理テーブル100は、LPAR801、802の識別子であるLPAR番号101と、LPAR801、802に割り当てる論理CPU811、812の個数を格納する論理CPU個数102と、論理メモリ821、822としてLPAR801、802に割り当てる物理メモリ10、11の開始位置(アドレス)を格納する割り当て物理メモリ開始位置103と、開始位置から論理メモリ821、822へ割り当てる物理メモリ4~7のサイズを格納する物理メモリサイズ104と、を備える。
 LPAR管理テーブル100は、予め定義されたLPAR801、802の数に応じたエントリを有する。LPAR管理テーブル100の各エントリは、ユーザによるLPAR環境の設定命令を入出力装置13を介して、ハイパバイザ20の入出力機能21が受け付ける。そして、LPAR管理機能22がLPAR番号、論理CPU数、メモリ領域の情報を読み込んで、LPAR管理テーブル100の各エントリを定義する。
 図3は、論理CPU811、812を稼動させる物理CPU4~7の情報を保持する物理CPU管理テーブル200の初期状態を示す図である。
 図3に示す物理CPU管理テーブル200は、物理CPU4~7の識別子である物理CPU番号201、物理CPU4~7の稼動状態を格納する状態202、物理CPU4~7が属するノード番号を保持する物理CPUノード番号(203)を備える。図3に示す物理CPU管理テーブル200は、LPAR801、802に時分割で共有可能な物理CPU群を保持するため、LPAR801、802の論理CPU811、812を実行させる物理CPUの個数分のエントリを有する。
 図4A、図4Bではハイパバイザ20にて予め定義されている物理CPU4~7及び論理CPU811、812の状態とコードの対応テーブルと状態遷移図を示す。図4Aは、物理CPU4~7(論理CPU811、812)の状態とコードとの対応関係を示すCPU状態テーブル450の一例を示す図である。図4Bは、物理CPU4~7(論理CPU811、812)の状態遷移図である。
 物理、論理を問わずCPUの状態の初期状態は処理を行なっていない状態を示すHALT(図4Aのコード451=3)である。処理が発生すると、HALTの状態から処理の実行がいつでも可能な状態を示すREADY(図4Aのコード451=2)に移る。処理を開始するとREADYから処理を実行中の状態を示すRUN(図4Aのコード451=1)に移る。処理が完了し、処理すべき内容が何もない場合は、RUNからHALTに移り、I/Oなどの待ちが発生した場合等ではRUNからREADYに移る。HALTから直接RUNに移ることや、READYからHALTに移ることはない。
 物理CPU管理テーブル200は、ハイパバイザ20が起動する際に物理CPU4~7とそのノード番号を認識し、予めハイパバイザ20で定義されていた物理CPU4~7のみ追加される。その際の物理CPU状態は全てHALTとなる。なお、HALTの状態にはスリーピングステートを加えるようにしても良い。
 図5は、物理CPU4~7ごとに設定された論理CPU811、812の情報を保持する固有論理CPU管理テーブル300の初期状態(エントリが0)を示す図である。
 図5に示す固有論理CPU管理テーブル300は、エントリ順序を示すエントリ番号301と、当該エントリのLPAR番号302と論理CPU番号303、および論理CPU状態304、当該エントリの論理CPUが前回実行した物理CPUの属していたノードの番号を意味する前回のノード番号305と、前回のノードにて実行していた際の総キャッシュリード回数306と総キャッシュヒット回数307、および総実行時間308と、LPAR801、802が起動してからノード#0の物理CPUで実行した総時間を意味するノード0の物理CPUでの実行時間309と、同様にノード#1に関しての実行時間を意味するノード#1の物理CPUでの実行時間310をひとつのエントリに備える。
 固有論理CPU管理テーブル300は物理CPU4~7ごとにハイパバイザ20で設定され、スケジューリング機能24にて、対応する物理CPU4~7へ優先的に割り当てたい論理CPU811、812のエントリを保持させる。この固有論理CPU管理テーブル300が、上述した本発明の概要における別のノード上の物理CPU4、5で論理CPU811を実行させる手法にあたる。
 図6は、全物理CPU4~7で稼動させる論理CPU811、812の情報を保持する共有論理CPU管理テーブル400の初期状態(エントリが0)を示す図である。
 図6に示す共有論理CPU管理テーブル400は、図5に示した固有論理CPU管理テーブル300と同じ構成のエントリで構成される。すなわち、エントリ番号401、LPAR番号402、論理CPU番号403、論理CPU状態404、前回のノード番号405、総キャッシュリード回数406、総キャッシュヒット回数407、総実行時間408、ノード0の物理CPUでの実行時間409、ノード1の物理CPUでの実行時間410でひとつのエントリを構成する。
 共有論理CPU管理テーブル400はハイパバイザ20内に一つのみ存在し、スケジューリング機能24にて、いずれの物理CPUで実行させてもよい論理CPUのエントリを保持する。
 図7は、論理CPU811、812を物理CPU4~7で稼動させるときに一時的に論理CPU811、812の情報を保持する一時保管用論理CPU管理テーブル500の初期状態(エントリが0)を示す図である。図7に示す一時保管用論理CPU管理テーブルエントリ500に関しても、図5に示した固有論理CPU管理テーブル300からエントリ番号を削除した他は、同じ構成のエントリで構成される。すなわち、LPAR番号501、論理CPU番号502、論理CPU状態503、前回のノード番号504、総キャッシュリード回数505、総キャッシュヒット回数506、総実行時間507、ノード0の物理CPUでの実行時間508、ノード1の物理CPUでの実行時間509でひとつのエントリを構成する。一時保管用論理CPU管理テーブルエントリ500は、固有論理CPU管理テーブル300、共有論理CPU管理テーブル400と異なり、エントリ番号は備えない。
 一時保管用論理CPU管理テーブルエントリ500は物理CPU4~7ごとに設定され、スケジューリング機能24は、制御対象としている物理CPU4~7で実行している論理CPU811、812のエントリを保持させる。
 図1の構成では、ノードが二つ(#0、#1)存在する構成であるため、図5のノード(#0、#1)の物理CPUでの実行時間309~310と、図6のノード(#0、#1)の物理CPUでの実行時間409~410と、図7のノード(#0、#1)の物理CPUでの実行時間508~509はそれぞれ二列(2エントリ)ずつ備えることになる。ノードの数が増えると、この列の数は増加する。
 固有論理CPU管理テーブル300と、共有論理CPU管理テーブル400の合計エントリ数の最大値は、起動しているLPAR801、802に割り当てられた論理CPU811、812の数となる。
 一時保管用論理CPU管理テーブルエントリ500は、当該物理CPU4~7にて実行中の論理CPU811、812の情報を保持するため、エントリ数は最大でも一つとなる。また、固有論理CPU管理テーブル300、共有論理CPU管理テーブル400、一時保管用論理CPU管理テーブルエントリ500の初期値は、論理CPUが一つも実行されていない状態であるため、図5、図6、図7のエントリを削除した状態、すなわち空のテーブルとなる。
 図8は、論理CPU811、812を実行させる物理CPU4~7を選択する際の計算情報を一時的に保管する一時計算テーブルの初期状態を示す図である。図8に示す一時計算用テーブル600は、総キャッシュヒット率601、論理CPUを物理CPU上で実行させた際のキャッシュリード回数602およびキャッシュヒット回数603、論理CPUの物理CPU上での実行開始時刻604と実行終了時刻605を保存する領域を備える。
 図9は、論理CPU811、812を実行させる物理CPU4~7を選択する際の判定用の閾値を保持する閾値管理テーブル700の一例を示す図である。図9に示す閾値管理テーブル700は、LPAR番号701、論理CPU番号702、当該エントリの論理CPUを次に実行させる物理CPUの選択の際に必要となる、総キャッシュヒット率の閾値を意味する閾値α703と、総実行時間の閾値を意味する閾値β704と、現在の稼動状況を監視するか否かを保持するモニタ有効フラグ705と、モニタした内容を書き込んだか否かを保持する書き込み完了フラグ706と、モニタした内容を書き込む総キャッシュヒット率707および総実行時間708からひとつのエントリを構成する。
 閾値管理テーブル700は、LPAR管理機能22がLPAR管理テーブル100のエントリを定義した後に、図9のエントリを定義する。図9に示した閾値管理テーブル700では、LPAR#1(801)、LPAR#2(802)が定義され、ハイパバイザ20内で閾値αが“0.5”、閾値βが“2000”と予め定義されているときにエントリが作成された直後の状態を示している。なお、閾値管理テーブル700において、LPAR801、802が定義されていないときの初期値はエントリが存在しない、すなわち空のテーブルとなる。
 なお、上述したとおり、閾値βはメモリアクセス性能の平均値を測定する時間T(例えば、1秒間)よりも小さいものとする。
 図10は、ハイパバイザ20で行われる閾値の登録処理の一例を示すフローチャートである。図10は、入出力装置13を介してハイパバイザ20の入出力機能21からLPAR環境の設定命令を受け取り、LPAR管理機能22がLPAR管理テーブル100のエントリを追加した後に引き続き行なう処理であり、LPAR管理機能22が当該LPAR801、802の論理CPU811、812の閾値を閾値管理テーブル700に登録する処理を示す。以下、当該処理の実施直前にLPAR管理テーブル100に追加したエントリのLPAR801を当該LPARとして、その処理について説明する。
 LPAR管理機能22は、論理CPU番号を0として、当該LPAR801の論理CPU811の数に応じてステップ903を実行し、論理CPU番号に1を加算する、というループを繰り返す(902~904)。
 ステップ903では、LPAR管理機能22が、閾値管理テーブル700の最後へ、LPAR番号701を当該LPAR番号、論理CPU番号702を現在の論理CPU番号、閾値α703および閾値β704を、ハイパバイザ20で予め定義されている値に設定し、他のフィールド705~708を“0”に設定したエントリを挿入する。
 本フローチャートでは、LPAR管理機能22が、当該LPAR801の論理CPU811の数に応じてエントリを作成し、閾値管理テーブル700の最後へ追加している。なお、当該LPAR801の論理CPU数を減少、および当該LPAR801を削除する場合には、閾値管理テーブル700のLPAR番号701と論理CPU番号702をインデックスとして検索し、対象の論理CPUのエントリを削除すればよい。
 また、当該LPAR801の論理CPU数を増加させる場合には、閾値管理テーブル700のLPAR番号701と論理CPU番号702をインデックスとして検索し、その中で最も大きい論理CPU番号のエントリの次に、ステップ903と同様の手順でエントリを追加すればよい。
 図11Aは、ハイパバイザ20で行われるLPAR801、802の起動処理の一例を示すフローチャートの前半部で、図11Bは後半部を示す。
 図11A、図11Bでは、入出力装置13を介してハイパバイザ20の入出力機能21からLPAR801、802の起動命令を受け取り、LPAR管理機能22がLPAR801、802を起動させる際の処理を示す。以下、起動させるLPAR801を当該LPAR801としてその処理を示す。この処理は、入出力装置13から指令を受け付けたときにハイパバイザ20が実行する。
 ハイパバイザ20のLPAR管理機能22は、LPAR801(または802)に割り当てる論理CPU数とメモリ量をLPAR管理テーブル100から読み出す(932)。LPAR管理機能22は、共有論理CPU管理テーブル400へ新たなエントリを挿入し、エントリ番号401として最も大きいエントリ番号に1を加算した値を設定し、LPAR番号402として対象LPAR番号を設定し、論理CPU番号403として0を設定し、論理CPU状態404としてREADYを設定し、前回のノード番号405として未定義を意味する“-1”を設定し、他のフィールド406~410は0を設定する(933)。ただし、共有論理CPU管理テーブル400が空だった場合、挿入するエントリのエントリ番号401は“1”とする。
 次に、LPAR管理機能22は、ステップ934からステップ936のループ処理を論理CPUの数まで繰り返す。
 まず、LPAR管理機能22は、論理CPU番号を1とし、ステップ935の処理を行ない、論理CPU番号に1を加算する、という処理を当該LPAR801の論理CPU数分繰り返す(934~936)。なお、ステップ935はステップ933において、論理CPU状態404を“HALT”に設定し、論理CPU番号403を1回のループにて1ずつ増加させている点が異なる処理となっている。
 LPAR管理機能22は、物理CPU管理テーブル200にて、物理CPU状態202がHALT状態のエントリを、物理CPU番号の小さいものから検索する(図11Bのステップ937、938、940)。HALT状態のエントリが検出した場合、LPAR管理機能22は、当該物理CPUを選択して起床させる(939)。
 上記フローチャートの処理によって、当該LPAR108に割り当てられた論理CPU811が共有論理CPU管理テーブル400に登録される。そして、登録された論理CPUはスケジューリング機能24によって物理CPU4~7が割り当てられ、実行を開始する。
 図12は、ハイパバイザ20で行われる物理CPU4~7の起床処理の一例を示すフローチャートである。図12では、ハイパバイザ20の物理CPU起床機能23が、HALT状態の物理CPU4~7の起床を行なう。以下、起床させる物理CPU4~7を当該物理CPU4として、処理の一例を示す。
 ハイパバイザ20の物理CPU起床機能23は、物理CPU管理テーブル200の当該物理CPU4の物理CPU番号201の状態202を、図4AのCPU状態テーブル450のHALTからREADYに対応するコード“2”に更新する(952)。その後、物理CPU起床機能23は、物理CPU管理テーブル200の当該物理CPU4の状態202を、RUNに対応するコード“1”に更新する(953)。
 ハイパバイザ20は物理CPU起床機能23が起床した物理CPU4を対象として、スケジューリング機能24にてスケジューリング処理を開始する(954)。
 図2、3、図5~図9の状態にてLPAR#1(801)を起動した際のテーブルの変化を図13、図14に示す。
 図13は、LPAR801の起動処理後の物理CPU管理テーブル200の一例を示す図である。図14は、LPAR801の起動処理後の共有論理CPU管理テーブル400の一例を示す図である。
 LPAR#1(801)の論理CPU(811)の数は一つであり、図6では共有論理CPU管理テーブル400が空であるため、図11Aのステップ933の処理により共有論理CPU管理テーブル400に、エントリ番号411が“1”のエントリが新たに挿入される。
 その後、図3の物理CPU管理テーブル200の物理CPU状態202は、全てのエントリがHALT状態を示す“3”となっているため、図11Bのステップ937~940の処理により最も小さい物理CPU番号403を持つ物理CPU#0(4)を起床させる。図12に示した物理CPU起床処理にて、物理CPU管理テーブル200の物理CPU番号211が“0”のエントリにおける物理CPU状態212は、HALT状態の“3”からREADY状態の“2”を経由して、RUN状態の“1”となる。
 なお、LPAR管理テーブル100、固有論理CPU管理テーブル300、一時保管用論理CPU管理テーブルエントリ500、一時計算用テーブル600、閾値管理テーブル700に変更はない。
 図15は、ハイパバイザ20で行われるスケジューリング処理の概要を示すフローチャートである。
 この処理は、大きく分けて、物理CPU4~7にどの論理CPU811、812を実行させるかを選択する物理CPUディスパッチ開始処理(972)と、論理CPU811、812を物理CPU4~7上で実行させる論理CPU実行処理(973)と、時分割の処理が完了した論理CPU811、812を、次にどの物理CPU4~7で実行させるかを選択する物理CPUディスパッチ終了処理(974)、の三つで構成される。ハイパバイザ20のスケジューリング機能24は、上記ステップ972~974の処理を繰り返して実行する。
 なお、スケジューリング機能24は、一つの物理CPU4~7に対して実施され、物理CPUが複数個存在するときは、複数のスケジューリング処理が並列して実行される。以下、スケジューリング機能24がスケジュールの対象とする物理CPU4~7を当該物理CPU4として説明する。
 図16A、図16B、図16C、図16Dは物理CPUディスパッチ開始処理(972)の処理の一例を示すフローチャートを示す。なお、図16Aは、物理CPUディスパッチ開始処理の前半部を示し、図16Bは中間部を示し、図16Cは後半部を示し、図16Dは、物理CPUディスパッチ開始処理で処理すべき論理CPUが存在しなかったときのフローチャートである。
 物理CPUディスパッチ開始処理(972)は図16Aの処理1001から開始する。スケジューリング機能24は、当該物理CPU4に対応する固有論理CPU管理テーブル300において、エントリ番号が小さいものから順に論理CPU状態304がREADYを示す“2”であるエントリを検索する(1002~1004)。スケジューリング機能24は、論理CPU状態304がREADYを示す“2”であるエントリが存在すれば処理1005に進む。
 一方、READYを示す“2”の論理CPU状態304のエントリが固有論理CPU管理テーブル300に存在しない場合は、図16Bのステップ1007へ進む。
 まず、ステップ1002~1004の検索にて、論理CPU状態304がREADYを示す“2”となっているエントリが固有論理CPU管理テーブル300に存在するときを説明する。
 スケジューリング機能24は、READYとなっている論理CPU状態304のエントリにおいて、エントリ番号301以外を一時保管用論理CPU管理テーブルエントリ500にコピーし、固有論理CPU管理テーブル300から当該エントリを除去する(1005)。
 スケジューリング機能24は、固有論理CPU管理テーブル300において各々のエントリが持つエントリ番号301を一ずつ減らし(1006)、ステップ1012、すなわち図16Cのステップ1014に進む。
 次に、ステップ1002~1004の検索にて論理CPU状態304がREADYを示す“2”のエントリが固有論理CPU管理テーブル300に存在しないときを説明する。
 スケジューリング機能24は、共有論理CPU管理テーブル400において、エントリ番号401が小さいものから順に論理CPU状態404の値がREADYを示す“2”であるエントリを検索し(1007~1009)、ステップ1008では、論理CPU状態404の値がREADYを示す“2”であるエントリが存在すればステップ1010に進む。
 READYとなっている論理CPU状態404のエントリが共有論理CPU管理テーブル400にも存在しない場合は、ステップ1013、すなわち図16Dのステップ1022に進む。
 READYとなっている論理CPU状態404のエントリが共有論理CPU管理テーブル400に存在する場合は、上記ステップ1005と同様である。すなわち、スケジューリング機能24は、共有論理CPU管理テーブル400から当該エントリのエントリ番号401以外を一時保管用論理CPU管理テーブルエントリ500にコピーし、共有論理CPU管理テーブル400から当該エントリを除去する(1010)。
 その後、スケジューリング機能24は、共有論理CPU管理テーブル400において各々のエントリが持つエントリ番号401を一ずつ減らし(1011)、ステップ1012、すなわち図16Cのステップ1014に移る。
 図16Cのステップ1014以降の処理では、当該物理CPUの属するノード番号が一時保管用論理CPU管理テーブルエントリ500の、前回のノード番号504と一致するか否かを判定し(1015)、一致しなかった場合はステップ1016に進み、一致した場合はステップ1017に進む。
 スケジューリング機能24は、一時保管用論理CPU管理テーブルエントリ500の前回のノード番号504に、当該物理CPU4が属するノード番号を書き込む処理と、総キャッシュリード回数505と、総キャッシュヒット回数506と、総実行時間507に“0”をそれぞれ書き込む処理を行う(1016)。
 次に、スケジューリング機能24は、一時計算用テーブル600の実行開始時刻604に現時刻と、一時保管用論理CPU管理テーブルエントリ500の論理CPU状態503にRUNをそれぞれ書き込む(1017)。
 スケジューリング機能24は、モニタリング機能25が備えるカウンタをリセットする。スケジューリング機能24は、モニタリング機能25に対して起動対象の論理CPU811、812によるキャッシュリード回数とキャッシュヒット回数のカウンタをリセットし、これらのカウントを開始させる(1018)。
 ハイパバイザ20で予め定義されているタイムスライスの時間(または周期)にて当該物理CPU4~7のタイマ16~19をセットする(1019)。このとき、タイムスライスの時間を経過した物理CPU4~7は、タイマ16~19によってゲストモードが終了するタイマ割り込みが発生する。なお、タイマ16~19によるタイマ割り込みにより、ホストモードに切り替わり、ハイパバイザ20に制御が移る。
 スケジューリング機能24は、ハイパバイザ20が介在しないゲストモードに当該物理CPU4~7を切り替え、論理CPU811、812を起動し(1020)、物理CPUディスパッチ開始処理(972)は完了となる(1021)。
 図16Dの処理1022以降の処理では、スケジューリング機能24が、物理CPU管理テーブル200のうち当該物理CPU4のエントリの物理CPU状態202にHALTに対応する“3”を書き込む(1023)。
 スケジューリング機能24は、当該物理CPUを休止状態にし(1024)、スケジューリングの処理終了となる(1025)。
 図16A、図16B、図16C、図16Dで示したフローチャートでは、以下の処理を行なう。
 スケジューリング機能24は、固有論理CPU管理テーブル400内のエントリ番号401が小さいエントリの論理CPU811(812)を優先的に選択して物理CPU4~7で実行させる論理CPUとする。
 スケジューリング機能24は、固有論理CPU管理テーブル400内にREADYに対応する“2”の論理CPU状態404のエントリが存在しないときには、共有論理CPU管理テーブルエントリ500から同様にREADYに対応する“2”の論理CPU状態503を検索して論理CPU811(812)を選択し、それでも存在しないときには当該物理CPUにて処理する仕事が存在しないため、当該物理CPUを休止状態とする。
 物理CPUディスパッチ開始処理(972)にて上記の処理を行なうことで、スケジューリング処理はREADYとなっている論理CPU状態304の論理CPU811(812)のエントリを、当該物理CPU4の固有論理CPU管理テーブル300から優先的に選択する。そして、スケジューリング機能24は、固有論理CPU管理テーブル300に論理CPU811のエントリを新たに挿入することで、当該論理CPU811を当該物理CPU4で必ず実行させることができる。
 また、固有論理CPU管理テーブル300に実行させる論理CPUが存在しない場合は、スケジューリング処理は全物理CPU4~7にて実行可能な論理CPU811(812)のエントリを保有する共有論理CPU管理テーブル400からエントリを取得するため、READY状態の論理CPUをいずれかの物理CPU4~7にて必ず実行させることを保証できる。
 ここで処理の一例として、図2、図5、図7~14、図13、図14の状態にて図12のフローチャートのステップ954にて物理CPU#0(4)を対象としてスケジューリング機能24のスケジューラ処理を開始したとき、図16A、図16B、図16C、図16Dのフローチャートの処理の結果を図17A、図17Bに示し、このようになる理由を以下に示す。
 図13、図14の状態では、固有論理CPU管理テーブル300にはエントリがなく、共有論理CPU管理テーブル400にエントリが1つあるため、ステップ1007~1009の処理により共有論理CPU管理テーブル400にてREADY状態の論理CPU状態のうち、最も小さいエントリ番号411のエントリにおいてエントリ番号以外412~420を、一時保管用論理CPU管理テーブルエントリ500にコピーしてから、共有論理CPU管理テーブル400の当該エントリを削除する。
 その後、共有論理CPU管理テーブル400はエントリが空になるため、図16Bのステップ1010の処理は、今回は行なわれない。
 スケジューリング機能24が、一時保管用論理CPU管理テーブルエントリ500にコピーした論理CPU#0のエントリは、ノード#0の物理CPU4、5上で初めて実行するため、図16Cのステップ1015~1016により前回のノード番号504を“0”に変更して、総キャッシュリード回数505と、総キャッシュヒット回数506と、総実行時間507を、それぞれ“0”で初期化する。
 そして、ステップ1017にて一時計算用テーブル600の実行開始時刻604に現在時刻を書き込み、一時保管用論理CPU管理テーブルエントリ500の論理CPU状態503をRUN状態に対応する値“1”に更新し、ステップ1018~1020の処理により物理CPU#0(4)をゲストモードに切り替える。なお、ステップ1017では、図17Bで示すように、処理を開始した時刻604を200としている。なお、物理CPU4~7は、仮想化支援機能を備えており、ハイパバイザ20を実行するホストモードと、ゲストOSを実行するゲストモードとを備える。
 図18は、図15に示した論理CPU実行処理(973)の処理の一例を示すフローチャートを示す。本処理の内容は、物理CPU#0(4)のゲストモードの終了要因が発生するまで対象の物理CPU#0(4)をゲストモードにて実行させ、モニタリング機能25にて実行中の論理CPU811のキャッシュリード回数と、キャッシュヒット回数をそれぞれカウントする処理を行なう(1052)。
 ゲストモード終了要因のコードと要因、その後の論理CPU状態は、ハイパバイザ内部で予め定められており、図19に例を示す論理CPU終了要因コードと論理CPU状態対応表にて識別する。
 図19は、ゲストモード終了の要因コードテーブル460の一例を示す図である。要因コードテーブル460は、ゲストモードが終了する際の命令を格納する要因コード461と、要因の名称を格納する要因462と、要因コードを実行した後の論理CPUの状態を格納する論理CPU状態463からひとつのエントリが構成される。
 図20A、図20B、図20Cでは、図15の物理CPUディスパッチ終了処理(974)で行われる処理の一例を示すフローチャートである。論理CPU811がゲストモードを終了すると、物理CPUディスパッチ終了処理(974)は図20Aのステップ1061から開始する。図20Aは、スケジューリング処理の物理CPUディスパッチ終了処理の一例を示すフローチャートの前半部である。同様に、図20Bは物理CPUディスパッチ終了処理の中間部を示し、図20Cは、後半部を示す。
 スケジューリング機能24は、要因コードテーブル460を参照して、論理CPU811のゲストモードの終了要因に従って、図19の要因コードテーブル460の論理CPU状態を決定し、一時保管用論理CPU管理テーブルエントリ500の論理CPU状態503に書き込む。そして、スケジューリング機能24は、当該物理CPU#0(4)にセットされていたタイマ16を停止させる(1062)。この終了要因による論理CPU状態の決定は、スケジューリング機能24が、上述した図19の要因コードテーブル460を参照して実施する。
 一時保管用論理CPU管理テーブルエントリ500の論理CPU状態503が、RUNに対応する“1”となっている場合(1063のYES)は、ハイパバイザ20の要因コードテーブル460で予め定義されたゲストモード処理要因に対応した処理を行ない(1064)、一時保管用論理CPU管理テーブルエントリ500の論理CPU状態503にREADYに対応する“2”を書き込む(1065)。なお、ステップ1064には論理CPU811がタイムスライスの時間を使い切った際の処理も含まれ、この場合は物理CPU#0(4)のタイマ割り込みに対応した処理となる。
 次に、スケジューリング機能24は、モニタリング機能25から論理CPU811のキャッシュリード回数とキャッシュヒット回数をそれぞれ読み込んで、一時計算用テーブル600の該当フィールド602、603に書き込む。また、スケジューリング機能24は、一時保管用論理CPU管理テーブルエントリ500の総キャッシュリード回数505、総キャッシュヒット回数506に、上記読み込んだキャッシュリード回数とキャッシュヒット回数をそれぞれ加算する(1066)。
 スケジューリング機能24は、一時計算用テーブル600の実行終了時刻605に現在時刻を書き込み、実行終了時刻605と実行開始時刻604の差分を算出する。そして、スケジューリング機能24は、一時保管用論理CPU管理テーブルエントリ500において、論理CPU811を実行した物理CPU#0の属するノードに対応する実行時間508または509に、上記算出した差分を加算する(1067)。また、スケジューリング機能24は、閾値管理テーブル700の総実行時間708にも上記算出した差分を加算する(1067)。
 スケジューリング機能24は、一時保管用論理CPU管理テーブルエントリ500の総キャッシュヒット回数506を総キャッシュリード回数505で除算し、結果を一時計算用テーブル600の総キャッシュヒット率601に書き込む(1068)。
 次に、スケジューリング機能24は、閾値管理テーブル700から、一時保管用論理CPU管理テーブルエントリ500のLPAR番号501と論理CPU番号502が一致するエントリを取得する(図20Bの1071)。以下、閾値管理テーブル700から取得した本エントリを閾値管理テーブル700の対象エントリとする。
 スケジューリング機能24は、閾値管理テーブル700の対象エントリのモニタ有効フラグ705が“1”であるか否かを判定する(1072)。モニタ有効フラグ705が1であればステップ1073へ進み、そうでなければステップ1074へ進む。
 スケジューリング機能24は、閾値管理テーブル700の対象エントリにおいて、総キャッシュヒット率707および総実行時間708に一時計算用テーブル600の総キャッシュヒット率601および一時保管用論理CPU管理テーブルエントリ500の総実行時間507を書き込み、書き込み完了フラグ706に“1”を書き込み、モニタ有効フラグ705に“0”をそれぞれ書き込む(1073)。
 スケジューリング機能24は、一時保管用論理CPU管理テーブルエントリ500の総実行時間507が閾値管理テーブル700の当該エントリの閾値β704より大きいか否かを判定する(1074)。総実行時間507が閾値β704より大きい場合にはステップ1075へ進み、総実行時間507が閾値β704以下の場合にはステップ1078へ進む。
 ステップ1075では、スケジューリング機能24が、一時計算用テーブル600の総キャッシュヒット率601が閾値管理テーブル700の対象エントリの閾値α703より小さいか否かを判定する。総キャッシュヒット率601が閾値α703より小さい場合にはステップ1076へ進み、総キャッシュヒット率601が閾値α703以上であればステップ1078へ進む。
 ステップ1076では、スケジューリング機能24が、物理CPU管理テーブル200において、当該物理CPUが属するノードとは別のノードにHALT状態の物理CPUが存在するか否かを判定する。当該物理CPUが属するノード以外でHALT状態の物理CPUが存在する場合は、ステップ1077へ進み、存在しない場合にはステップ1078へ進む。
 上記複数の判定により、一時保管用論理CPU管理テーブルエントリ500の総実行時間507が閾値β704より大きく、かつ、総キャッシュヒット率601が閾値α703より小さく、かつ、当該物理CPUが属するノード以外でHALT状態の物理CPUが存在する場合には、ステップ1077から図20Cのステップ1079へ進み、ステップ1074~1076の判定のいずれか一つでもNOの場合はステップ1078から図20Cのステップ1083へ進む。
 ステップ1079はステップ1080に進み、ステップ1080~1082では下記処理を行なう。
 スケジューリング機能24は、別のノードにてHALT状態で、かつ一時保管用論理CPU管理テーブルエントリ500にて実行時間(508または509)が最も短いノードの物理CPUを選択する(1080)。
 スケジューリング機能24は、上記ステップ1080で選択した物理CPUに対応する固有論理CPU管理テーブル300へ、最も大きいエントリ番号301に“1”を加算したものを新たなエントリ番号301として一時保管用論理CPU管理テーブルエントリ500に挿入する(1081)。ただし、固有論理CPU管理テーブル300のエントリが空だった場合、挿入するエントリのエントリ番号301は“1”とする。
 スケジューリング機能24は、ステップ1080で選択した物理CPUを、ハイパバイザ20の物理CPU起床機能23によって起床させる(1082)。
 一方、ステップ1074~1076の判定のいずれか一つでも“NO”の場合のステップ1083は処理1084に進む。ステップ1084では当該物理CPUに対応する共有論理CPU管理テーブル400へ、最も大きいエントリ番号401に1加算したものを新たなエントリ番号401として一時保管用論理CPU管理テーブルエントリ500を挿入する(1084)。ただし、共有論理CPU管理テーブル400のエントリが空であった場合、挿入するエントリのエントリ番号401は“1”とする。
 上記ステップ1082またはステップ1084の処理完了を以って、物理CPUディスパッチ終了処理の終了となる(1085)。
 図20A、図20B、図20Cの上記フローチャートでは、下記の処理を行なっている。
 論理CPUのゲストモードが終了した後、論理CPU状態503によってはハイパバイザ20にて後処理を行なった後に、スケジューリング機能24が、モニタリング機能25から論理CPUを実行した期間中のキャッシュリード回数とキャッシュヒット回数を取得し、統計情報である総キャッシュヒット率707と総実行時間708を演算して更新する。
 スケジューリング機能24は、同じノード内の物理CPUで、総実行時間708の閾値β704よりも長く当該論理CPUを連続実行していた場合に、総キャッシュヒット率707が閾値αと比較することで、キャッシュメモリ8、9を有効に活用しているかを判定する。
 閾値αよりも総キャッシュヒット率707が小さく、HALT状態の物理CPUが別のノード内に存在する場合は、別のノード内の物理CPUで当該論理CPU811を実行させるべく、固有論理CPU管理テーブル300に実行させた論理CPUのエントリを追加する。これにより、論理CPUを実行する物理CPUをノード間で転々と移動させることができ、閾値βよりも長い時間にて論理CPU811のメモリアクセス性能を測定した際に、論理CPU811からみた物理メモリ10、11へのアクセスコストにばらつきを生むことかできる。
 すなわち、論理CPU811で実行するプログラムがアクセスするデータなどが、物理CPU4と同じノードの物理メモリ10に格納されている場合はローカルアクセスとなり、異なるノードの物理メモリ11に格納されている場合はリモートアクセスとなり、アクセスコスト、換言すればレイテンシが異なる。
 閾値αよりも総キャッシュヒット率707が大きい場合は、論理CPU811がキャッシュメモリ8の恩恵を受けていることから同じノードの物理CPU4、5にて引き続き論理CPUを実行してもよい。このため、共有論理CPU管理テーブル400へ実行させた論理CPU811のエントリを追加する。
 このとき、別ノードの物理CPU6、7にHALT状態でないものが存在する場合には、別ノードの物理CPU6、7を対象としたスケジューリング処理にて共有論理CPU管理テーブル400から当該論理CPU811のエントリを抽出し、当該論理CPU811を実行させることもありうる。しかしながらこのような場合は、後述するように仮想計算機システム全体がビジー状態の際のランダム性と同じく、閾値βよりも長い時間Tにてメモリアクセス性能を測定した際に、論理CPU811からみた物理メモリ10、11へのアクセスコストにばらつきを生むことができる。
 HALT状態の物理CPUが別のノード内に存在しない場合は、仮想計算機システム全体がビジー状態であり、後述のとおり、当該論理CPU811を割り当てる物理CPU4~7の割り当て先にランダム性が働く。
 この特徴を利用すべく、共有論理CPU管理テーブル400に実行させた論理CPU811のエントリを追加することで、物理CPUディスパッチ開始処理(972)の際に選ばれる論理CPU811、812の選択がランダムとなる。そして、閾値βよりも長い時間Tにて論理CPU811、812のメモリアクセス性能を測定した際に、論理CPUからみた物理メモリ10、11へのアクセスコストにばらつきを生むことができるのである。
 図17A、図17Bとなった状態から引き続き、図20A、図20B、図20Cの処理を実施した結果を図21A、図21B、図21Cに示す。このとき、論理CPU811の実行開始時刻604は、上述のように“200”、実行終了時刻が“1000”、論理CPU811の終了要因がタイマ割り込み、論理CPU811を実行した期間の当該物理CPU4のキャッシュリード回数が“1000”、キャッシュヒット回数が“300”だったものとする。図21A~図21Cは、図20Aのステップ1061~1068を実施した結果である。図21Aは、図20Aの物理CPUディスパッチ終了処理の処理を実施した際の一時保管用論理CPU管理テーブルエントリ500を示す図である。図21Bは、図20Aの物理CPUディスパッチ終了処理の処理を実施した際の一時計算用テーブル600を示す図である。図21Cは、図20B、図20Cの処理を実施した際の一時保管用論理CPU管理テーブルエントリ500と共通論理CPU管理テーブル400の関係を示す図である。
 論理CPU811の終了要因がタイマ割り込みであるため、図20Aのステップ1062では、図21Aで示すように一時保管用論理CPU管理テーブルエントリ500の論理CPU状態503は、スケジューリング機能24によって図21Aで示すようにRUNからREADYを示す値“2”に変更される。
 論理CPUを実行した期間の当該物理CPUのキャッシュリード回数が“1000”、キャッシュヒット回数が“300”だったことから、スケジューリング機能24は、図20Aのステップ1066にて、図21Bに示す一時計算用テーブル600のキャッシュリード回数602に“1000”を書き込み、キャッシュヒット回数603に“300”を書き込む。また、スケジューリング機能24は、図21Aの一時保管用論理CPU管理テーブルエントリ500の総キャッシュリード回数505に“1000”を加算し、総キャッシュヒット回数506に“300”を加算する。
 論理CPUの実行終了時刻が“1000”であり、当該物理CPUがノード#0に属していたことから、図20Aのステップ1067にて、スケジューリング機能24は、図21Bの一時計算用テーブル600の実行終了時刻605に“1000”を書き込み、実行終了時刻605と実行開始時刻604との差分800を演算し、図21Aの一時保管用論理CPU管理テーブルエントリ500の総実行時間507と、ノード0の物理CPU4での実行時間508にそれぞれ差分の800ずつ加算する。
 次に、図20Aのステップ1068にて、図21Aで示した一時保管用論理CPU管理テーブルエントリ500の総キャッシュヒット回数506である“300”を総キャッシュリード回数505である“1000”で除算し、その結果の“0.3”を図21Bに示す一時計算用テーブル600の総キャッシュヒット率601に書き込む。
 図21Cは、図20B、図20Cの処理を実施した結果、一時保管用論理CPU管理テーブルエントリ500と共通論理CPU管理テーブル400の関係を示す図である。
 LPAR#1(801)の論理CPU#0(811)を示す閾値管理テーブル700のエントリでは、図9で示したようにモニタ有効フラグ705が“0”となっているため、図20Bのステップ1073は実施されず、閾値管理テーブル700は更新されない。
 LPAR#1(801)の論理CPU#0(811)を示す閾値管理テーブル700のエントリでは、閾値β704が“2000”と、図21Aの一時保管用論理CPU管理テーブルエントリ500の総実行時間507の“800”よりも大きいため、図20Bのステップ1074から図21Cのステップ1084に進む。
 この時点で、共有論理CPU管理テーブル400のエントリは空となっているため、図20Cのステップ1084にて図21Cのエントリ番号401を“1”として一時保管用論理CPU管理テーブルエントリ500を共有論理CPU管理テーブル400に挿入する。
 以上がスケジューリング処理である。
 図22は、閾値を閾値管理テーブル700に格納する閾値設定処理の一例を示すフローチャートである。図22に示す閾値設定処理は、ユーザが入出力装置13、入出力機能21を介して総キャッシュヒット率閾値および総実行時間閾値の設定命令をハイパバイザ20に入力した際に、LPAR管理機能22で行なわれる処理である。
 LPAR管理機能22は、入出力機能21から閾値設定を行なうLPAR番号、論理CPU番号、総キャッシュヒット率閾値、総実行時間閾値を読み込む(1102)。
 LPAR管理機能22は、ステップ1102で読み込んだ当該LPAR番号と論理CPU番号を有する閾値管理テーブル700のエントリにおいて、読み込んだ総キャッシュヒット率閾値および総実行時間閾値をそれぞれ閾値α703、閾値β704として書き込む(1103)。
 以上の処理により、閾値管理テーブル700が設定される。
 図23は、論理CPUのキャッシュヒット率等を測定するためのモニタ有効化処理の一例を示すフローチャートである。図23に示すモニタ有効化処理は、ユーザが入出力装置13、入出力機能21を介してモニタリングの有効化命令をハイパバイザ20へ入力した際に、モニタリング機能25にて行なわれる処理である。
 モニタリング機能25は、入出力機能21からモニタリングを行なうLPAR番号と論理CPU番号を読み込む(1112)。
 モニタリング機能25は、ステップ1112で読み込んだ当該LPAR番号と論理CPU番号をもつ閾値管理テーブル700のエントリにおいて、モニタ有効フラグ705に“1”を書き込む(1113)。
 図24は、論理CPUのキャッシュヒット率を測定するためのモニタリング処理の一例を示すフローチャートである。図24に示すモニタリング処理は、ユーザが入出力装置13、入出力機能21を介してモニタリング実施命令をハイパバイザ20へ入力した際に、
モニタリング機能25で行なわれる処理である。
 モニタリング機能25は、入出力機能21からモニタリングを行なうLPAR番号と論理CPU番号を読み込む(1122)。
 モニタリング機能25は、ステップ1122で読み込んだ当該LPAR番号と論理CPU番号を含む閾値管理テーブル700のエントリにおいて、モニタ有効フラグ705と書き込み完了フラグ706が共に0であるか否かを判定し(1123)、共に“0”であればステップ1124へ進んで入出力機能21を介してエラー出力する。
 一方、モニタ有効フラグ705と書き込み完了フラグ706が共に“0”でない場合は、ステップ1125へ進む。
 モニタリング機能25は、当該LPAR番号と論理CPU番号を含む閾値管理テーブル700のエントリにおいて、書き込み完了フラグ706が“1”か否かを判定し、当該書き込み完了フラグ706が“1”となるまで待機する(1125)。
 ステップ1125で書き込み完了フラグ706が“1”となった場合、モニタリング機能25は、当該LPAR番号と論理CPU番号を含む閾値管理テーブル700のエントリにおいて、総キャッシュヒット率707および総実行時間708を、入出力機能21を介して出力し、書き込み完了フラグを“0”に設定する(1126)。
 上記図23のモニタ有効化処理と図24のモニタリング処理により、ユーザは任意の論理CPUについて、総キャッシュヒット率および総実行時間を得ることができる。
 図25A、図25B、図25Cは、ユーザがLPAR#1(801)の論理CPU#0(811)に対してモニタリングの有効化命令とモニタリング実施命令を行い、モニタリング処理が完了するまでの閾値管理テーブル700の遷移を示す。
 図25Aは、図23のモニタ有効化処理を実施した後の閾値管理テーブル700を示す図である。図25Bは、図20A~図20Cの物理CPUディスパッチ終了処理を実施した後の閾値管理テーブル700を示す図である。図25Cは、図24のモニタリング処理を実施した後の閾値管理テーブル700を示す図である。
 なお、モニタ有効化が設定されてモニタリング処理が完了するまでの間に、LPAR#1(801)の論理CPU#0(811)は総キャッシュヒット率が“0.4”で、総実行時間が“500”であったものとする。以下、図25A~図25Cの遷移の理由を説明する。
 図25Aは、図23に示したモニタ有効化処理のステップ1113の処理によって、閾値管理テーブル700のLPAR番号701が1、論理CPU番号702が“0”のエントリにおいて、モニタ有効フラグ705が“1”に更新された結果である。
 図25Bは、スケジューリング処理の物理CPUディスパッチ終了処理974として図20Bに示したステップ1073において、閾値管理テーブル700のLPAR番号701が“1”、論理CPU番号702が“0”のエントリについて、総キャッシュヒット率707が“0.4”、総実行時間708が“500”、書き込み完了フラグ706が“1”、モニタ有効フラグ705が“0”に更新された結果である。
 図25Cは、図24に示したモニタリング処理のステップ1126によって、閾値管理テーブル700のうち、LPAR番号701が“1”、論理CPU番号702が“0”のエントリについて、モニタリング機能25が総キャッシュヒット率707および総実行時間708を入出力機能21へ出力した後、書き込み完了フラグ706を“0”に更新した結果である。
 ユーザは図22に示した閾値設定処理によって、各々の論理CPUに対し、期待する所定のキャッシュヒット率となる時間、すなわち閾値βまで一つのノード内の物理CPUで連続実行することを許可する。そして、論理CPUの総実行時間が、閾値βを経過した後に、キャッシュヒット率が閾値αに到達しているか否かに応じて論理CPU811(812)を割り当てる物理CPU4~7を制御できる。
 制御内容の概要は次の通りである。総キャッシュヒット率が閾値αに到達していた場合は、論理CPU811、812はキャッシュメモリ8、9の恩恵を受けているため引き続き同じノードの物理CPU4~7で当該論理CPUを連続実行してもよい。このため、ハイパバイザ20は別のノードにHALT状態の物理CPUが存在しても起床させず、現在起床している物理CPUのうちのいずれかにて実行させる。
 一方、総キャッシュヒット率が閾値αに到達していない場合、ハイパバイザ20は、当該論理CPU811で実行した処理についてキャッシュの恩恵を受けていないと判断し、別のノードにHALT状態の物理CPU4~7が存在する場合は、HALT状態の物理CPUを起床させて当該論理CPUを割り当てる実行させる。これにより、閾値βよりも長い時間にてメモリアクセス性能を測定した際に、論理CPUからみた物理メモリ10、11のアクセスコストをばらつかせ、ひいては物理メモリ10、11へのメモリアクセスコストを最大値と最小値の中間値にすることができる。
 閾値α、閾値βの設定に貢献する機能として、モニタリング機能25のモニタ有効化処理(図23)とモニタリング処理(図24)がある。これらの機能によりユーザは、各々の論理CPUにおいて所定のキャッシュヒット率となるまでの連続実行時間を知ることができる。
 一例として、一つの論理CPUに対して、モニタ有効化処理とモニタリング処理を交互に繰り返し実施し、論理CPUを一つのノードの物理CPU上で実行し続けた際の、実行時間とキャッシュヒット率との関係を図26に示す。
 図26は、論理CPUの実行時間とキャッシュヒット率との関係を示すグラフである。図中グラフG1は、短時間でキャッシュヒット率が上昇している特徴をもつ論理CPUの実行時間とキャッシュヒット率との関係を示すグラフである。また、グラフG2は、緩やかにキャッシュヒット率が上昇している特徴をもつ論理CPUの実行時間とキャッシュヒット率との関係を示すグラフである。さらに、グラフG3は、キャッシュヒット率が上昇することもなく低いまま変動している特徴をもつ論理CPUの実行時間とキャッシュヒット率との関係を示すグラフである。
 グラフG1の場合では、グラフG2やグラフG3と比べて短時間でキャッシュヒット率が上がっている。このような図となるときは、実行時間が閾値βを経過した後のキャッシュヒット率の高さから、論理CPU上で処理させるプログラムの使用メモリ量がキャッシュメモリ8、9の容量に比べて小さいこと等が考えられる。
 グラフG2の場合では、グラフG1と比べて緩やかにキャッシュヒット率が上昇している。このような図となるときは、キャッシュメモリ8、9に大量の書き込みを行うことでキャッシュヒット率が徐々に上がっていると考えられるので、プログラムの使用メモリ量がキャッシュ容量と同程度であること等が考えられる。
 グラフG3の場合では、グラフG1やグラフG2と比べてキャッシュヒット率が上昇することもなく低いまま変動している。このような図となるときは、キャッシュメモリ8、9に書き込みをしてもキャッシュヒットが増えないことからプログラムの使用メモリ量がキャッシュ容量と比べて大きいこと等が考えられる。
 以上のように、論理CPU811、812で処理させるプログラムによってキャッシュヒット率が所定の閾値αまで上昇する時間は異なるのだが、モニタリング機能25によってグラフG1~G3のようなキャッシュヒット率と、論理CPU811、812の連続実行時間との関係を得ることができ、ひいては所定のキャッシュ率となるまでの時間を調べることができるのである。
 この結果を用いて、例えば、グラフG1のようなメモリ使用量の少ないプログラムと図グラフG3のようなメモリ使用量の多いプログラムを一つの論理CPU811(812)で処理させたい場合には、グラフG1の閾値αをキャッシュメモリ8、9と物理メモリ1、011へのアクセス回数の比がちょうど中間となる“0.5”よりも大きい値に設定する。そして、キャッシュヒット率が閾値αとなるまでの論理CPU811(812)の実行時間を閾値βとして、上述の閾値設定処理にて設定する。なお、物理メモリ1、011へのアクセス回数は、論理CPU811(812)キャッシュミスの回数となる。
 これにより、閾値βに達する時間まで同じノードの物理CPU4~7で論理CPU811(812)を実行している際に、論理CPU811(812)がメモリ使用量の少ないプログラムを処理しているときには、閾値αよりもキャッシュヒット率が高いためにキャッシュメモリ8、9の恩恵が受けやすくなり、メモリ使用量の多いプログラムを処理しているときには閾値αよりもキャッシュヒット率が低くなるため、論理CPU811(812)からみた物理メモリ10、11へのアクセスコストをばらつかせ、ひいてはメモリアクセスコストを最大値と最小値の中間値にすることができる。
 また、論理CPU811(812)のメモリアクセス性能をより向上させるために、モニタリング機能25を用いて所定のキャッシュヒット率αとなったか否かを判定し、LPAR管理機能22の閾値設定処理にてキャッシュヒット率を入出力装置13にフィードバックして閾値αと閾値βをリアルタイムでチューニングする、ということも可能となる。
 以上の通り、多数の物理CPU(またはコア)4~7を備えた本実施例の仮想計算機システムにより、休止状態の物理CPUが存在する状態において、論理CPU811、812のキャッシュヒット率が閾値αよりも高いときは、同じノードの物理CPU4~7で論理CPU811、812を再度実行させてキャッシュメモリ8、9の恩恵を受けやすくする。一方、キャッシュヒット率が低い際には物理メモリ10、11へのアクセスを複数のノード上の物理CPU間で移動させ、論理CPU811、812から見た物理メモリ1、011へのアクセスコストを最大値と最小値の中間値にすることができる。
 次に、図27~図28を用いて従来例によるメモリアクセスの一例を説明する。図27はメモリアクセスの位置によりメモリアクセスコストが異なるNUMA構成のハードウェア(仮想計算機)1の構成を示すブロック図である。この例では、物理CPU1(5)が属するノード0(2)とは異なるノード(1)3の物理メモリ1(11)に、物理CPU1(5)からアクセス(31)する際のコストは、ノード(0)2とノード(1)3との間を接続するインターコネクト14を経由しなくてはならないため、物理CPU(1)5が属するノード(0)2の物理メモリ(0)10に物理CPU(1)5からアクセス30する際のコストより大きなものとなってしまう。なお、ハードウェア1では、従来のハイパバイザ(図示省略)が稼動する。
 一方で、従来技術では複数のLPAR801、802の論理CPU811、812として物理CPU4~7を時分割共有する際に、物理CPU4~7が十分にある場合は休止状態の物理CPUを起床させず、起床している物理CPUのみの上で動作させようとする。この一例を図28に示す。
 図28では、各ノード0、1の物理CPUにて実行させる論理CPU(実線)とハイパバイザ(点線)の時系列を示しており、図中下方向に時間が進むものとしている。また、矢印40を論理CPUの処理に要する時間、破線の矢印60をハイパバイザの処理に要する時間、破線70を休止状態の時間、メモリアクセス性能の平均値を測定する時間を時間T80とする。論理CPUの処理を示す矢印40の長さは最大でも、ハイパバイザにて予め定義されるタイムスライスとよばれる単位時間となる。タイムスライスは一般的には数十ミリ秒程度に設定される。
 図28では、論理CPUが一つのみ物理計算機上で稼動しており、ノード0に属する物理CPUで論理CPUの処理の実行が開始されている。その後、論理CPUの実行40が一旦終了してハイパバイザのスケジューリング処理60に移り、スケジューリング処理が論理CPUを再度実行させる先となる物理CPUを選択しようとしたところ、ノード1に属する物理CPUが全て休止状態70であったため、今まで論理CPUを実行させていたノード0に属する物理CPUを再度割り当てて実行させる。このように、ハイパバイザのスケジューリング処理がノード0に属する物理CPUを論理CPUに割り当て続ける処理は、ノード1に属する物理CPUが起床しない限り繰り返されてしまう。
 図28の場合において、LPARの論理CPUとして物理CPU1(5)が割り当てられ、かつ論理CPU上のプログラムにてメモリアクセス31を伴う処理を行なう場合を考える。時間Tの間、例えば一般的なメモリ測定の時間単位である一秒の間に注目したとき、論理CPUはノード0に属する物理CPUでしか実行していないことから、論理CPUはリモートでメモリアクセス31を常に行なっていることになる。このため、時間Tの平均メモリアクセス性能は、リモートメモリへのアクセス性能、すなわち低い性能となってしまう。
 ただし、上記の場合でも論理CPU上のプログラムにて利用するメモリ量が物理キャッシュメモリに収まる場合は、利用するメモリ内容がキャッシュに収まり次第、キャッシュメモリへのアクセスで足りるため、NUMA構成による物理メモリへのアクセス性能の影響は受けなくなる。言い換えると、短時間にて複数の物理CPU間で論理CPUの割り当て先を変更させるだけではキャッシュメモリの恩恵を受けにくくなってしまうため、キャッシュ内にアクセスしたいデータや命令の含有率、すなわちキャッシュヒット率が高い状態で保たれたときには、そのキャッシュの恩恵も受けられるようにするべきである。
 本発明では、論理CPUが同じノード上の物理CPUで連続実行された際に、ハイパバイザ20にて当該論理CPUの連続実行時間が、所定のキャッシュヒット率となるまでの時間βを経過しているか否かを判定し、時間βを経過している場合には論理CPUのキャッシュヒット率が閾値αに達しているか否かを判定する。
 そして、ハイパバイザ20は、キャッシュヒット率が閾値αよりも低い場合は、キャッシュメモリ8、9の恩恵が受けられていないと判断し、論理CPUを連続実行したノードとは別のノード上に休止状態の物理CPUが存在すれば当該物理CPUを起床して当該論理CPUを実行させる。
 一方、キャッシュヒット率が高い(閾値αに達している)場合は、論理CPUを連続実行したノードと別のノード上に休止状態の物理CPUが存在しても起床させず、ハイパバイザ20は引き続き現在のノードで起床している物理CPUに当該論理CPUを実行させる。また、キャッシュヒット率は低いが、論理CPUを連続実行させたノードとは別のノード上に休止状態の物理CPUが存在しなかった場合に関しても、ハイパバイザ20は現在起床している物理CPUにて当該論理CPUを再度実行させる。
 実行させる論理CPUはハイパバイザ20の論理CPUのキューにて保持し、キューに入った順序で論理CPUを物理CPU上にて実行させ、所定の周期(時分割の周期など)で論理CPUの実行が完了したら再度論理CPUをキューに入れる。
 総実行時間閾値βはメモリ性能の平均値を測定する時間Tよりも小さいものとする。この理由は上述の通りである。
 図29に本発明にて総キャッシュヒット率の閾値α=0.5、総実行時間の閾値βが論理CPUのタイムスライス二つ分であった場合に、各ノードの物理CPU4~7で実行させる論理CPUとハイパバイザの時系列の例を示している。こちらの例も上記図28と同様に、図中下方向に時間が進むものとしており、矢印41~44は論理CPU(例えば811)の処理に要する時間、破線の矢印61はハイパバイザ20の処理に要する時間、破線71は休止状態の時間、メモリ性能の平均値を測定する時間は時間T81としている。
 また、図29では論理CPUを一つのみ実行させている。このため、ハイパバイザ20の論理CPUのキューには当該論理CPU811一つしか出し入れされることがなく、当該論理CPU811の実行完了時に、当該論理CPUを論理CPUのキューに再度投入し、次の論理CPUの選択時に当該論理CPUを論理CPUのキューから取り出すことになる。
 総実行時間の閾値βを経過していない期間である90~92では、論理CPUのキャッシュヒット率は閾値αに至っていないとハイパバイザ20が判断し、ハイパバイザ20は別のノード1上に休止状態の物理CPUが存在しても起床させずにできるだけ起床している物理CPUにて論理CPUを実行させようとする。
 最初の総実行時間の閾値βを経たとき、すなわち期間90の直後に当該論理CPUのキャッシュヒット率が“0.3”だったとする。この場合、ハイパバイザ20は論理CPUのキャッシュヒット率が閾値α未満であるので、キャッシュメモリ8、9の恩恵を受けていないと判断し、ノード1に属する物理CPUを起床し、当該論理CPUをノード1に属する物理CPUで実行させている。
 二回目の総実行時間の閾値βを経た期間91の直後に当該論理CPUのキャッシュヒット率が“0.2”だったとする。この場合、ハイパバイザ20は一回目の総実行時間の閾値βを経過した期間90と同様に、論理CPUがキャッシュメモリ8、9の恩恵を受けていないと判断し、ノード0に属する物理CPUを起床し、当該論理CPUをノード0に属する物理CPUで再度実行させている。
 三回目の総実行時間の閾値βを経たとき、すなわち期間92の直後に当該論理CPUのキャッシュヒット率が“0.6”と、総キャッシュヒット率閾値α以上だったとすると、ハイパバイザ20は論理CPUがキャッシュの恩恵を受けているものと判断し、ノード1に属する物理CPUを起床することなく、引き続き論理CPUをノード0に属する物理CPUで実行させている(44)。
 このとき、時間Tに注目すると、期間90の直後および期間91の直後ではともにキャッシュヒット率が総キャッシュヒット率閾値αよりも低いため、論理CPUから物理メモリ10、11へのアクセスが頻繁に行なわれると考えることができる。さらに、時間Tの間では、論理CPUの実行時間41の総和と、論理CPUの実行時間42の総和はともに総実行時間の閾値β以上の時間となる。このことにより、時間Tの間では論理CPUはノード0に属する物理CPUとノード1に属する物理CPUにて同じ総実行時間の閾値β分だけ論理CPUを実行させていることとなる。
 図27において、図29のノード0に属する物理CPUを物理CPU1(5)、ノード1に属する物理CPUを物理CPU2(6)とし、図29における論理CPUが物理メモリ1(11)へのメモリアクセスを継続していた際のハードウェアの図を図30に示す。この場合、時間Tの間での物理メモリアクセスは、論理CPUがノード0に属する物理CPU1(5)とノード1に属する物理CPU2(6)にて同じ総実行時間分実行していることから、メモリアクセス31とメモリアクセス32を同程度の時間でそれぞれ行なっていることになる。ゆえに、当該論理CPUの時間Tにおける平均の物理メモリアクセスコストは、ローカルメモリのアクセスコスト、すなわち最小値と、リモートメモリのアクセスコスト、すなわち最大値との中間程度となる。
 本発明により、NUMA構成の仮想計算機のような、メモリのアクセス位置によってメモリアクセス性能(レイテンシ)が異なるハードウェアで、論理CPUの数に対し物理CPUが十分にある場合では、論理CPUに対する物理メモリアクセス性能は、1秒程度の時間Tにて観測した際に、最高性能と最低性能の中間程度の性能が少なくとも得られ、さらにキャッシュヒット率が閾値α以上の際にはキャッシュメモリ8、9による高いメモリリード、ライト性能となる効果が得られる。
 また、本発明において、休止状態の物理CPUが存在しないような仮想計算機システムがビジー状態の場合を図31に示す。図31は、図28と同様に、ノード0、1の物理CPUで実行させる論理CPUとハイパバイザの処理の時系列を示しており、図中下方向に時間が進むものとする。
 図31の場合では、実行させる論理CPUとして論理CPUa、論理CPUb、論理CPUcの三つが存在し、矢印50、53、56は論理CPUaの処理に要する時間、矢印51、54は論理CPUbの処理に要する時間、矢印52、55、57は論理CPUcの処理に要する時間、破線の矢印62~67はハイパバイザ20の処理に要する時間、メモリ性能の平均値を測定する時間は時間T82である。また、論理CPUやハイパバイザ20の処理が開始される際の論理CPUのキューに入っている論理CPU状態も時系列にて併せて図示する。ハイパバイザ20は、次に実行させる論理CPUを、キューのうち図中左側の要素から順次取り出し、論理CPUの実行が完了したら図中右側のキューの要素として投入される。例えば、論理CPUbの処理51が終わったときのキューではc、a、bとなり、論理CPUbの処理が終わったために図中キューの右側にbが挿入され、次回実行する論理CPUとして左側のc、すなわち論理CPUcがハイパバイザ20によって取り出されることを意味する。
 論理CPUの上で処理するプログラムによって実行時間は異なるため、各論理CPUの実行時間はまちまちとなり、先に実行を開始した論理CPUよりも後で実行を開始した論理CPUの方が先に実行を完了すると、論理CPUキューに入る順序は逆転する、という現象が発生する。図31においては、論理CPUbの処理54と、論理CPUcの処理55がこの現象に該当する。このため、論理CPUがキューに入る順序に関して、いわばランダム性が働く。
 論理CPUのキューに入る順序に関してランダム性が働くため、ハイパバイザ20がキューから取り出す論理CPUもランダムとなり、ひいては論理CPUを実行させる物理CPUもランダムとなる。
 このため、仮想計算機システムがビジー状態の場合において、論理CPUから物理メモリへのアクセスは、ローカルメモリのアクセスと、リモートメモリのアクセスをランダムに行なうことになる。このため、結果的に論理CPUに対するメモリアクセスコストが1秒程度の時間Tにて観測すると最大値と最小値の中間程度の性能が得られることになるのである。
 以上のように、本発明では、論理CPU811,812を実行した時間が閾値βを経過すると、ハイパバイザ20は、論理CPU811,812のキャッシュヒット率と閾値αとを比較した結果に応じて、当該論理CPUを次に実行させる物理CPU4~7を決定する。そして、ハイパバイザ20は、論理CPU811,812の性能情報であるキャッシュヒット率が閾値α以上であれば、同じノード内の物理CPU4~5を選択することで、論理CPU811はキャッシュメモリ8に格納されたデータまたは命令を読み込んで、効率よく処理を実行できる。
 一方、ハイパバイザ20は、論理CPU811,812のキャッシュヒット率が閾値α未満であれば、他のノードで休止している物理CPU6~7を選択し、当該物理CPUを起床させてから論理CPU811、812を実行させる。これにより、キャッシュヒット率が閾値α未満であれば、論理CPU811、812を実行させる物理CPUを他のノードの物理CPUに順次移動させることで、物理メモリへのアクセスコストが高い状態が継続するのを抑制できる。
 なお、実施例1では、モニタリング機能25が各物理CPU4~7のキャッシュメモリ8、9のアクセスに関する性能情報を測定する例を示したが、図32で示すように、ノード2、3に接続されたプロセッサ性能監視ユニット12で、物理CPU4~7のキャッシュリード回数、キャッシュヒット回数などの性能情報を測定し、モニタリング機能25でキャッシュヒット率を演算するようにしてもよい。
 プロセッサ性能監視ユニット12は、ノード2、3にそれぞれ接続されて、物理CPU4~7(または論理CPU)の性能に関する情報を測定する。物理CPU4~7(または論理CPU)のキャッシュメモリ8、9のリード回数(キャッシュリード回数)を測定するカウンタと、キャッシュメモリ8、9のヒット回数(キャッシュヒット回数)を測定するカウンタをそれぞれ備える(図示省略)。なお、図32の例では、物理CPU4、5でキャッシュメモリ8を共有し、物理CPU6、7がキャッシュメモリ9を共有し、キャッシュプロセッサ性能監視ユニット12は、各物理CPU4~7のキャッシュリード回数とキャッシュヒット回数をそれぞれ計数するカウンタを備える。
 なお、プロセッサ性能監視ユニット12が論理CPUのキャッシュリード回数、キャッシュヒット回数をカウントする場合、プロセッサ性能監視ユニット12からキャッシュメモリ8、9へのリードを観測すると、物理CPUと論理CPUの区別はつかない。このため、ハイパバイザ20は、プロセッサ性能監視ユニット12のカウンタをリセットした時点以降を、論理CPUのアクセスとみなしてキャッシュリード回数とキャッシュヒット回数を測定する。
 なお、上記各実施例において、タイマ16~19にセットするタイムスライスの時間は、LPAR801、802のゲストOS(図示省略)のタイマ割り込みの周期としてもよい。
 なお、本発明において説明した計算機等の構成、処理部及び処理手段等は、それらの一部又は全部を、専用のハードウェアによって実現してもよい。
 また、本実施例で例示した種々のソフトウェアは、電磁的、電子的及び光学式等の種々の記録媒体例えば、非一時的な記憶媒体に格納可能であり、インターネット等の通信網を通じて、コンピュータにダウンロード可能である。
 また、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明をわかりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。

Claims (10)

  1.  キャッシュメモリを備えた物理CPUと物理メモリを含むノードを複数有し、前記複数のノードの計算機資源を仮想計算機に割り当てる仮想化部と、を備えた仮想計算機システムであって、
     前記複数のノードは、インターコネクトを介して接続され、
     前記仮想化部は、
     前記仮想計算機に割り当てる計算機資源として論理区画と論理CPUを生成する論理区画管理部と、
     前記論理CPUを実行する前記物理CPUを選択するスケジューリング部と、
     前記論理CPUから前記物理メモリへのアクセス性能に関する性能情報を測定するモニタリング部と、を備え、
     前記スケジューリング部は、
     前記性能情報が所定の閾値を満たす場合には、前記論理CPUを実行する前記物理CPUを、前回実行した物理CPUと同一ノードから選択し、前記性能情報が所定の閾値を満たさない場合には、前記論理CPUを実行する前記物理CPUを、前回実行した物理CPUのノードとは異なる他のノードから選択することを特徴とする仮想計算機システム。
  2.  請求項1に記載の仮想計算機システムであって
     前記モニタリング部は、
     前記論理CPUを実行した際のキャッシュリード回数とキャッシュヒット回数を取得し、一つの論理CPUを連続実行させる間のキャッシュリード回数とキャッシュヒット回数を保持するキャッシュ情報とを有し、
     前記スケジューリング部は、
     前記論理CPUを実行させるたびに前記モニタリング部により前記キャッシュ情報を更新することを特徴とする仮想計算機システム。
  3.  請求項2に記載の仮想計算機システムであって
     前記モニタリング部は、
     前記キャッシュ情報から前記論理CPUを実行した際のキャッシュリード回数とキャッシュヒット回数を取得してキャッシュヒット率を算出し、
     前記スケジューリング部は、
     前記性能情報としてのキャッシュヒット率が所定の閾値以上の場合には、前記論理CPUを実行する前記物理CPUを、前回実行した物理CPUと同一ノードから選択し、前記性能情報としてのキャッシュヒット率が所定の閾値未満の場合には、前記論理CPUを実行する前記物理CPUを、前回実行した物理CPUのノードとは異なる他のノードから選択することを特徴とする仮想計算機システム。
  4.  請求項3に記載の仮想計算機システムであって
     前記スケジューリング部は、
     前記論理CPUを連続実行させた時間を測定して、前記論理CPU毎に前記連続実行させた時間を論理CPU管理情報に格納し、前記物理CPUで前記論理CPUを前記連続実行させた時間が所定の第2の閾値を超えたときには、
     前記キャッシュヒット率が所定の閾値以上の場合には、前記論理CPUを実行する前記物理CPUを、前回実行した物理CPUと同一ノードから選択し、前記キャッシュヒット率が所定の閾値未満の場合には、前記論理CPUを実行する前記物理CPUを、前回実行した物理CPUのノードとは異なる他のノードから選択することを特徴とする仮想計算機システム。
  5.  請求項4に記載の仮想計算機システムであって
     前記スケジューリング部は、
     前回実行した物理CPUのノードとは異なる他のノードから選択する場合には、前記他のノードから休止状態の物理CPUを選択し、当該物理CPUを起床させて前記論理CPUを実行することを特徴とする仮想計算機システム。
  6.  キャッシュメモリを備えた物理CPUと物理メモリを含むノードを複数有し、前記複数のノードの計算機資源から論理CPUと論理区画を生成して仮想計算機を稼動させる仮想化部が、前記論理CPUを物理CPUに割り当て実行させるスケジューリング方法であって、
     前記複数のノードは、インターコネクトを介して接続され、
     前記仮想化部が、前記論理CPUを割り当てる前記物理CPUを選択する第1のステップと、
     前記仮想化部が、前記論理CPUから前記物理メモリへのアクセス性能に関する性能情報を測定する第2のステップと、
     前記仮想化部は、前記性能情報が所定の閾値を満たす場合には、前記論理CPUを実行する前記物理CPUを、前回実行した物理CPUと同一ノードから選択し、前記性能情報が所定の閾値を満たさない場合には、前記論理CPUを実行する前記物理CPUを、前回実行した物理CPUのノードとは異なる他のノードから選択する第3のステップと、
    を含むことを特徴とするスケジューリング方法。
  7.  請求項6に記載のスケジューリング方法であって
     前記第2のステップは、
     前記論理CPUを実行した際のキャッシュリード回数とキャッシュヒット回数を取得し、一つの論理CPUを連続実行させる間のキャッシュリード回数とキャッシュヒット回数をキャッシュ情報に保持し、前記論理CPUを実行させるたびに前記キャッシュ情報を更新することを特徴とするスケジューリング方法。
  8.  請求項7に記載のスケジューリング方法であって
     前記第2のステップは、
     前記キャッシュ情報から前記論理CPUを実行した際のキャッシュリード回数とキャッシュヒット回数を取得してキャッシュヒット率を算出し、
     前記第3のステップは、
     前記性能情報としてのキャッシュヒット率が所定の閾値以上の場合には、前記論理CPUを実行する前記物理CPUを、前回実行した物理CPUと同一ノードから選択し、前記性能情報としてのキャッシュヒット率が所定の閾値未満の場合には、前記論理CPUを実行する前記物理CPUを、前回実行した物理CPUのノードとは異なる他のノードから選択することを特徴とするスケジューリング方法。
  9.  請求項8に記載のスケジューリング方法であって
     前記第3のステップは、
     前記論理CPUを連続実行させた時間を測定して、前記論理CPU毎に前記連続実行させた時間を論理CPU管理情報に格納し、前記物理CPUを割り当てた論理CPUの前記連続実行させた時間を前記論理CPU管理情報から取得し、前記連続実行させた時間が所定の第2の閾値を超えたときには、
     前記キャッシュヒット率が所定の閾値以上の場合には、前記論理CPUを実行する前記物理CPUを、前回実行した物理CPUと同一ノードから選択し、前記キャッシュヒット率が所定の閾値未満の場合には、前記論理CPUを実行する前記物理CPUを、前回実行した物理CPUのノードとは異なる他のノードから選択することを特徴とするスケジューリング方法。
  10.  請求項9に記載のスケジューリング方法であって
     前記第3のステップは、
     前回実行した物理CPUのノードとは異なる他のノードから選択する場合には、前記他のノードから休止状態の物理CPUを選択し、当該物理CPUを起床させて前記論理CPUを実行することを特徴とするスケジューリング方法。
PCT/JP2013/057141 2013-03-14 2013-03-14 仮想計算機システムおよびスケジューリング方法 WO2014141419A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/JP2013/057141 WO2014141419A1 (ja) 2013-03-14 2013-03-14 仮想計算機システムおよびスケジューリング方法
US14/762,027 US9740528B2 (en) 2013-03-14 2013-03-14 Virtual computer system and scheduling method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/057141 WO2014141419A1 (ja) 2013-03-14 2013-03-14 仮想計算機システムおよびスケジューリング方法

Publications (1)

Publication Number Publication Date
WO2014141419A1 true WO2014141419A1 (ja) 2014-09-18

Family

ID=51536115

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/057141 WO2014141419A1 (ja) 2013-03-14 2013-03-14 仮想計算機システムおよびスケジューリング方法

Country Status (2)

Country Link
US (1) US9740528B2 (ja)
WO (1) WO2014141419A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105511798A (zh) * 2014-09-24 2016-04-20 中国电信股份有限公司 虚拟机缓存资源管理方法和***
US10909044B2 (en) 2016-04-27 2021-02-02 Nec Corporation Access control device, access control method, and recording medium containing access control program

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2524075A (en) * 2014-03-14 2015-09-16 Ibm Advanced result cache refill
US9798665B1 (en) * 2015-12-20 2017-10-24 Infinidat Ltd. Cache eviction according to data hit ratio and service level agreement
JP2022091350A (ja) * 2020-12-09 2022-06-21 富士通株式会社 集計プログラム及び集計方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0612395A (ja) * 1992-06-29 1994-01-21 Canon Inc マルチプロセサシステムにおけるタスク割り付け方法
JP2006059052A (ja) * 2004-08-19 2006-03-02 Hitachi Ltd 仮想計算機システム
JP2009205696A (ja) * 2009-06-15 2009-09-10 Hitachi Ltd マルチコアプロセッサ計算機の制御方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4313068B2 (ja) * 2003-03-28 2009-08-12 株式会社日立製作所 記憶装置のキャッシュ管理方法
US7146467B2 (en) * 2003-04-14 2006-12-05 Hewlett-Packard Development Company, L.P. Method of adaptive read cache pre-fetching to increase host read throughput
US7117309B2 (en) * 2003-04-14 2006-10-03 Hewlett-Packard Development Company, L.P. Method of detecting sequential workloads to increase host read throughput
US9189291B2 (en) * 2005-12-12 2015-11-17 International Business Machines Corporation Sharing a kernel of an operating system among logical partitions
JP4705051B2 (ja) 2007-01-29 2011-06-22 株式会社日立製作所 計算機システム
US7734900B2 (en) * 2008-01-11 2010-06-08 International Business Machines Corporation Computer configuration virtual topology discovery and instruction therefore
US8037251B2 (en) * 2008-03-04 2011-10-11 International Business Machines Corporation Memory compression implementation using non-volatile memory in a multi-node server system with directly attached processor memory
US8635405B2 (en) * 2009-02-13 2014-01-21 Nec Corporation Computational resource assignment device, computational resource assignment method and computational resource assignment program
US8898664B2 (en) * 2010-06-01 2014-11-25 Microsoft Corporation Exposure of virtual cache topology to a guest operating system
US8478961B2 (en) * 2011-03-02 2013-07-02 International Business Machines Corporation Dynamic migration of virtual machines based on workload cache demand profiling
US20130080141A1 (en) * 2011-09-23 2013-03-28 National Tsing Hua University Power aware simulation system with embedded multi-core dsp
US20140096139A1 (en) * 2012-10-01 2014-04-03 International Business Machines Corporation Workload management considering hardware reliability
US8966316B2 (en) * 2012-11-30 2015-02-24 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Identifying software responsible for changes in system stability
US20140223122A1 (en) * 2013-02-06 2014-08-07 International Business Machines Corporation Managing virtual machine placement in a virtualized computing environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0612395A (ja) * 1992-06-29 1994-01-21 Canon Inc マルチプロセサシステムにおけるタスク割り付け方法
JP2006059052A (ja) * 2004-08-19 2006-03-02 Hitachi Ltd 仮想計算機システム
JP2009205696A (ja) * 2009-06-15 2009-09-10 Hitachi Ltd マルチコアプロセッサ計算機の制御方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105511798A (zh) * 2014-09-24 2016-04-20 中国电信股份有限公司 虚拟机缓存资源管理方法和***
CN105511798B (zh) * 2014-09-24 2018-07-24 中国电信股份有限公司 虚拟机缓存资源管理方法和***
US10909044B2 (en) 2016-04-27 2021-02-02 Nec Corporation Access control device, access control method, and recording medium containing access control program

Also Published As

Publication number Publication date
US9740528B2 (en) 2017-08-22
US20150339167A1 (en) 2015-11-26

Similar Documents

Publication Publication Date Title
US10678722B2 (en) Using a decrementer interrupt to start long-running hardware operations before the end of a shared processor dispatch cycle
JP6219512B2 (ja) 仮想ハドゥープマネジャ
JP5577412B2 (ja) 計算機システム、マイグレーション方法及び管理サーバ
US8443376B2 (en) Hypervisor scheduler
US8302098B2 (en) Hardware utilization-aware thread management in multithreaded computer systems
US10884779B2 (en) Systems and methods for selecting virtual machines to be migrated
KR101385827B1 (ko) 가상화된 환경들 내의 리소스 할당
JP5370946B2 (ja) リソース管理方法及び計算機システム
JP5354108B2 (ja) 情報処理プログラム、情報処理装置及び情報処理方法
JP2018533122A (ja) マルチバージョンタスクの効率的なスケジューリング
US10248460B2 (en) Storage management computer
JP6166616B2 (ja) 情報処理方法、情報処理装置及びプログラム
US9858101B2 (en) Virtual machine input/output thread management
WO2014141419A1 (ja) 仮想計算機システムおよびスケジューリング方法
JP2009245047A (ja) メモリバッファ割当装置およびプログラム
JP6072084B2 (ja) 仮想計算機システムおよび仮想計算機システムのデータ転送制御方法
KR102469927B1 (ko) 분할 메모리 관리장치 및 방법
JP2013250949A (ja) 計算機、仮想化機構、及びスケジューリング方法
Min et al. Vmmb: Virtual machine memory balancing for unmodified operating systems
CN114116155A (zh) 无锁工作窃取线程调度器
JP5178778B2 (ja) 仮想計算機およびcpu割り当て方法
JP5136658B2 (ja) 仮想計算機の割当方法及び割当プログラム並びに仮想計算機環境を有する情報処理装置
JP2010282550A (ja) 仮想計算機システム及びその物理資源の割当方法
US20140223109A1 (en) Hardware prefetch management for partitioned environments
WO2016203647A1 (ja) 計算機及び処理のスケジューリング方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13877528

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 14762027

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13877528

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP