US20130047157A1 - Information processing apparatus and interrupt control method - Google Patents
Information processing apparatus and interrupt control method Download PDFInfo
- Publication number
- US20130047157A1 US20130047157A1 US13/477,113 US201213477113A US2013047157A1 US 20130047157 A1 US20130047157 A1 US 20130047157A1 US 201213477113 A US201213477113 A US 201213477113A US 2013047157 A1 US2013047157 A1 US 2013047157A1
- Authority
- US
- United States
- Prior art keywords
- interrupt
- guest
- control unit
- destination
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
Definitions
- the embodiments discussed herein are related to an information processing apparatus and an interrupt control method.
- VM virtual machine
- VMM virtual machine monitor
- an interrupt controller notifies a hypervisor of the external interrupt request.
- the hypervisor converts the external interrupt request into a virtual interrupt request and notifies a VM serving as a destination of an interrupt of the virtual interrupt request.
- the VM notified of the virtual interrupt request executes an interrupt process and then notifies the hypervisor of the completion of execution. Subsequently, the hypervisor notifies the interrupt controller of completion of the interrupt, and the interrupt process is finished.
- one of the operating VMs to which the CPU is allocated can execute a process in accordance with a scheduler or the like. That is, a VM having the execution right of the CPU executes various processes.
- the CPU is allocated to VM 1 in a state where VM 1 , VM 2 , and VM 3 are operating, the VM 1 is in an execution state and the VM 2 and VM 3 are in an execution standby state where they are operating but unable to execute a process.
- an information processing apparatus includes an interrupt control unit that specifies a virtual machine serving as a destination of an interrupt request, and a virtualization control unit that operates multiple virtual machines.
- the virtualization control unit includes a specifying unit that specifies a storage destination of an interrupt program corresponding to the virtual machine specified by the interrupt control unit based on information stored in a storage unit which stores information on a storage destination of an interrupt program in association with each of the multiple virtual machines, and an execution control unit that reads and executes the interrupt program stored in the storage destination specified by the specifying unit.
- FIG. 1 is an exemplary diagram illustrating an information processing apparatus according to a first embodiment
- FIG. 2 is an exemplary diagram illustrating an example in which the information processing apparatus according to the first embodiment executes an interrupt process
- FIG. 3 is an exemplary diagram illustrating an example in which waiting of an interrupt process occurs
- FIG. 4 is an exemplary diagram illustrating an example in which an interrupt process is executed efficiently
- FIG. 5 is an exemplary functional block diagram illustrating the configuration of an information processing apparatus according to a second embodiment
- FIG. 6 is an exemplary diagram illustrating an example of information stored in a guest ID management table
- FIG. 7 is an exemplary diagram illustrating an example of information stored in an interrupt handler management table
- FIG. 8 is an exemplary diagram illustrating the processing sequence of the information processing apparatus according to the second embodiment by way of an NIC device
- FIG. 9 is an exemplary diagram illustrating the processing sequence of the information processing apparatus according to the second embodiment by way of an HDD device
- FIG. 10 is an exemplary diagram illustrating the processing sequence when a CPU is allocated to a guest serving as a destination of an interrupt request
- FIG. 11 is an exemplary diagram illustrating an example of a guest ID management table storing a protect mode
- FIG. 12 is an exemplary diagram illustrating changing of an execution method in accordance with the type of interrupts.
- FIG. 13 is an exemplary diagram illustrating an example of a hardware configuration of a computer executing an interrupt control program.
- FIG. 1 is an exemplary diagram illustrating an information processing apparatus according to a first embodiment.
- An information processing apparatus 10 illustrated in FIG. 1 is a server employing server virtualization techniques and operates multiple VMs (virtual machines).
- VMs virtual machines
- the information processing apparatus 10 is not limited to this, and may be other apparatuses such as a personal computer.
- the number of VMs is not limited to a number described herein.
- the information processing apparatus 10 includes an interrupt control unit 11 and a virtualization control unit 12 . Moreover, the information processing apparatus 10 operates a guest operating system (A) (hereinafter referred to as a guest OS (A)) and a guest OS (B) and a guest OS (C) as virtual machines.
- the guest OS (A) holds an interrupt program (A)
- the guest OS (B) holds an interrupt program (B)
- the guest OS (C) holds an interrupt program (C).
- the interrupt control unit 11 is a processing unit that specifies a virtual machine serving as a destination of an interrupt request when the interrupt request occurs.
- the virtualization control unit 12 includes a storage unit 12 a , a specifying unit 12 b , and an execution control unit 12 c and is a processing unit that processes an interrupt notified from the interrupt control unit 11 using these units.
- the storage unit 12 a may be included in another processing unit or the like in the information processing apparatus 10 rather than in the virtualization control unit 12 .
- the storage unit 12 a stores information on a storage destination, in which an interrupt program is stored, in association with each of multiple virtual machines.
- the specifying unit 12 b specifies a storage destination of an interrupt program correlated with the virtual machine specified by the interrupt control unit 11 from the storage unit 12 a .
- the execution control unit 12 c reads and executes the interrupt program from the storage destination specified by the specifying unit 12 b.
- the interrupt control unit 11 of the information processing apparatus 10 specifies a guest OS serving as a destination of an external interrupt when the external interrupt or the like is detected.
- the virtualization control unit 12 reads an interrupt program of the guest OS serving as a destination of the external interrupt and executes the interrupt program as a proxy for the guest OS.
- FIG. 2 is an exemplary diagram illustrating an example in which the information processing apparatus according to the first embodiment executes an interrupt process.
- the interrupt control unit 11 specifies a guest OS (A) serving as a destination of the external interrupt.
- the specifying unit 12 b of the virtualization control unit 12 specifies address information in which the interrupt program of the guest OS (A) is stored, from the storage unit 12 a .
- the execution control unit 12 c reads an interrupt program (A) of the guest OS (A) from the specified address information and executes the interrupt program (A) in the virtualization control unit 12 .
- the virtualization control unit 12 executes the interrupt program as a proxy for the guest OS which is the destination of the external interrupt.
- the information processing apparatus 10 can efficiently execute the interrupt process without delaying the interrupt process until a CPU is allocated to the guest OS.
- FIG. 3 is an exemplary diagram illustrating an example in which waiting of an interrupt process occurs.
- FIG. 3 illustrates a case in which the CPU is sequentially allocated to the guest OS (A), the guest OS (B), and the guest OS (C) with an elapse of time.
- the virtualization control unit 12 converts the interrupt (A) into a virtual interrupt (A) and notifies the guest OS (A) of the virtual interrupt (A) because the CPU is allocated to the guest OS (A) at time to.
- the virtualization control unit 12 delays the interrupt (C) since the CPU is allocated to the guest OS (B) at time t 1 .
- the virtualization control unit 12 converts the interrupt (C) into a virtual interrupt (C) and notifies the guest OS (C) of the virtual interrupt (C) so as to execute the interrupt (C). That is, the interrupt (C) is delayed for a period from time t 1 to time t 2 .
- the interrupts may be delayed depending on the CPU's allocation state.
- FIG. 4 is an exemplary diagram illustrating an example in which an interrupt process is executed efficiently.
- FIG. 4 is an exemplary diagram illustrating an interrupt process executed by the information processing apparatus 10 as illustrated in FIG. 1 , and the CPU allocation state is as illustrated in FIG. 3 .
- an interrupt (A) to the guest OS (A) occurs at time t 0 .
- the virtualization control unit 12 reads and executes the interrupt program (A) of the guest OS (A) to thereby process the interrupt (A) without converting the interrupt (A) into a virtual interrupt.
- the virtualization control unit 12 reads and executes the interrupt program (C) of the guest OS (C) to thereby process the interrupt (C).
- occurred interrupts can be executed sequentially without delaying the same, and hence, the information processing apparatus 10 can execute an interrupt process efficiently.
- FIG. 5 is an exemplary functional block diagram illustrating the configuration of the information processing apparatus according to the second embodiment.
- an information processing apparatus 20 includes a virtual area 20 a , a communication interface 20 b , an input/output interface 20 c , an interrupt controller 22 , and a control unit 25 .
- the processing units illustrated herein are only exemplary and are not limited to these.
- the information processing apparatus may include a storage device such as a memory or a hard disk, a display unit such as a display, an input unit such as a mouse, and the like.
- the virtual area 20 a is an area managed by a hypervisor 26 of the control unit 25 and can operate an optional number of VMs.
- a guest OS (A), a guest OS (B), and a guest OS (C) operate as VMs.
- a guest ID of 0 is allocated to the guest OS (A) as an identifier for identifying the guest OS (A)
- a guest ID of 1 is allocated to the guest OS (B) as an identifier for identifying the guest OS (B).
- a guest ID of 2 is allocated to the guest OS (C) as an identifier for identifying the guest OS (C).
- the respective guest OS's hold an interrupt handler executing an interrupt process in accordance with an interrupt factor.
- a virtual processor and a virtual memory are allocated to the respective guest OS's operating in the virtual area 20 a by the hypervisor 26 .
- the respective guest OS's operate as VMs with the help of the virtual processor and the virtual memory and execute various processes.
- the virtual memory is a virtual memory implemented by allocating a predetermined area of a memory of the information processing apparatus 20 as a memory used by a guest OS.
- the virtual processor is a virtual processor implemented by allocating a predetermined processing capability of a process of the information processing apparatus 20 as a processor used by a guest OS.
- the communication interface 20 b is an interface such as an NIC (network interface card) device, for example, and controls communication between the information processing apparatus 20 and other apparatuses.
- the communication interface 20 b receives data such as packets or frames from other apparatuses and transmits data processed in the information processing apparatus 20 to other apparatuses.
- the input/output interface 20 c controls communication with a display, a mouse, a keyboard, an HDD (hard disk drive) device, and the like.
- the input/output interface 20 c receives an input to the information processing apparatus 20 through a mouse or a keyboard.
- the input/output interface 20 c displays and outputs the results of the processing of the information processing apparatus 20 or the like on a display.
- the input/output interface 20 c executes a write request transmitted from a guest OS with respect to a storage device such as an HDD device and outputs data read from the HDD device to a guest OS.
- the interrupt controller 22 includes an interrupt target register 22 a , a guest ID management table 22 b , a storage control unit 22 c , and an interrupt destination specifying unit 22 d and is a processing unit that executes processes relevant to an interrupt using these units.
- the interrupt target register 22 a stores a guest ID of a guest OS serving as a destination of an interrupt.
- the guest ID is an identifier for identifying a guest OS operating in a virtual area.
- information stored in the interrupt target register 22 a is updated by the interrupt destination specifying unit 22 d .
- the interrupt controller 22 or the hypervisor 26 may delete a guest ID of a guest OS that executed the interrupt process.
- the guest ID management table 22 b is a storage unit that stores information of devices used by each of the guest OS's. Moreover, the information stored in the guest ID management table 22 b may be stored by an administrator or the like and may be stored by the storage control unit 22 c .
- FIG. 6 is an exemplary diagram illustrating an example of information stored in the guest ID management table 22 b . As illustrated in FIG. 6 , the guest ID management table 22 b stores “guest ID” and “device ID” in correlation.
- the “guest ID” stored therein is an identifier for identifying respective guest OS's operating in the virtual area 20 a
- the “device ID” stored therein is an identifier for identifying a device used by a guest OS and is an identifier for identifying an HDD, an NIC, or the like, for example.
- the guest OS (A) to which a guest ID of 0 is allocated uses a device having a device ID of devA.
- the guest OS (B) to which a guest ID of 1 is allocated uses a device having a device ID of devB.
- the guest OS (C) to which a guest ID of 2 is allocated uses a device having a device ID of devC and a device having a device ID of devD.
- the device ID can be used as the device ID.
- an MAC address of the NIC device such as “AA:AA:AA:AA:AA:AA” may be stored in the guest ID management table 22 b .
- a UUID universalally unique identifier
- a device name of the HDD device such as “1o9097hi-fujitsu . . . ” may be stored in the guest ID management table 22 b.
- the storage control unit 22 c is a processing unit that stores a guest ID for identifying the operating guest OS and a device ID of a device used by the guest OS in the guest ID management table 22 b in correlation. For example, when a guest OS (D) which is a new virtual machine is operated, the storage control unit 22 c receives a guest ID allocated to the guest OS (D) and a device ID of an NIC device used by the guest OS (D) from an operator or the like. Moreover, the storage control unit 22 c stores the received guest ID and device ID in the guest ID management table 22 b in correlation.
- the storage control unit 22 c extracts a guest ID and a device ID from the access request. Moreover, the storage control unit 22 c stores the extracted guest ID and device ID in the guest ID management table 22 b in correlation.
- the interrupt destination specifying unit 22 d is a processing unit that specifies a virtual machine serving as a destination of an interrupt request. For example, when a packet arrives at the communication interface 20 b , the interrupt destination specifying unit 22 d detects that an external interrupt requesting reception of packets has occurred. Then, the interrupt destination specifying unit 22 d specifies an NIC device at which the packet has arrived. Moreover, the interrupt destination specifying unit 22 d specifies a guest ID corresponding to the device ID of the NIC device from the guest ID management table 22 b . Subsequently, the interrupt destination specifying unit 22 d stores the specified guest ID in the interrupt target register 22 a and notifies the hypervisor 26 of an external interrupt request for reception of packets.
- the interrupt destination specifying unit 22 d detects that an external interrupt notifying completion of the DMA has occurred. Then, the interrupt destination specifying unit 22 d specifies a HDD device serving as a transmission source from a notification of completion of the DMA. Moreover, the interrupt destination specifying unit 22 d specifies a guest ID corresponding to the device ID allocated to the HDD device from the guest ID management table 22 b . Subsequently, the interrupt destination specifying unit 22 d stores the specified guest ID in the interrupt target register 22 a and notifies the hypervisor 26 of an external interrupt request for a notification of completion of the DMA.
- a DMA direct memory access
- the control unit 25 includes a process control unit 25 a and the hypervisor 26 and a processing unit that controls an interrupt process using these units.
- the control unit 25 is an electronic circuit such as a CPU.
- the control unit 25 may include an internal memory or the like.
- the process control unit 25 a is a processing unit that executes processes other than the processes relevant to the guest OS. For example, the process control unit 25 a executes stopping activation of an OS mounted in the information processing apparatus 20 and stopping activation of the hypervisor 26 .
- the hypervisor 26 includes an interrupt handler management table 26 a , a CPU allocating unit 26 b , an interrupt handler specifying unit 26 c , and an interrupt executing unit 26 d , and is a processing unit that processes an interrupt request notified from the interrupt controller 22 using these units. Moreover, the hypervisor 26 transmits packets transmitted from respective guest OS's to a destination and outputs device access requests output from respective guest OS's to the corresponding devices.
- the interrupt handler management table 26 a is a storage unit that stores information on a storage destination, in which an interrupt handler is stored, in association with each of multiple guest OS's.
- FIG. 7 is an exemplary diagram illustrating an example of information stored in an interrupt handler management table. As illustrated in FIG. 7 , the interrupt handler management table 26 a stores “guest ID”, “interrupt vector”, “interrupt handler”, and “guest page table” in correlation.
- the “guest ID” stored in the interrupt handler management table 26 a is an identifier for identifying guest OS's operate in the virtual area 20 a
- the “interrupt vector” is an identifier for identifying the factors of interrupts.
- the “interrupt handler” is stored in a format of the physical address used by a guest OS, that is, in a format of the address of a virtual address space provided by the hypervisor 26 , and represents a header address of a storage destination in which an interrupt handler is stored.
- the “guest page table” is a page table used for converting into a virtual space of a guest OS, and represents a header address of a physical address space held by the guest OS, that is, a header address of a virtual address space provided by the hypervisor 26 .
- FIG. 7 illustrates a case in which when an external interrupt of which the interrupt vector is 0 occurs with respect to the guest OS (A) to which a guest ID of 0 is allocated, a physical address “Handler — 0” of the guest OS (A) is converted into a virtual address using a guest page table PT0.
- the interrupt executing unit 26 d of the hypervisor 26 can execute an interrupt handler in an address space managed by the guest OS.
- FIG. 7 also illustrates a case in which when an external interrupt of the interrupt vector of 1 occurs with respect to the guest OS (B) to which a guest ID of 1 is allocated, a physical address “Handler B” of the guest OS (B) is converted into a virtual address using a guest page table PT1.
- interrupt handler management table 26 a can also store the header address of a TLB (translation look-aside buffer) held by a guest OS in correlation.
- the hypervisor 26 can specify the storage destination of an interrupt handler from a virtual address space of the guest OS at a higher speed.
- the CPU allocating unit 26 b is a processing unit that allocates the CPU to respective guest OS's in accordance with a predetermined scheduler. For example, the CPU allocating unit 26 b transfers the execution right of CPU from the guest OS (A) to the guest OS (B) in accordance with a schedule determined by an operator, a hypervisor, or the like. As a result, the guest OS (A) transitions to an execution standby state of not having the execution right, and the guest OS (B) transitions to an execution state of having the execution right.
- the interrupt handler specifying unit 26 c is a processing unit that specifies a storage destination of an interrupt handler corresponding to the guest OS specified by the interrupt controller 22 from the interrupt handler management table 26 a .
- the interrupt handler specifying unit 26 c receives an external interrupt request for reception of packets from the interrupt controller 22 . Subsequently, the interrupt handler specifying unit 26 c acquires a guest ID stored in the interrupt target register 22 a of the interrupt controller 22 . That is, the interrupt handler specifying unit 26 c acquires a destination of the external interrupt request for reception of packets.
- the interrupt handler specifying unit 26 c specifies a guest OS corresponding to the acquired guest ID.
- the correlation between the guest ID and the guest OS is stored in an internal memory of the control unit 25 or a storage device (not illustrated) such as a memory.
- the interrupt handler specifying unit 26 c acquires a CPU allocation state of the CPU allocating unit 26 b and determines whether the CPU is allocated to a guest OS serving as a destination of an external interrupt request for reception of packets. When the CPU is allocated, the interrupt handler specifying unit 26 c converts the external interrupt request into a virtual interrupt and outputs the converted virtual interrupt to a guest OS serving as the destination of the interrupt request.
- the interrupt handler specifying unit 26 c specifies an interrupt vector corresponding to the external interrupt.
- the interrupt handler specifying unit 26 c may specify the interrupt vector from the interrupt request and may hold a table storing the type of an interrupt request and the interrupt vector in correlation and specify the interrupt vector based on the table.
- the interrupt handler specifying unit 26 c reads an interrupt handler and a guest page table corresponding to a combination of the guest ID acquired from the interrupt controller 22 and the specified interrupt vector from the interrupt handler management table 26 a . After that, the interrupt handler specifying unit 26 c outputs the read interrupt handler and guest page table to the interrupt executing unit 26 d.
- the interrupt handler specifying unit 26 c has been notified of the external interrupt of which the interrupt vector is 0 from the interrupt controller 22 and has acquired a guest ID of 0 from the interrupt target register 22 a . Moreover, when it is determined that the CPU is allocated to the guest OS (A) having a guest ID of 0, the interrupt handler specifying unit 26 c converts the notified external interrupt into a virtual interrupt and outputs the virtual interrupt to the guest OS (A). As a result, the guest OS (A) executes an interrupt process.
- the interrupt handler specifying unit 26 c acquires “Handler — 0” and “PT0” corresponding to a combination of the guest ID of 0 and the interrupt vector of 0 from the interrupt handler management table 26 a . Moreover, the interrupt handler specifying unit 26 c outputs the physical address “Handler — 0” of the interrupt handler and the page table “PT0” to the interrupt executing unit 26 d.
- the interrupt executing unit 26 d is a processing unit that reads and executes an interrupt handler from the storage destination specified by the interrupt handler specifying unit 26 c .
- the interrupt executing unit 26 d acquires a physical address “Handler — 0” and a page table “PT0” from the interrupt handler specifying unit 26 c .
- the interrupt executing unit 26 d converts a physical address “Handler — 0” of a physical address space managed by the guest OS (A) into a virtual address of a virtual address space managed by the guest OS (A) using the page table “PT0”.
- the interrupt executing unit 26 d reads and executes the interrupt handler from the converted virtual address.
- the interrupt executing unit 26 d transmits “EOI (End of Interrupt)” which is a completion notification to the interrupt controller 22 or an interrupt controller which has issued an interrupt.
- FIGS. 8 to 10 the flow of processes executed by the information processing apparatus 20 will be described using FIGS. 8 to 10 .
- the request source of an interrupt request is an NIC device
- an example in which the request source of an interrupt request is an HDD device will be described using FIG. 9
- an example in which the CPU is allocated to a destination of an interrupt request will be described using FIG. 10 .
- FIG. 8 is an exemplary diagram illustrating the processing sequence of the information processing apparatus according to the second embodiment by way of an NIC device.
- the hypervisor 26 executes S 103 .
- the hypervisor 26 outputs a request to register an MAC address of an NIC device that is used by the guest OS or added to the interrupt controller 22 (S 103 and S 104 ).
- the hypervisor 26 also outputs a guest ID of the guest OS to the interrupt controller 22 .
- the guest ID may be designated by the operator and may be uniquely assigned by the hypervisor.
- the storage control unit 22 c of the interrupt controller 22 stores the MAC address of the NIC device and the guest ID notified from the hypervisor 26 in the guest ID management table 22 b in correlation (S 105 and S 106 ).
- the communication interface 20 b outputs a packet arrival request to the interrupt controller 22 (S 107 and S 108 ). That is, the communication interface 20 b notifies the interrupt controller 22 of an external interrupt.
- the interrupt destination specifying unit 22 d of the interrupt controller 22 specifies a guest ID corresponding to the MAC address of the NIC device at which packets have arrived from the guest ID management table 22 b (S 109 to S 111 ).
- the interrupt destination specifying unit 22 d may extract the MAC address of a destination stored in the header of the packets or the like and may extract the MAC address directly from the NIC device at which packets have arrived. For example, when a physical NIC device is shared by multiple guest OS's, the device ID may be extracted from the MAC address of the destination.
- the interrupt destination specifying unit 22 d stores the specified guest ID in the interrupt target register 22 a (S 112 and S 113 ). After that, the interrupt destination specifying unit 22 d sends a packet arrival request, that is, a physical interrupt request to the hypervisor 26 (S 114 and S 115 ).
- the guest OS having the guest ID specified by the interrupt destination specifying unit 22 d is excluded from CPU allocation (S 116 ). That is, a destination guest OS of an interrupt request transitions from a state of having the execution right of CPU to a state of not having the execution right.
- the interrupt handler specifying unit 26 c of the hypervisor 26 specifies a guest ID serving as a destination of an interrupt by referring to the interrupt target register 22 a (S 117 and S 118 ).
- the interrupt handler specifying unit 26 c checks an allocation state of the CPU allocating unit 26 b and detects that the CPU is not allocated to the guest OS having the specified guest ID (S 119 ).
- the interrupt handler specifying unit 26 c extracts an interrupt vector from a packet arrival request sent from the interrupt controller 22 and executes S 120 . That is, the interrupt handler specifying unit 26 c specifies a header address of an interrupt handler and a page table in accordance with a combination of the interrupt vector and the guest ID.
- the interrupt executing unit 26 d reads and executes the interrupt handler from the guest OS using the header address of the interrupt handler and the page table specified by the interrupt handler specifying unit 26 c (S 121 ).
- execution of the interrupt handler is finished, that is, when the external interrupt based on the packet arrival request is completed, the interrupt executing unit 26 d transmits the EOI to the interrupt controller (S 122 and S 123 ).
- FIG. 9 is an exemplary diagram illustrating the processing sequence of the information processing apparatus according to the second embodiment by way of an HDD device.
- the guest OS transmits an access request to the HDD device to the hypervisor 26 (S 201 and S 202 ).
- the hypervisor 26 assigns a device ID to an HDD device serving as an access request destination and outputs the access request to the device ID to the interrupt controller together with the assigned device ID (S 203 and S 204 ).
- the storage control unit 22 c of the interrupt controller 22 specifies a guest ID of a guest OS serving as a request source from the access request and the like and executes S 205 . That is, the storage control unit 22 c stores the specified guest ID and the device ID received along with the access request in the guest ID management table 22 b in correlation (S 205 and S 206 ).
- the interrupt controller 22 transmits a DMA transfer request to the HDD (S 207 and S 208 ).
- the HDD device transmits a DMA completion interrupt request to the interrupt controller 22 (S 209 and S 210 ). That is, the input/output interface 20 c notifies the interrupt controller 22 of the external interrupt.
- FIG. 10 is an exemplary diagram illustrating the processing sequence when a CPU is allocated to a guest serving as a destination of an interrupt request.
- the processes of S 301 to S 310 illustrated in FIG. 10 are the same as those of S 201 to S 210 described in FIG. 9 , and detailed description will not be provided.
- the interrupt destination specifying unit 22 d of the interrupt controller 22 specifies a guest ID corresponding to the device ID of the HDD device having transmitted the DMA transfer request from the guest ID management table 22 b (S 311 to S 313 ). Subsequently, the interrupt destination specifying unit 22 d stores the specified guest ID in the interrupt target register 22 a (S 314 and S 315 ). After that, the interrupt destination specifying unit 22 d sends the DMA transfer request, that is, a physical interrupt request to the hypervisor 26 (S 316 and S 317 ).
- the interrupt handler specifying unit 26 c of the hypervisor 26 specifies a guest ID serving as a destination of the interrupt by referring to the interrupt target register 22 a (S 318 and S 319 ).
- the interrupt handler specifying unit 26 c checks an allocation state of the CPU allocating unit 26 b and detects that the CPU is allocated to the guest OS having the specified guest ID (S 320 ).
- the interrupt handler specifying unit 26 c converts the DMA transfer request into a virtual interrupt request (S 321 ) and sends the converted virtual interrupt request to a guest OS having the specified guest ID (S 322 and S 323 ). After that, the guest OS having received the virtual interrupt request executes an interrupt process and transmits the EOI to the interrupt controller when the interrupt process is completed (S 324 and S 325 ).
- the hypervisor 26 can determine which guest OS the interrupt process is directed to and perform a proxy process on the interrupt handler of the guest OS. Moreover, since the information processing apparatus 20 can finish the interrupt process without waiting until the CPU is allocated to the guest OS, the information processing apparatus 20 can process immediately a subsequent interrupt without delay. Moreover, since the information processing apparatus 20 directly invokes the interrupt handler of the guest OS without through the virtual interrupt, it is possible to efficiently execute an interrupt process to the guest OS. Moreover, by issuing an EOI by the interrupt handler, it is possible to process a subsequent interrupt without delay.
- FIG. 11 is an exemplary diagram illustrating an example of a guest ID management table storing a protect mode.
- the guest ID management table stores “protect mode” in addition to “guest ID and device ID” described in the second embodiment and the like.
- the “protect mode” stored herein is information representing a storage destination of an operation mode of a guest OS and is the header address of a virtual address space managed by the guest OS, for example.
- the operation mode read from an address indicated by the protect mode is called a protected virtual address mode, for example.
- the protect mode is stored by the interrupt controller 22 receiving the same from an operator or the like.
- the interrupt controller 22 stores information which the hypervisor 26 receives from an operator at the timing of S 102 of FIG. 8 in the guest ID management table.
- the interrupt destination specifying unit 22 d of the interrupt controller 22 also specifies the protect mode and registers the same in the interrupt target register 22 a and notifies the hypervisor 26 of the same. Moreover, when executing the interrupt handler, the interrupt executing unit 26 d of the hypervisor 26 reads the protect mode from the storage destination and executes the interrupt handler in the operation mode of respective guest OS's. Thus, since the information processing apparatus 20 can execute the interrupt handler in the operation mode of the respective guest OS's, it is possible to prevent destruction of a memory space or the like of other guest OS's.
- the information processing apparatus disclosed herein may determine whether the hypervisor 26 performs an interrupt process as a proxy depending on the type of interrupts. For example, information on the storage destination of an interrupt handler executed with respect to a hardware interrupt is stored in the interrupt handler management table 26 a of the hypervisor 26 in association with each of the guest OS's. By doing so, a hardware interrupt can be executed preferentially to a software interrupt.
- the hardware interrupt is an interrupt process such as an Ethernet (registered trademark) driver process, a SCSI (small computer system interface) host adapter driver process, or a serial driver process.
- the hardware interrupt is an interrupt process which requires execution of an interrupt to be completed as fast as possible when the interrupt occurs so that the execution time decreases.
- the software interrupt is an interrupt process such as a TCP (transmission control protocol)/IP (internet protocol) protocol process, a SCSI protocol process, or a terminal control process.
- the software interrupt is an interrupt process which does not require fast completion of execution as compared to the hardware interrupt.
- the hypervisor of the information processing apparatus disclosed herein example performs execution in the context of a hardware interrupt handler, and only registration of a software interrupt is executed in the hardware interrupt handler, and the software interrupts are collectively executed later.
- FIG. 12 is an exemplary diagram illustrating changing of an execution method in accordance with the type of interrupts.
- the hypervisor holds a hardware interrupt handler executing a hardware interrupt, and the hardware interrupt handler holds an interrupt handler of each hardware interrupt as a fast interrupt handler.
- the hypervisor activates a hardware interrupt handler to invoke the fast interrupt handler and executes an interrupt process as a proxy for the guest OS. After that, when execution is completed, the fast interrupt handler issues the EOI to an interrupt controller.
- the hypervisor activates a hardware interrupt handler to convert the software interrupt into a virtual interrupt and notifies the kernel of the guest OS of the virtual interrupt.
- the guest OS executes a slow interrupt handler.
- the slow interrupt handler is an interrupt handler that executes a software interrupt, for example.
- the slow interrupt handler of the guest OS executes a software interrupt handler to execute an interrupt process.
- the software interrupt handler issues the EOI to the interrupt controller.
- a hardware interrupt may be first executed with respect to a single external interrupt to issue the EOI, and then, the external interrupt may be collectively executed as a software interrupt.
- the interrupt controller when packets arrive at an NIC device, the interrupt controller generates an interrupt request and activates a hardware interrupt handler of the hypervisor. Since the external interrupt corresponds to a slow interrupt, the hardware interrupt handler of the hypervisor converts the external interrupt into a virtual interrupt and notifies the slow interrupt handler held by the kernel of the guest OS of the virtual interrupt.
- the hardware interrupt handler of the hypervisor invokes a fast interrupt handler of a registered guest and issues the EOI when the process of the fast interrupt handler is finished.
- the slow interrupt handler of the guest OS executes the software interrupt handler to execute an interrupt process.
- the interrupt handler is read and executed when the execution right of a processor is not allocated to the guest OS, and the external interrupt is converted into a virtual interrupt request, and the virtual interrupt request is output to the guest OS when the execution right of a processor is allocated to the guest OS.
- a method of executing interrupts in the information processing apparatus disclosed herein is not limited to this.
- the hypervisor of the information processing apparatus may execute the interrupt handler as a proxy for the guest OS.
- all or part of the processes described to be automatically performed may be manually performed.
- all or part of the processes described to be manually performed may be automatically performed with publicly known methods.
- the processing procedures, control procedures, and specific names described in the above document and the drawings, for example, information including various data and parameters, may be arbitrarily modified unless otherwise specified.
- FIG. 13 is an exemplary diagram illustrating an example of a hardware configuration of a computer executing an interrupt control program.
- a computer 100 includes a CPU 102 , an input device 103 , an output device 104 , a communication interface 105 , a medium reading device 106 , an HDD (hard disk drive) 107 , and a RAM (random access memory) 108 .
- the respective units illustrated in FIG. 13 are connected to each other by a bus 101 .
- the input device 103 is a mouse and a keyboard
- the output device 104 is a display or the like
- the communication interface 105 is an interface such as an NIC.
- the HDD 107 stores information of the tables illustrated in FIG. 5 together with an interrupt control program 107 a .
- the HDD 107 is illustrated as an example of a recording medium, various programs may be stored in another computer readable recording medium such as a ROM (read only memory), a RAM (random access memory), or a CD-ROM and be read into the computer.
- a storage medium may be disposed in a remote site, and the computer may access the storage medium to acquire and use the program.
- the acquired program may be stored in a recording medium of the computer itself and used.
- the CPU 102 reads the interrupt control program 107 a and deploys the same into the RAM 108 to thereby operate an interrupt control processor 108 a that executes the respective functions described in FIG. 5 and the like. That is, the interrupt control processor 108 a executes the same functions as the storage control unit 22 c , the interrupt destination specifying unit 22 d , the interrupt handler specifying unit 26 c , and the interrupt executing unit 26 d described in FIG. 5 . As above, the computer 100 reads and executes the program and operates as an information processing apparatus executing an interrupt control method.
- the computer 100 may implement the same functions as the above-described embodiments by reading the interrupt control program 107 a from a recording medium using the medium reading device 106 and executing the read interrupt control program 107 a .
- the program mentioned in the other embodiment is not limited to one which is executed by the computer 100 .
- the present invention can be similarly applied to when another computer or server executes the program and when the computer and the server execute the program in cooperation.
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
An information processing apparatus includes an interrupt control unit and a virtualization control unit. The interrupt control unit specifies a virtual machine serving as a destination of an interrupt request. The virtualization control unit operates multiple virtual machines. The virtualization control unit includes a specifying unit and an execution control unit. The specifying unit specifies a storage destination of an interrupt program corresponding to the virtual machine specified by the interrupt control unit based on information stored in a storage unit which stores information on a storage destination of an interrupt program in association with each of the multiple virtual machines. The execution control unit reads and executes the interrupt program stored in the storage destination specified by the specifying unit.
Description
- This application is based upon and claims the benefit of priority of the prior Japanese Patent Application No. 2011-177667, filed on Aug. 15, 2011, the entire contents of which are incorporated herein by reference.
- The embodiments discussed herein are related to an information processing apparatus and an interrupt control method.
- Server virtualization techniques have been known. According to this technique, a virtual server called a VM (virtual machine) operates on a physical server such as an information processing apparatus. In the physical server, a hypervisor called a VMM (virtual machine monitor) operates. The hypervisor performs various types of control relevant to VM such as generation of VM.
- When an external interrupt request to VM occurs in a physical server employing the server virtualization techniques, an interrupt controller notifies a hypervisor of the external interrupt request. The hypervisor converts the external interrupt request into a virtual interrupt request and notifies a VM serving as a destination of an interrupt of the virtual interrupt request. The VM notified of the virtual interrupt request executes an interrupt process and then notifies the hypervisor of the completion of execution. Subsequently, the hypervisor notifies the interrupt controller of completion of the interrupt, and the interrupt process is finished.
- Moreover, as a technique of executing an interrupt to a VM, there is known a technique in which when a VM operates, the entry of an interrupt vector table of a hypervisor is rewritten into an interrupt processing program of the VM (see, for example, Japanese Laid-open Patent Publication No. 61-206043). Moreover, there is known a technique in which when the purpose of activation of the VM is an interrupt, information appropriate for the content of an interrupt is stored in a stack, and control is transferred to an interrupt handler in the VM executing an appropriate process on the stored information (see, for example, Japanese Laid-open Patent Publication No. 61-184643). Furthermore, there is known a technique in which when an execution right is allocated to a VM which is a performance monitoring target, a link to an interrupt handler of the VM is registered in an interrupt table of a hypervisor. Moreover, when an interrupt occurs, the interrupt handler is activated in accordance with the interrupt table (see, for example, Japanese Laid-open Patent Publication No. 2010-152458).
- However, in the related art, when an interrupt request to a VM to which a CPU (central processing unit) is not allocated occurs, it is not possible to process the interrupt request until the CPU is allocated to the VM. Thus, there is a problem in that an interrupt process is not performed efficiently.
- For example, when multiple VMs are operating in a physical server, one of the operating VMs to which the CPU is allocated can execute a process in accordance with a scheduler or the like. That is, a VM having the execution right of the CPU executes various processes. Thus, when the CPU is allocated to VM1 in a state where VM1, VM2, and VM3 are operating, the VM1 is in an execution state and the VM2 and VM3 are in an execution standby state where they are operating but unable to execute a process.
- Thus, when an interrupt request to a VM in an execution standby state occurs, it is not possible to execute an interrupt process until the VM transitions to an execution state. As above, depending on the state of a VM serving as a destination of an interrupt request, it takes time until the interrupt process is completed. Thus, the interrupt process would not be executed efficiently.
- According to an aspect of an embodiment of the invention, an information processing apparatus includes an interrupt control unit that specifies a virtual machine serving as a destination of an interrupt request, and a virtualization control unit that operates multiple virtual machines. The virtualization control unit includes a specifying unit that specifies a storage destination of an interrupt program corresponding to the virtual machine specified by the interrupt control unit based on information stored in a storage unit which stores information on a storage destination of an interrupt program in association with each of the multiple virtual machines, and an execution control unit that reads and executes the interrupt program stored in the storage destination specified by the specifying unit.
- The object and advantages of the embodiment will be realized and attained by means of the elements and combinations particularly pointed out in the claims.
- It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory and are not restrictive of the embodiment, as claimed.
-
FIG. 1 is an exemplary diagram illustrating an information processing apparatus according to a first embodiment; -
FIG. 2 is an exemplary diagram illustrating an example in which the information processing apparatus according to the first embodiment executes an interrupt process; -
FIG. 3 is an exemplary diagram illustrating an example in which waiting of an interrupt process occurs; -
FIG. 4 is an exemplary diagram illustrating an example in which an interrupt process is executed efficiently; -
FIG. 5 is an exemplary functional block diagram illustrating the configuration of an information processing apparatus according to a second embodiment; -
FIG. 6 is an exemplary diagram illustrating an example of information stored in a guest ID management table; -
FIG. 7 is an exemplary diagram illustrating an example of information stored in an interrupt handler management table; -
FIG. 8 is an exemplary diagram illustrating the processing sequence of the information processing apparatus according to the second embodiment by way of an NIC device; -
FIG. 9 is an exemplary diagram illustrating the processing sequence of the information processing apparatus according to the second embodiment by way of an HDD device; -
FIG. 10 is an exemplary diagram illustrating the processing sequence when a CPU is allocated to a guest serving as a destination of an interrupt request; -
FIG. 11 is an exemplary diagram illustrating an example of a guest ID management table storing a protect mode; -
FIG. 12 is an exemplary diagram illustrating changing of an execution method in accordance with the type of interrupts; and -
FIG. 13 is an exemplary diagram illustrating an example of a hardware configuration of a computer executing an interrupt control program. - Preferred embodiments of the present invention will be explained with reference to accompanying drawings. It is noted that the invention is not limited to these embodiments.
-
FIG. 1 is an exemplary diagram illustrating an information processing apparatus according to a first embodiment. Aninformation processing apparatus 10 illustrated inFIG. 1 is a server employing server virtualization techniques and operates multiple VMs (virtual machines). In this example, although an example in which theinformation processing apparatus 10 is a server is described, theinformation processing apparatus 10 is not limited to this, and may be other apparatuses such as a personal computer. Moreover, the number of VMs is not limited to a number described herein. - As illustrated in
FIG. 1 , theinformation processing apparatus 10 includes aninterrupt control unit 11 and avirtualization control unit 12. Moreover, theinformation processing apparatus 10 operates a guest operating system (A) (hereinafter referred to as a guest OS (A)) and a guest OS (B) and a guest OS (C) as virtual machines. The guest OS (A) holds an interrupt program (A), the guest OS (B) holds an interrupt program (B), and the guest OS (C) holds an interrupt program (C). - The
interrupt control unit 11 is a processing unit that specifies a virtual machine serving as a destination of an interrupt request when the interrupt request occurs. Thevirtualization control unit 12 includes astorage unit 12 a, a specifying unit 12 b, and anexecution control unit 12 c and is a processing unit that processes an interrupt notified from theinterrupt control unit 11 using these units. Thestorage unit 12 a may be included in another processing unit or the like in theinformation processing apparatus 10 rather than in thevirtualization control unit 12. - The
storage unit 12 a stores information on a storage destination, in which an interrupt program is stored, in association with each of multiple virtual machines. The specifying unit 12 b specifies a storage destination of an interrupt program correlated with the virtual machine specified by theinterrupt control unit 11 from thestorage unit 12 a. Theexecution control unit 12 c reads and executes the interrupt program from the storage destination specified by the specifying unit 12 b. - As above, the
interrupt control unit 11 of theinformation processing apparatus 10 specifies a guest OS serving as a destination of an external interrupt when the external interrupt or the like is detected. Thevirtualization control unit 12 reads an interrupt program of the guest OS serving as a destination of the external interrupt and executes the interrupt program as a proxy for the guest OS. Here, a specific example will be described usingFIG. 2 .FIG. 2 is an exemplary diagram illustrating an example in which the information processing apparatus according to the first embodiment executes an interrupt process. - As illustrated in
FIG. 2 , when an external interrupt is detected, the interruptcontrol unit 11 specifies a guest OS (A) serving as a destination of the external interrupt. The specifying unit 12 b of thevirtualization control unit 12 specifies address information in which the interrupt program of the guest OS (A) is stored, from thestorage unit 12 a. Theexecution control unit 12 c reads an interrupt program (A) of the guest OS (A) from the specified address information and executes the interrupt program (A) in thevirtualization control unit 12. - That is, the
virtualization control unit 12 executes the interrupt program as a proxy for the guest OS which is the destination of the external interrupt. Thus, theinformation processing apparatus 10 can efficiently execute the interrupt process without delaying the interrupt process until a CPU is allocated to the guest OS. - For example,
FIG. 3 is an exemplary diagram illustrating an example in which waiting of an interrupt process occurs.FIG. 3 illustrates a case in which the CPU is sequentially allocated to the guest OS (A), the guest OS (B), and the guest OS (C) with an elapse of time. In this case, when an interrupt (A) to the guest OS (A) occurs at time t0, thevirtualization control unit 12 converts the interrupt (A) into a virtual interrupt (A) and notifies the guest OS (A) of the virtual interrupt (A) because the CPU is allocated to the guest OS (A) at time to. - When an interrupt (C) to the guest OS (C) occurs at time t1, the
virtualization control unit 12 delays the interrupt (C) since the CPU is allocated to the guest OS (B) at time t1. After time t2 at which the CPU is allocated to the guest OS (C), thevirtualization control unit 12 converts the interrupt (C) into a virtual interrupt (C) and notifies the guest OS (C) of the virtual interrupt (C) so as to execute the interrupt (C). That is, the interrupt (C) is delayed for a period from time t1 to time t2. As above, when interrupts are executed by respective guest OS's, the interrupts may be delayed depending on the CPU's allocation state. - On the other hand,
FIG. 4 is an exemplary diagram illustrating an example in which an interrupt process is executed efficiently.FIG. 4 is an exemplary diagram illustrating an interrupt process executed by theinformation processing apparatus 10 as illustrated inFIG. 1 , and the CPU allocation state is as illustrated inFIG. 3 . Here, as illustrated inFIG. 4 , it is assumed that an interrupt (A) to the guest OS (A) occurs at time t0. In this case, although the CPU is allocated to the guest OS (A), thevirtualization control unit 12 reads and executes the interrupt program (A) of the guest OS (A) to thereby process the interrupt (A) without converting the interrupt (A) into a virtual interrupt. - Moreover, when an interrupt (C) to the guest OS (C) occurs at time t1, although the CPU is allocated to the guest OS (B) at time t1, the
virtualization control unit 12 reads and executes the interrupt program (C) of the guest OS (C) to thereby process the interrupt (C). As above, as understood from comparison withFIG. 3 , occurred interrupts can be executed sequentially without delaying the same, and hence, theinformation processing apparatus 10 can execute an interrupt process efficiently. - Next, an information processing apparatus according to a second embodiment will be described. In the second embodiment, the configuration of the information processing apparatus according to the second embodiment, the flow of processing, and the like will be described.
-
FIG. 5 is an exemplary functional block diagram illustrating the configuration of the information processing apparatus according to the second embodiment. As illustrated inFIG. 5 , aninformation processing apparatus 20 includes avirtual area 20 a, acommunication interface 20 b, an input/output interface 20 c, an interruptcontroller 22, and acontrol unit 25. The processing units illustrated herein are only exemplary and are not limited to these. For example, the information processing apparatus may include a storage device such as a memory or a hard disk, a display unit such as a display, an input unit such as a mouse, and the like. - The
virtual area 20 a is an area managed by ahypervisor 26 of thecontrol unit 25 and can operate an optional number of VMs. InFIG. 5 , a guest OS (A), a guest OS (B), and a guest OS (C) operate as VMs. In this example, a guest ID of 0 is allocated to the guest OS (A) as an identifier for identifying the guest OS (A), and a guest ID of 1 is allocated to the guest OS (B) as an identifier for identifying the guest OS (B). Moreover, a guest ID of 2 is allocated to the guest OS (C) as an identifier for identifying the guest OS (C). Moreover, the respective guest OS's hold an interrupt handler executing an interrupt process in accordance with an interrupt factor. - A virtual processor and a virtual memory are allocated to the respective guest OS's operating in the
virtual area 20 a by thehypervisor 26. The respective guest OS's operate as VMs with the help of the virtual processor and the virtual memory and execute various processes. The virtual memory is a virtual memory implemented by allocating a predetermined area of a memory of theinformation processing apparatus 20 as a memory used by a guest OS. The virtual processor is a virtual processor implemented by allocating a predetermined processing capability of a process of theinformation processing apparatus 20 as a processor used by a guest OS. - The
communication interface 20 b is an interface such as an NIC (network interface card) device, for example, and controls communication between theinformation processing apparatus 20 and other apparatuses. For example, thecommunication interface 20 b receives data such as packets or frames from other apparatuses and transmits data processed in theinformation processing apparatus 20 to other apparatuses. - The input/
output interface 20 c controls communication with a display, a mouse, a keyboard, an HDD (hard disk drive) device, and the like. For example, the input/output interface 20 c receives an input to theinformation processing apparatus 20 through a mouse or a keyboard. Moreover, the input/output interface 20 c displays and outputs the results of the processing of theinformation processing apparatus 20 or the like on a display. Furthermore, the input/output interface 20 c executes a write request transmitted from a guest OS with respect to a storage device such as an HDD device and outputs data read from the HDD device to a guest OS. - The interrupt
controller 22 includes an interrupt target register 22 a, a guest ID management table 22 b, astorage control unit 22 c, and an interruptdestination specifying unit 22 d and is a processing unit that executes processes relevant to an interrupt using these units. - The interrupt target register 22 a stores a guest ID of a guest OS serving as a destination of an interrupt. The guest ID is an identifier for identifying a guest OS operating in a virtual area. Moreover, information stored in the interrupt target register 22 a is updated by the interrupt
destination specifying unit 22 d. Moreover, when an interrupt process is completed, the interruptcontroller 22 or thehypervisor 26 may delete a guest ID of a guest OS that executed the interrupt process. - The guest ID management table 22 b is a storage unit that stores information of devices used by each of the guest OS's. Moreover, the information stored in the guest ID management table 22 b may be stored by an administrator or the like and may be stored by the
storage control unit 22 c.FIG. 6 is an exemplary diagram illustrating an example of information stored in the guest ID management table 22 b. As illustrated inFIG. 6 , the guest ID management table 22 b stores “guest ID” and “device ID” in correlation. The “guest ID” stored therein is an identifier for identifying respective guest OS's operating in thevirtual area 20 a, and the “device ID” stored therein is an identifier for identifying a device used by a guest OS and is an identifier for identifying an HDD, an NIC, or the like, for example. - In the case of
FIG. 6 , the guest OS (A) to which a guest ID of 0 is allocated uses a device having a device ID of devA. Similarly, the guest OS (B) to which a guest ID of 1 is allocated uses a device having a device ID of devB. Moreover, the guest OS (C) to which a guest ID of 2 is allocated uses a device having a device ID of devC and a device having a device ID of devD. - Various types of information can be used as the device ID. For example, when the device is an NIC device, an MAC address of the NIC device such as “AA:AA:AA:AA:AA:AA” may be stored in the guest ID management table 22 b. Moreover, when the device is an HDD device, a UUID (universally unique identifier) or a device name of the HDD device such as “1o9097hi-fujitsu . . . ” may be stored in the guest ID management table 22 b.
- When the guest OS operates in the
virtual area 20 a, thestorage control unit 22 c is a processing unit that stores a guest ID for identifying the operating guest OS and a device ID of a device used by the guest OS in the guest ID management table 22 b in correlation. For example, when a guest OS (D) which is a new virtual machine is operated, thestorage control unit 22 c receives a guest ID allocated to the guest OS (D) and a device ID of an NIC device used by the guest OS (D) from an operator or the like. Moreover, thestorage control unit 22 c stores the received guest ID and device ID in the guest ID management table 22 b in correlation. - Moreover, when an access request to an HDD device is transmitted from the newly operated guest OS (D), the
storage control unit 22 c extracts a guest ID and a device ID from the access request. Moreover, thestorage control unit 22 c stores the extracted guest ID and device ID in the guest ID management table 22 b in correlation. - The interrupt
destination specifying unit 22 d is a processing unit that specifies a virtual machine serving as a destination of an interrupt request. For example, when a packet arrives at thecommunication interface 20 b, the interruptdestination specifying unit 22 d detects that an external interrupt requesting reception of packets has occurred. Then, the interruptdestination specifying unit 22 d specifies an NIC device at which the packet has arrived. Moreover, the interruptdestination specifying unit 22 d specifies a guest ID corresponding to the device ID of the NIC device from the guest ID management table 22 b. Subsequently, the interruptdestination specifying unit 22 d stores the specified guest ID in the interrupt target register 22 a and notifies thehypervisor 26 of an external interrupt request for reception of packets. - Moreover, when a response to a DMA (direct memory access) transfer transmitted from a guest OS arrives at the input/
output interface 20 c, the interruptdestination specifying unit 22 d detects that an external interrupt notifying completion of the DMA has occurred. Then, the interruptdestination specifying unit 22 d specifies a HDD device serving as a transmission source from a notification of completion of the DMA. Moreover, the interruptdestination specifying unit 22 d specifies a guest ID corresponding to the device ID allocated to the HDD device from the guest ID management table 22 b. Subsequently, the interruptdestination specifying unit 22 d stores the specified guest ID in the interrupt target register 22 a and notifies thehypervisor 26 of an external interrupt request for a notification of completion of the DMA. - The
control unit 25 includes aprocess control unit 25 a and thehypervisor 26 and a processing unit that controls an interrupt process using these units. For example, thecontrol unit 25 is an electronic circuit such as a CPU. Thecontrol unit 25 may include an internal memory or the like. - The
process control unit 25 a is a processing unit that executes processes other than the processes relevant to the guest OS. For example, theprocess control unit 25 a executes stopping activation of an OS mounted in theinformation processing apparatus 20 and stopping activation of thehypervisor 26. - The
hypervisor 26 includes an interrupt handler management table 26 a, aCPU allocating unit 26 b, an interrupthandler specifying unit 26 c, and an interrupt executingunit 26 d, and is a processing unit that processes an interrupt request notified from the interruptcontroller 22 using these units. Moreover, thehypervisor 26 transmits packets transmitted from respective guest OS's to a destination and outputs device access requests output from respective guest OS's to the corresponding devices. - The interrupt handler management table 26 a is a storage unit that stores information on a storage destination, in which an interrupt handler is stored, in association with each of multiple guest OS's.
FIG. 7 is an exemplary diagram illustrating an example of information stored in an interrupt handler management table. As illustrated inFIG. 7 , the interrupt handler management table 26 a stores “guest ID”, “interrupt vector”, “interrupt handler”, and “guest page table” in correlation. - The “guest ID” stored in the interrupt handler management table 26 a is an identifier for identifying guest OS's operate in the
virtual area 20 a, and the “interrupt vector” is an identifier for identifying the factors of interrupts. The “interrupt handler” is stored in a format of the physical address used by a guest OS, that is, in a format of the address of a virtual address space provided by thehypervisor 26, and represents a header address of a storage destination in which an interrupt handler is stored. The “guest page table” is a page table used for converting into a virtual space of a guest OS, and represents a header address of a physical address space held by the guest OS, that is, a header address of a virtual address space provided by thehypervisor 26. -
FIG. 7 illustrates a case in which when an external interrupt of which the interrupt vector is 0 occurs with respect to the guest OS (A) to which a guest ID of 0 is allocated, a physical address “Handler —0” of the guest OS (A) is converted into a virtual address using a guest page table PT0. As a result, the interrupt executingunit 26 d of thehypervisor 26 can execute an interrupt handler in an address space managed by the guest OS. Similarly,FIG. 7 also illustrates a case in which when an external interrupt of the interrupt vector of 1 occurs with respect to the guest OS (B) to which a guest ID of 1 is allocated, a physical address “Handler B” of the guest OS (B) is converted into a virtual address using a guest page table PT1. - Moreover, the interrupt handler management table 26 a can also store the header address of a TLB (translation look-aside buffer) held by a guest OS in correlation. By doing so, the
hypervisor 26 can specify the storage destination of an interrupt handler from a virtual address space of the guest OS at a higher speed. - The
CPU allocating unit 26 b is a processing unit that allocates the CPU to respective guest OS's in accordance with a predetermined scheduler. For example, theCPU allocating unit 26 b transfers the execution right of CPU from the guest OS (A) to the guest OS (B) in accordance with a schedule determined by an operator, a hypervisor, or the like. As a result, the guest OS (A) transitions to an execution standby state of not having the execution right, and the guest OS (B) transitions to an execution state of having the execution right. - The interrupt
handler specifying unit 26 c is a processing unit that specifies a storage destination of an interrupt handler corresponding to the guest OS specified by the interruptcontroller 22 from the interrupt handler management table 26 a. For example, the interrupthandler specifying unit 26 c receives an external interrupt request for reception of packets from the interruptcontroller 22. Subsequently, the interrupthandler specifying unit 26 c acquires a guest ID stored in the interrupt target register 22 a of the interruptcontroller 22. That is, the interrupthandler specifying unit 26 c acquires a destination of the external interrupt request for reception of packets. In this case, the interrupthandler specifying unit 26 c specifies a guest OS corresponding to the acquired guest ID. The correlation between the guest ID and the guest OS is stored in an internal memory of thecontrol unit 25 or a storage device (not illustrated) such as a memory. - Moreover, the interrupt
handler specifying unit 26 c acquires a CPU allocation state of theCPU allocating unit 26 b and determines whether the CPU is allocated to a guest OS serving as a destination of an external interrupt request for reception of packets. When the CPU is allocated, the interrupthandler specifying unit 26 c converts the external interrupt request into a virtual interrupt and outputs the converted virtual interrupt to a guest OS serving as the destination of the interrupt request. - On the other hand, when the CPU is not allocated, the interrupt
handler specifying unit 26 c specifies an interrupt vector corresponding to the external interrupt. For example, the interrupthandler specifying unit 26 c may specify the interrupt vector from the interrupt request and may hold a table storing the type of an interrupt request and the interrupt vector in correlation and specify the interrupt vector based on the table. Moreover, the interrupthandler specifying unit 26 c reads an interrupt handler and a guest page table corresponding to a combination of the guest ID acquired from the interruptcontroller 22 and the specified interrupt vector from the interrupt handler management table 26 a. After that, the interrupthandler specifying unit 26 c outputs the read interrupt handler and guest page table to the interrupt executingunit 26 d. - As an example, it is assumed that the interrupt
handler specifying unit 26 c has been notified of the external interrupt of which the interrupt vector is 0 from the interruptcontroller 22 and has acquired a guest ID of 0 from the interrupt target register 22 a. Moreover, when it is determined that the CPU is allocated to the guest OS (A) having a guest ID of 0, the interrupthandler specifying unit 26 c converts the notified external interrupt into a virtual interrupt and outputs the virtual interrupt to the guest OS (A). As a result, the guest OS (A) executes an interrupt process. - On the other hand, when it is determined that the CPU is not allocated to the guest OS (A) having a guest ID of 0, the interrupt
handler specifying unit 26 c acquires “Handler —0” and “PT0” corresponding to a combination of the guest ID of 0 and the interrupt vector of 0 from the interrupt handler management table 26 a. Moreover, the interrupthandler specifying unit 26 c outputs the physical address “Handler —0” of the interrupt handler and the page table “PT0” to the interrupt executingunit 26 d. - The interrupt executing
unit 26 d is a processing unit that reads and executes an interrupt handler from the storage destination specified by the interrupthandler specifying unit 26 c. For example, the interrupt executingunit 26 d acquires a physical address “Handler —0” and a page table “PT0” from the interrupthandler specifying unit 26 c. Moreover, the interrupt executingunit 26 d converts a physical address “Handler —0” of a physical address space managed by the guest OS (A) into a virtual address of a virtual address space managed by the guest OS (A) using the page table “PT0”. After that, the interrupt executingunit 26 d reads and executes the interrupt handler from the converted virtual address. Moreover, when execution of the interrupt handler is completed, the interrupt executingunit 26 d transmits “EOI (End of Interrupt)” which is a completion notification to the interruptcontroller 22 or an interrupt controller which has issued an interrupt. - Process Flow
- Next, the flow of processes executed by the
information processing apparatus 20 will be described usingFIGS. 8 to 10 . In this example, an example in which the request source of an interrupt request is an NIC device will be described usingFIG. 8 , an example in which the request source of an interrupt request is an HDD device will be described usingFIG. 9 , and an example in which the CPU is allocated to a destination of an interrupt request will be described usingFIG. 10 . - Example where NIC Device is Used
-
FIG. 8 is an exemplary diagram illustrating the processing sequence of the information processing apparatus according to the second embodiment by way of an NIC device. As illustrated inFIG. 8 , when a guest OS is created in thevirtual area 20 a by an operator or the like, or an NIC device used by the guest OS is added (S101 and S102), thehypervisor 26 executes S103. - That is, the
hypervisor 26 outputs a request to register an MAC address of an NIC device that is used by the guest OS or added to the interrupt controller 22 (S103 and S104). In this case, thehypervisor 26 also outputs a guest ID of the guest OS to the interruptcontroller 22. The guest ID may be designated by the operator and may be uniquely assigned by the hypervisor. - Moreover, the
storage control unit 22 c of the interruptcontroller 22 stores the MAC address of the NIC device and the guest ID notified from thehypervisor 26 in the guest ID management table 22 b in correlation (S105 and S106). - After that, when packets arrive at an NIC device included in the
communication interface 20 b, thecommunication interface 20 b outputs a packet arrival request to the interrupt controller 22 (S107 and S108). That is, thecommunication interface 20 b notifies the interruptcontroller 22 of an external interrupt. - Moreover, the interrupt
destination specifying unit 22 d of the interruptcontroller 22 specifies a guest ID corresponding to the MAC address of the NIC device at which packets have arrived from the guest ID management table 22 b (S109 to S111). The interruptdestination specifying unit 22 d may extract the MAC address of a destination stored in the header of the packets or the like and may extract the MAC address directly from the NIC device at which packets have arrived. For example, when a physical NIC device is shared by multiple guest OS's, the device ID may be extracted from the MAC address of the destination. Subsequently, the interruptdestination specifying unit 22 d stores the specified guest ID in the interrupt target register 22 a (S112 and S113). After that, the interruptdestination specifying unit 22 d sends a packet arrival request, that is, a physical interrupt request to the hypervisor 26 (S114 and S115). - On the other hand, in this case, the guest OS having the guest ID specified by the interrupt
destination specifying unit 22 d is excluded from CPU allocation (S116). That is, a destination guest OS of an interrupt request transitions from a state of having the execution right of CPU to a state of not having the execution right. - After that, upon receiving a physical interrupt request from the interrupt
controller 22, the interrupthandler specifying unit 26 c of thehypervisor 26 specifies a guest ID serving as a destination of an interrupt by referring to the interrupt target register 22 a (S117 and S118). - Subsequently, the interrupt
handler specifying unit 26 c checks an allocation state of theCPU allocating unit 26 b and detects that the CPU is not allocated to the guest OS having the specified guest ID (S119). - Then, the interrupt
handler specifying unit 26 c extracts an interrupt vector from a packet arrival request sent from the interruptcontroller 22 and executes S120. That is, the interrupthandler specifying unit 26 c specifies a header address of an interrupt handler and a page table in accordance with a combination of the interrupt vector and the guest ID. - After that, the interrupt executing
unit 26 d reads and executes the interrupt handler from the guest OS using the header address of the interrupt handler and the page table specified by the interrupthandler specifying unit 26 c (S121). When execution of the interrupt handler is finished, that is, when the external interrupt based on the packet arrival request is completed, the interrupt executingunit 26 d transmits the EOI to the interrupt controller (S122 and S123). - Example where HDD Device is Used
-
FIG. 9 is an exemplary diagram illustrating the processing sequence of the information processing apparatus according to the second embodiment by way of an HDD device. As illustrated inFIG. 9 , the guest OS transmits an access request to the HDD device to the hypervisor 26 (S201 and S202). Upon receiving the access request, thehypervisor 26 assigns a device ID to an HDD device serving as an access request destination and outputs the access request to the device ID to the interrupt controller together with the assigned device ID (S203 and S204). - Moreover, the
storage control unit 22 c of the interruptcontroller 22 specifies a guest ID of a guest OS serving as a request source from the access request and the like and executes S205. That is, thestorage control unit 22 c stores the specified guest ID and the device ID received along with the access request in the guest ID management table 22 b in correlation (S205 and S206). - After that, the interrupt
controller 22 transmits a DMA transfer request to the HDD (S207 and S208). When the DMA transfer to the HDD is completed, the HDD device transmits a DMA completion interrupt request to the interrupt controller 22 (S209 and S210). That is, the input/output interface 20 c notifies the interruptcontroller 22 of the external interrupt. - The processes of S211 to S223 executed thereafter are the same as those of S109 to S121 described in
FIG. 8 , and detailed description will not be provided. When execution of the interrupt handler is completed, that is, when the external interrupt based on the DMA completion interrupt request is completed, the interrupt executingunit 26 d transmits the EOI to the interrupt controller 22 (S224 and S225). - Interrupt process to guest OS having execution right
FIG. 10 is an exemplary diagram illustrating the processing sequence when a CPU is allocated to a guest serving as a destination of an interrupt request. The processes of S301 to S310 illustrated inFIG. 10 are the same as those of S201 to S210 described inFIG. 9 , and detailed description will not be provided. - Moreover, the interrupt
destination specifying unit 22 d of the interruptcontroller 22 specifies a guest ID corresponding to the device ID of the HDD device having transmitted the DMA transfer request from the guest ID management table 22 b (S311 to S313). Subsequently, the interruptdestination specifying unit 22 d stores the specified guest ID in the interrupt target register 22 a (S314 and S315). After that, the interruptdestination specifying unit 22 d sends the DMA transfer request, that is, a physical interrupt request to the hypervisor 26 (S316 and S317). - After that, upon receiving the physical interrupt request from the interrupt
controller 22, the interrupthandler specifying unit 26 c of thehypervisor 26 specifies a guest ID serving as a destination of the interrupt by referring to the interrupt target register 22 a (S318 and S319). - Subsequently, the interrupt
handler specifying unit 26 c checks an allocation state of theCPU allocating unit 26 b and detects that the CPU is allocated to the guest OS having the specified guest ID (S320). - Moreover, the interrupt
handler specifying unit 26 c converts the DMA transfer request into a virtual interrupt request (S321) and sends the converted virtual interrupt request to a guest OS having the specified guest ID (S322 and S323). After that, the guest OS having received the virtual interrupt request executes an interrupt process and transmits the EOI to the interrupt controller when the interrupt process is completed (S324 and S325). - As above, in the
information processing apparatus 20 according to the second embodiment, when multiple guest OS's are operating, thehypervisor 26 can determine which guest OS the interrupt process is directed to and perform a proxy process on the interrupt handler of the guest OS. Moreover, since theinformation processing apparatus 20 can finish the interrupt process without waiting until the CPU is allocated to the guest OS, theinformation processing apparatus 20 can process immediately a subsequent interrupt without delay. Moreover, since theinformation processing apparatus 20 directly invokes the interrupt handler of the guest OS without through the virtual interrupt, it is possible to efficiently execute an interrupt process to the guest OS. Moreover, by issuing an EOI by the interrupt handler, it is possible to process a subsequent interrupt without delay. - While the embodiments of the present invention have been described hereinabove, the present invention may be implemented in various other forms other than the above-described embodiments. The other embodiments will be described below.
- Protect Mode
- The information processing apparatus disclosed herein may further store address information, in which an operation mode of a virtual machine, for example, is stored, as information stored in the guest ID management table described in the second embodiment.
FIG. 11 is an exemplary diagram illustrating an example of a guest ID management table storing a protect mode. As illustrated inFIG. 11 , the guest ID management table stores “protect mode” in addition to “guest ID and device ID” described in the second embodiment and the like. The “protect mode” stored herein is information representing a storage destination of an operation mode of a guest OS and is the header address of a virtual address space managed by the guest OS, for example. The operation mode read from an address indicated by the protect mode is called a protected virtual address mode, for example. The protect mode is stored by the interruptcontroller 22 receiving the same from an operator or the like. As an example, the interruptcontroller 22 stores information which thehypervisor 26 receives from an operator at the timing of S102 ofFIG. 8 in the guest ID management table. - When the guest ID serving as the destination of an interrupt is specified, the interrupt
destination specifying unit 22 d of the interruptcontroller 22 also specifies the protect mode and registers the same in the interrupt target register 22 a and notifies thehypervisor 26 of the same. Moreover, when executing the interrupt handler, the interrupt executingunit 26 d of thehypervisor 26 reads the protect mode from the storage destination and executes the interrupt handler in the operation mode of respective guest OS's. Thus, since theinformation processing apparatus 20 can execute the interrupt handler in the operation mode of the respective guest OS's, it is possible to prevent destruction of a memory space or the like of other guest OS's. - Interrupt Type
- The information processing apparatus disclosed herein may determine whether the
hypervisor 26 performs an interrupt process as a proxy depending on the type of interrupts. For example, information on the storage destination of an interrupt handler executed with respect to a hardware interrupt is stored in the interrupt handler management table 26 a of thehypervisor 26 in association with each of the guest OS's. By doing so, a hardware interrupt can be executed preferentially to a software interrupt. - The hardware interrupt is an interrupt process such as an Ethernet (registered trademark) driver process, a SCSI (small computer system interface) host adapter driver process, or a serial driver process. The hardware interrupt is an interrupt process which requires execution of an interrupt to be completed as fast as possible when the interrupt occurs so that the execution time decreases. Moreover, the software interrupt is an interrupt process such as a TCP (transmission control protocol)/IP (internet protocol) protocol process, a SCSI protocol process, or a terminal control process. The software interrupt is an interrupt process which does not require fast completion of execution as compared to the hardware interrupt.
- The hypervisor of the information processing apparatus disclosed herein example performs execution in the context of a hardware interrupt handler, and only registration of a software interrupt is executed in the hardware interrupt handler, and the software interrupts are collectively executed later.
FIG. 12 is an exemplary diagram illustrating changing of an execution method in accordance with the type of interrupts. - As illustrated in
FIG. 12 , the hypervisor holds a hardware interrupt handler executing a hardware interrupt, and the hardware interrupt handler holds an interrupt handler of each hardware interrupt as a fast interrupt handler. When a hardware interrupt occurs, the hypervisor activates a hardware interrupt handler to invoke the fast interrupt handler and executes an interrupt process as a proxy for the guest OS. After that, when execution is completed, the fast interrupt handler issues the EOI to an interrupt controller. - Moreover, when a software interrupt occurs, the hypervisor activates a hardware interrupt handler to convert the software interrupt into a virtual interrupt and notifies the kernel of the guest OS of the virtual interrupt. Upon receiving a virtual interrupt, the guest OS executes a slow interrupt handler. The slow interrupt handler is an interrupt handler that executes a software interrupt, for example. After that, when the guest OS acquires the execution right of a processor in accordance with a scheduler or the like, the slow interrupt handler of the guest OS executes a software interrupt handler to execute an interrupt process. When the process is completed, the software interrupt handler issues the EOI to the interrupt controller.
- In the above example, although an example in which a hardware interrupt and a software interrupt occur as individual interrupts has been described, a hardware interrupt may be first executed with respect to a single external interrupt to issue the EOI, and then, the external interrupt may be collectively executed as a software interrupt. For example, when packets arrive at an NIC device, the interrupt controller generates an interrupt request and activates a hardware interrupt handler of the hypervisor. Since the external interrupt corresponds to a slow interrupt, the hardware interrupt handler of the hypervisor converts the external interrupt into a virtual interrupt and notifies the slow interrupt handler held by the kernel of the guest OS of the virtual interrupt. On the other hand, the hardware interrupt handler of the hypervisor invokes a fast interrupt handler of a registered guest and issues the EOI when the process of the fast interrupt handler is finished. After that, when the guest OS acquires the execution right of a processor in accordance with a scheduler or the like, the slow interrupt handler of the guest OS executes the software interrupt handler to execute an interrupt process.
- Executing Method
- In the second embodiment, an example in which the interrupt handler is read and executed when the execution right of a processor is not allocated to the guest OS, and the external interrupt is converted into a virtual interrupt request, and the virtual interrupt request is output to the guest OS when the execution right of a processor is allocated to the guest OS has been described. However, a method of executing interrupts in the information processing apparatus disclosed herein is not limited to this. For example, even when the execution right of a processor is allocated to an interrupt target guest OS, the hypervisor of the information processing apparatus may execute the interrupt handler as a proxy for the guest OS.
- System
- Among the processes described in the embodiments, all or part of the processes described to be automatically performed may be manually performed. Alternatively, all or part of the processes described to be manually performed may be automatically performed with publicly known methods. The processing procedures, control procedures, and specific names described in the above document and the drawings, for example, information including various data and parameters, may be arbitrarily modified unless otherwise specified.
- The constituent elements of the devices depicted in the drawings are functionally conceptual, and need not necessarily to be physically configured as depicted in the drawings. That is, specific forms of distribution and integration of the devices are not limited to those illustrated in the drawings. For example, all or part of the devices may be functionally or physically distributed or integrated in arbitrary units according to various loads and the state of use. Moreover, all or an arbitrary part of the processing functions performed in each device may be realized by a CPU and a program analyzed and executed by the CPU, or may be realized as hardware by wired logic.
- Program
- Various processes described in the embodiments may be achieved by causing a computer system such as a personal computer or a workstation to execute a program prepared in advance. In the following description, an example of a computer system executing a program having the same function as the above-described embodiments will be described.
-
FIG. 13 is an exemplary diagram illustrating an example of a hardware configuration of a computer executing an interrupt control program. As illustrated inFIG. 13 , acomputer 100 includes aCPU 102, aninput device 103, anoutput device 104, acommunication interface 105, amedium reading device 106, an HDD (hard disk drive) 107, and a RAM (random access memory) 108. Moreover, the respective units illustrated inFIG. 13 are connected to each other by abus 101. - The
input device 103 is a mouse and a keyboard, theoutput device 104 is a display or the like, and thecommunication interface 105 is an interface such as an NIC. TheHDD 107 stores information of the tables illustrated inFIG. 5 together with an interruptcontrol program 107 a. Although theHDD 107 is illustrated as an example of a recording medium, various programs may be stored in another computer readable recording medium such as a ROM (read only memory), a RAM (random access memory), or a CD-ROM and be read into the computer. A storage medium may be disposed in a remote site, and the computer may access the storage medium to acquire and use the program. Moreover, the acquired program may be stored in a recording medium of the computer itself and used. - The
CPU 102 reads the interruptcontrol program 107 a and deploys the same into theRAM 108 to thereby operate an interruptcontrol processor 108 a that executes the respective functions described inFIG. 5 and the like. That is, the interruptcontrol processor 108 a executes the same functions as thestorage control unit 22 c, the interruptdestination specifying unit 22 d, the interrupthandler specifying unit 26 c, and the interrupt executingunit 26 d described inFIG. 5 . As above, thecomputer 100 reads and executes the program and operates as an information processing apparatus executing an interrupt control method. - For example, the
computer 100 may implement the same functions as the above-described embodiments by reading the interruptcontrol program 107 a from a recording medium using themedium reading device 106 and executing the read interruptcontrol program 107 a. The program mentioned in the other embodiment is not limited to one which is executed by thecomputer 100. For example, the present invention can be similarly applied to when another computer or server executes the program and when the computer and the server execute the program in cooperation. - According to the embodiments, it is possible to execute an interrupt process efficiently.
- All examples and conditional language recited herein are intended for pedagogical purposes to aid the reader in understanding the invention and the concepts contributed by the inventor to furthering the art, and are to be construed as being without limitation to such specifically recited examples and conditions, nor does the organization of such examples in the specification relate to a showing of the superiority and inferiority of the invention. Although the embodiments of the present invention have been described in detail, it should be understood that the various changes, substitutions, and alterations could be made hereto without departing from the spirit and scope of the invention.
Claims (8)
1. An information processing apparatus comprising:
an interrupt control unit that specifies a virtual machine serving as a destination of an interrupt request; and
a virtualization control unit that operates multiple virtual machines, the virtualization control unit including
a specifying unit that specifies a storage destination of an interrupt program corresponding to the virtual machine specified by the interrupt control unit based on information stored in a storage unit which stores information on a storage destination of an interrupt program in association with each of the multiple virtual machines, and
an execution control unit that reads and executes the interrupt program stored in the storage destination specified by the specifying unit.
2. The information processing apparatus according to claim 1 , wherein
the interrupt control unit stores, when the virtualization control unit operates a virtual machine, a machine identifier for identifying the virtual machine operated and a device identifier for identifying an external device used by the virtual machine operated in association with each other in an identifier storage unit, and
when an interrupt request occurs, a machine identifier corresponding to a device identifier of a device that issues the interrupt request is specified from the identifier storage unit.
3. The information processing apparatus according to claim 2 , wherein
the identifier storage unit further stores address information on an address in which an operation mode is stored in association with each of the multiple virtual machines,
the specifying unit further specifies address information corresponding to the virtual machine specified by the interrupt control unit, and
the execution control unit reads an operation mode based on the address information specified by the specifying unit, and executes the interrupt program in the read operation mode.
4. The information processing apparatus according to claim 1 , wherein
(i) when an execution right of a processor is not allocated to the virtual machine specified by the interrupt control unit, the execution control unit reads and executes the interrupt program, and (ii) when the execution right of a processor is allocated to the virtual machine specified by the interrupt control unit, the execution control unit converts the interrupt request into a virtual interrupt request and outputs the virtual interrupt request to the virtual machine serving as the destination of the interrupt request.
5. The information processing apparatus according to claim 1 , wherein
the storage unit stores information on a storage destination of an interrupt program executed with respect to a hardware interrupt in association with each of the multiple virtual machines, and
(i) the execution control unit, when the specifying unit specifies the storage destination of the interrupt program for a hardware interrupt, reads and executes the interrupt program stored in the storage destination specified, and (ii) the execution control unit, when the specifying unit does not specify the storage destination of an interrupt program for the interrupt request, converts the interrupt request into a virtual interrupt and outputs the virtual interrupt to the virtual machine serving as the destination of the interrupt request.
6. A method of controlling an interrupt, performed by an information processing apparatus, the method comprising:
specifying a storage destination of an interrupt program corresponding to a virtual machine specified by an interrupt control unit based on information stored in a storage unit which stores information on a storage destination of an interrupt program in association with each of multiple virtual machines, the interrupt control unit specifying a virtual machine serving as a destination of an interrupt request; and
reading and executing the interrupt program stored in the storage destination specified.
7. A computer readable storage medium having stored therein an interrupt control program for controlling an interrupt, the interrupt control program causing a computer to execute a process comprising:
specifying a storage destination of an interrupt program corresponding to a virtual machine specified by an interrupt control unit based on information stored in a storage unit which stores information on a storage destination of an interrupt program in association with each of multiple virtual machines, the interrupt control unit specifying a virtual machine serving as a destination of an interrupt request; and
reading and executing the interrupt program stored in the storage destination specified.
8. An information processing apparatus comprising:
a processor coupled to a memory,
wherein the processor is programmed to control an interrupt by:
specifying a virtual machine serving as a destination of an interrupt request;
specifying a storage destination of an interrupt program corresponding to the virtual machine specified in the specifying, by referring to the memory that stores information on a storage destination of an interrupt program in association with each of multiple virtual machines; and
reading and executing the interrupt program stored in the storage destination specified.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011-177667 | 2011-08-15 | ||
JP2011177667A JP5737050B2 (en) | 2011-08-15 | 2011-08-15 | Information processing apparatus, interrupt control method, and interrupt control program |
Publications (1)
Publication Number | Publication Date |
---|---|
US20130047157A1 true US20130047157A1 (en) | 2013-02-21 |
Family
ID=46690362
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/477,113 Abandoned US20130047157A1 (en) | 2011-08-15 | 2012-05-22 | Information processing apparatus and interrupt control method |
Country Status (3)
Country | Link |
---|---|
US (1) | US20130047157A1 (en) |
EP (1) | EP2560096A1 (en) |
JP (1) | JP5737050B2 (en) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140229935A1 (en) * | 2013-02-11 | 2014-08-14 | Nvidia Corporation | Virtual interrupt delivery from a graphics processing unit (gpu) of a computing system without hardware support therefor |
US20140229648A1 (en) * | 2013-02-13 | 2014-08-14 | Red Hat Israel, Ltd | Storing Interrupt Location for Fast Interrupt Register Access In Hypervisors |
US20150020071A1 (en) * | 2013-07-12 | 2015-01-15 | Bluedata Software, Inc. | Accelerated data operations in virtual environments |
US9268593B2 (en) | 2012-02-03 | 2016-02-23 | Fujitsu Limited | Computer-readable recording medium, virtual machine control method and information processing apparatus |
US9329880B2 (en) | 2013-02-13 | 2016-05-03 | Red Hat Israel, Ltd. | Counter for fast interrupt register access in hypervisors |
CN107783913A (en) * | 2016-08-31 | 2018-03-09 | 华为技术有限公司 | A kind of resource access method and computer applied to computer |
US9921891B1 (en) * | 2015-03-31 | 2018-03-20 | Integrated Device Technology, Inc. | Low latency interconnect integrated event handling |
US20180173558A1 (en) * | 2015-07-23 | 2018-06-21 | At&T Intellectual Property I, L.P. | Data-Driven Feedback Control System for Real-Time Application Support in Virtualized Networks |
US20190196865A1 (en) * | 2017-12-25 | 2019-06-27 | Renesas Electronics Corporation | Semiconductor device |
US10445009B2 (en) * | 2017-06-30 | 2019-10-15 | Intel Corporation | Systems and methods of controlling memory footprint |
US11042494B1 (en) * | 2018-06-21 | 2021-06-22 | Amazon Technologies, Inc. | Direct injection of a virtual interrupt |
US20220100574A1 (en) * | 2019-06-11 | 2022-03-31 | Denso Corporation | Vehicular control device, vehicular display system, and vehicular display control method |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9330035B2 (en) * | 2013-05-23 | 2016-05-03 | Arm Limited | Method and apparatus for interrupt handling |
US9652270B2 (en) * | 2014-03-21 | 2017-05-16 | Intel Corporation | Apparatus and method for virtualized computing |
US10127068B2 (en) | 2016-06-30 | 2018-11-13 | Amazon Technologies, Inc. | Performance variability reduction using an opportunistic hypervisor |
US10318311B2 (en) * | 2016-06-30 | 2019-06-11 | Amazon Technologies, Inc. | Memory allocation techniques at partially-offloaded virtualization managers |
JP6838233B2 (en) * | 2018-06-14 | 2021-03-03 | 日立Astemo株式会社 | Vehicle control device, interrupt information management method and interrupt information management program |
TWI759677B (en) | 2019-02-14 | 2022-04-01 | 美商萬國商業機器公司 | Method, computer system and computer program product for directed interrupt virtualization with fallback |
TWI764082B (en) * | 2019-02-14 | 2022-05-11 | 美商萬國商業機器公司 | Method, computer system and computer program product for interrupt signaling for directed interrupt virtualization |
CA3130164A1 (en) | 2019-02-14 | 2020-08-20 | International Business Machines Corporation | Directed interrupt for multilevel virtualization |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5530860A (en) * | 1992-05-15 | 1996-06-25 | Fujitsu Limited | Virtual computer control system effectively using a CPU with predetermined assignment ratios of resources based on a first and second priority mechanism |
US20050080970A1 (en) * | 2003-09-30 | 2005-04-14 | Stalinselvaraj Jeyasingh | Chipset support for managing hardware interrupts in a virtual machine system |
US20090183180A1 (en) * | 2001-06-08 | 2009-07-16 | Vmware, Inc. | High-performance virtual machine networking |
US7665088B1 (en) * | 1998-05-15 | 2010-02-16 | Vmware, Inc. | Context-switching to and from a host OS in a virtualized computer system |
US20110107007A1 (en) * | 2009-10-29 | 2011-05-05 | Red Hat, Inc. | Asynchronous page faults for virtual machines |
US20110213942A1 (en) * | 2006-09-28 | 2011-09-01 | Zimmer Vincent J | Parallel memory migration |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001229038A (en) * | 2000-02-17 | 2001-08-24 | Hitachi Ltd | Multi-operating computer system |
JP2006155272A (en) * | 2004-11-30 | 2006-06-15 | Hitachi Ltd | Control method and program for virtual computer |
-
2011
- 2011-08-15 JP JP2011177667A patent/JP5737050B2/en not_active Expired - Fee Related
-
2012
- 2012-05-22 US US13/477,113 patent/US20130047157A1/en not_active Abandoned
- 2012-06-15 EP EP12172181A patent/EP2560096A1/en not_active Withdrawn
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5530860A (en) * | 1992-05-15 | 1996-06-25 | Fujitsu Limited | Virtual computer control system effectively using a CPU with predetermined assignment ratios of resources based on a first and second priority mechanism |
US7665088B1 (en) * | 1998-05-15 | 2010-02-16 | Vmware, Inc. | Context-switching to and from a host OS in a virtualized computer system |
US20090183180A1 (en) * | 2001-06-08 | 2009-07-16 | Vmware, Inc. | High-performance virtual machine networking |
US20050080970A1 (en) * | 2003-09-30 | 2005-04-14 | Stalinselvaraj Jeyasingh | Chipset support for managing hardware interrupts in a virtual machine system |
US20110213942A1 (en) * | 2006-09-28 | 2011-09-01 | Zimmer Vincent J | Parallel memory migration |
US20110107007A1 (en) * | 2009-10-29 | 2011-05-05 | Red Hat, Inc. | Asynchronous page faults for virtual machines |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9268593B2 (en) | 2012-02-03 | 2016-02-23 | Fujitsu Limited | Computer-readable recording medium, virtual machine control method and information processing apparatus |
US9158569B2 (en) * | 2013-02-11 | 2015-10-13 | Nvidia Corporation | Virtual interrupt delivery from a graphics processing unit (GPU) of a computing system without hardware support therefor |
US20140229935A1 (en) * | 2013-02-11 | 2014-08-14 | Nvidia Corporation | Virtual interrupt delivery from a graphics processing unit (gpu) of a computing system without hardware support therefor |
US10331589B2 (en) * | 2013-02-13 | 2019-06-25 | Red Hat Israel, Ltd. | Storing interrupt location for fast interrupt register access in hypervisors |
US20140229648A1 (en) * | 2013-02-13 | 2014-08-14 | Red Hat Israel, Ltd | Storing Interrupt Location for Fast Interrupt Register Access In Hypervisors |
US9329880B2 (en) | 2013-02-13 | 2016-05-03 | Red Hat Israel, Ltd. | Counter for fast interrupt register access in hypervisors |
US10740148B2 (en) * | 2013-07-12 | 2020-08-11 | Hewlett Packard Enterprise Development Lp | Accelerated data operations in virtual environments |
US20150020071A1 (en) * | 2013-07-12 | 2015-01-15 | Bluedata Software, Inc. | Accelerated data operations in virtual environments |
US10055254B2 (en) | 2013-07-12 | 2018-08-21 | Bluedata Software, Inc. | Accelerated data operations in virtual environments |
US9921891B1 (en) * | 2015-03-31 | 2018-03-20 | Integrated Device Technology, Inc. | Low latency interconnect integrated event handling |
US10642640B2 (en) * | 2015-07-23 | 2020-05-05 | At&T Intellectual Property I, L.P. | Data-driven feedback control system for real-time application support in virtualized networks |
US20180173558A1 (en) * | 2015-07-23 | 2018-06-21 | At&T Intellectual Property I, L.P. | Data-Driven Feedback Control System for Real-Time Application Support in Virtualized Networks |
EP3467663A4 (en) * | 2016-08-31 | 2019-07-24 | Huawei Technologies Co., Ltd. | Resource access method applied to computer, and computer |
CN107783913A (en) * | 2016-08-31 | 2018-03-09 | 华为技术有限公司 | A kind of resource access method and computer applied to computer |
US10970104B2 (en) | 2016-08-31 | 2021-04-06 | Huawei Technologies Co., Ltd. | Resource access method applied to computer and computer |
US10445009B2 (en) * | 2017-06-30 | 2019-10-15 | Intel Corporation | Systems and methods of controlling memory footprint |
US20190196865A1 (en) * | 2017-12-25 | 2019-06-27 | Renesas Electronics Corporation | Semiconductor device |
CN109960567A (en) * | 2017-12-25 | 2019-07-02 | 瑞萨电子株式会社 | Semiconductor equipment |
EP3502887A3 (en) * | 2017-12-25 | 2019-08-28 | Renesas Electronics Corporation | Interrupt handling for multiple virtual machines |
US10936357B2 (en) * | 2017-12-25 | 2021-03-02 | Renesas Electronics Corporation | Semiconductor device |
US11042494B1 (en) * | 2018-06-21 | 2021-06-22 | Amazon Technologies, Inc. | Direct injection of a virtual interrupt |
US11809349B1 (en) * | 2018-06-21 | 2023-11-07 | Amazon Technologies, Inc. | Direct injection of a virtual interrupt |
US20220100574A1 (en) * | 2019-06-11 | 2022-03-31 | Denso Corporation | Vehicular control device, vehicular display system, and vehicular display control method |
Also Published As
Publication number | Publication date |
---|---|
JP5737050B2 (en) | 2015-06-17 |
JP2013041409A (en) | 2013-02-28 |
EP2560096A1 (en) | 2013-02-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20130047157A1 (en) | Information processing apparatus and interrupt control method | |
US10248539B2 (en) | Managing software performance tests based on a distributed virtual machine system | |
JP5644150B2 (en) | Service providing system, virtual machine server, service providing method, and service providing program | |
US9256464B2 (en) | Method and apparatus to replicate stateful virtual machines between clouds | |
US8914458B2 (en) | Look-ahead handling of page faults in I/O operations | |
US8255475B2 (en) | Network interface device with memory management capabilities | |
EP3343364B1 (en) | Accelerator virtualization method and apparatus, and centralized resource manager | |
US8595526B2 (en) | System and method for power reduction by sequestering at least one device or partition in a platform from operating system access | |
US9354952B2 (en) | Application-driven shared device queue polling | |
US20110145471A1 (en) | Method for efficient guest operating system (os) migration over a network | |
US20160323427A1 (en) | A dual-machine hot standby disaster tolerance system and method for network services in virtualilzed environment | |
EP4160424A2 (en) | Zero-copy processing | |
US7926067B2 (en) | Method and system for protocol offload in paravirtualized systems | |
US20140089451A1 (en) | Application-assisted handling of page faults in I/O operations | |
US20130247056A1 (en) | Virtual machine control method and virtual machine | |
US9009702B2 (en) | Application-driven shared device queue polling in a virtualized computing environment | |
EP1770520A2 (en) | Operating cell processors over a network | |
US9268593B2 (en) | Computer-readable recording medium, virtual machine control method and information processing apparatus | |
JP2016513846A (en) | Memory sharing over the network | |
JP5669851B2 (en) | Apparatus, method, and computer program for efficient communication between partitions in a logically partitioned system | |
WO2022143714A1 (en) | Server system, and virtual machine creation method and apparatus | |
US9612877B1 (en) | High performance computing in a virtualized environment | |
Guay et al. | Early experiences with live migration of SR-IOV enabled InfiniBand | |
JP2015197802A (en) | Information processing device, information processing method and program | |
US10901773B2 (en) | Sharing devices between virtual machines in view of power state information |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: FUJITSU LIMITED, JAPAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SUZUKI, KAZUHIRO;REEL/FRAME:028245/0159 Effective date: 20120508 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |