WO2016075813A1 - 計算機システム、及びその制御方法 - Google Patents

計算機システム、及びその制御方法 Download PDF

Info

Publication number
WO2016075813A1
WO2016075813A1 PCT/JP2014/080193 JP2014080193W WO2016075813A1 WO 2016075813 A1 WO2016075813 A1 WO 2016075813A1 JP 2014080193 W JP2014080193 W JP 2014080193W WO 2016075813 A1 WO2016075813 A1 WO 2016075813A1
Authority
WO
WIPO (PCT)
Prior art keywords
cpus
cpu
pci devices
pci
pci device
Prior art date
Application number
PCT/JP2014/080193
Other languages
English (en)
French (fr)
Inventor
優志 神谷
康央 笹島
哲生 平光
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2014/080193 priority Critical patent/WO2016075813A1/ja
Publication of WO2016075813A1 publication Critical patent/WO2016075813A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus

Definitions

  • the present invention relates to a computer system and a control method thereof, for example, a technique for managing a PCI device.
  • Expansion devices that support the PCI-Express standard are supported by almost all current devices, from high-density servers to tower-type inexpensive server devices.
  • maintenance replacement accompanied by a system down generally occurs.
  • the PCI device connected to the CPU is restarted by the other CPU. It is impossible to continue using the system without accompanying the process, and the process of shutting down the OS, replacing parts, and starting up the OS is always performed, and it takes time to continue using the PCI device.
  • Patent Document 1 when a failure occurs in a certain device connected to the bus, a dedicated reset circuit is provided, and other devices are temporarily reset in a failure mode. The other device is restarted. By doing so, it is possible to electrically disconnect the device in which the failure has occurred and realize continuous operation of the device.
  • Patent Document 1 a dedicated operation mode (failure mode) must be set in advance for each device or server and operated in the dedicated operation mode when a failure occurs. In other words, a dedicated reset circuit must be provided for each device. Therefore, the technique of Patent Document 1 has a problem that the cost of the system becomes excessive.
  • the present invention has been made in view of such a situation, and provides a technique for suppressing downtime from the occurrence of a system failure to recovery without providing a special operation mode for the device.
  • a computer system sets a plurality of PCI devices, a plurality of CPUs that execute at least an OS and drivers of the plurality of PCI devices, and interrupt vectors of the plurality of PCI devices. And at least one memory providing a virtual memory area.
  • Each of the plurality of CPUs manages the correspondence between the plurality of PCI devices and the plurality of CPUs, and interrupt vectors assigned to the plurality of PCI devices.
  • all interrupt vectors of a plurality of PCI devices are set in a memory for each of a plurality of CPUs.
  • FIG. 10 is a sequence diagram for explaining interrupt vector allocation processing at the time of OS startup. It is a figure for demonstrating allocation of the interrupt vector to a PCI device by a prior art. It is a figure for demonstrating allocation of the interrupt vector to a PCI device (redundant structure with a standby system) by embodiment of this invention. It is a figure which shows the state of the resource allocation to a PCI device when CPU1 fails (abnormal system). It is a figure for demonstrating the flow of data when no abnormality has occurred in the system. It is a figure for demonstrating the flow of data when abnormality generate
  • the present invention relates to a technique for realizing continuous operation of a PCI device by switching the path of the PCI device connected to the CPU when a failure occurs in the CPU. For this reason, as described above, the present invention primarily provides a technique for suppressing downtime between the occurrence of a system failure and recovery without providing a special operation mode for the device.
  • the present invention is secondarily a computer system having a plurality of CPU sockets among systems that are generally configured with a SMP (Symmetric-Mutli-Processing) configuration and sharing a physical memory among a plurality of CPU cores. In this case, when one CPU fails, the PCI device connected to the CPU is dynamically assigned to another CPU without causing a system down.
  • SMP Symmetric-Mutli-Processing
  • the embodiment of the present invention may be implemented by software running on a general-purpose computer, or may be implemented by dedicated hardware or a combination of software and hardware.
  • FIG. 1 is a diagram showing an overall configuration of a computer system according to an embodiment of the present invention.
  • CPUs there are a plurality of CPUs (in FIG. 1, only two of CPU1_10 and CPU2_11 are shown for convenience of explanation, but the number is not limited to two), and the bus 102 or 103 corresponds to each CPU.
  • SVP Service Pro
  • CPU1_10 and CPU2_11 both function as normal multiprocessors during normal operation and do not enter a standby state. Therefore, in the computer system 1, both CPUs are used during normal operation.
  • the bridge chip 12 controls an input / output interface with the outside such as a keyboard, a mouse, and a display device.
  • the operations of the PCI device 1_20 and the PCI device 2_21 are controlled by the CPU 1_10.
  • the operations of the PCI device 3_22 and the PCI device 4_23 are controlled by the CPU 2_11. Therefore, it can be said that the PCI device 1_20 and the PCI device 2_21 are dedicated devices for the CPU 1_10, and the PCI device 3_22 and the PCI device 4_23 are dedicated devices for the CPU 2_11.
  • the embodiment of the present invention assumes a system employing a general SMT (Simultaneous Multi-Thread), but the idea of the present invention is not necessarily limited thereto.
  • an external extension function such as an input / output device or USB sets an interrupt vector in one CPU. Therefore, in this embodiment, an interrupt vector is generally assigned to the CPU 1_10. However, like the PCI device, the extended function is also connected to the CPU 2_11 in order to provide redundancy.
  • the bridge chip 12 is a small microchip and can control each device by itself. Therefore, the bridge chip 12 can control itself to use the CPU 2_11 when the CPU 1_10 fails.
  • the OS is read from the storage and HDD into the memory modules 100 and 101, and executed by each CPU.
  • the driver of each PCI device is also read from the memory modules 100 and 101 and executed by each CPU, and each PCI device is controlled by the CPU in charge.
  • FIG. 2 is a diagram for explaining a sequence of processing on the PCI driver side and processing on the OS side executed to provide redundancy to the PCI device.
  • the resources used during normal operation as the active system and the resources used when a failure occurs as the standby system are separated, and the PCI driver and the OS individually manage them.
  • each sequence will be described with the OS or the PCI device driver as the operation subject.
  • the OS and the driver are executed by the CPU 1_10 and the CPU 2_11, the CPU may be regarded as the operation subject.
  • the OS executed by the CPU 1_10 and the CPU 2_11 (hereinafter simply referred to as “CPU” in the description of FIG. 2) is a PCI link speed to the PCI driver executed by the CPU during the initialization of the OS. Notify information.
  • the PCI link speed to be notified is, for example, 1 ⁇ , 2 ⁇ , 4 ⁇ , 8 ⁇ , 16 ⁇ , 32 ⁇ ,.
  • (Ii) Sequence 202 The driver that has received the PCI link speed information checks and determines the link speed necessary for normal operation of each PCI device based on the link speed notified by the OS. Then, the driver notifies the OS of the determined link speed.
  • (Iii) Sequence 203 The OS receives a link speed notification from the driver, and notifies the driver of resources (CPU resource amount: the number of interrupt vectors that can be used by the PCI device) that can be used according to the link speed.
  • resources CPU resource amount: the number of interrupt vectors that can be used by the PCI device
  • (Iv) Sequence 204 The driver confirms with the OS whether the resources required by each PCI device can be secured for the OS. More specifically, the driver requests the OS to allocate an interrupt vector according to the PCI device specification (link speed determined in the sequence 202).
  • resources to be secured for each device are determined in advance, and it is common to control the number of resources secured by a driver. Therefore, if the resource is smaller than the capacity required for normal operation, there are some drivers that notify the OS that the device cannot be used. Some drivers try to operate normally. (Depending on the driver implementation) Therefore, the processing when sufficient resources cannot be secured depends on the driver implementation and is different for each.
  • the driver checks whether resources can be secured by the number of original resources required by the PCI device for the OS operated by the active CPU 1_10. Note that the processing of the sequence is processing that occurs regardless of the redundancy of the PCI device, and is not processing unique to the present invention. In addition, when a resource necessary for the active CPU 1_10 to operate normally cannot be secured, the error handling is controlled by the device driver as to how the PCI device is handled.
  • the vector assignment request in this sequence is for assigning the interrupt vector of the active system (CPU1_10), and the standby system is set after the vector setting of the active system is completed.
  • (V) Sequence 205 The OS notifies the driver of a memory area (virtual memory area) to which the requested number of vectors can be allocated.
  • (Vi) Sequence 206 The driver receives notification of the vector allocatable area from the OS, allocates resources for the active system for the target PCI device, and notifies the OS of information on the memory area.
  • (Viii) Sequence 208 When the driver can secure a resource for normal use of the target PCI device, the driver inquires of the OS again whether the multiple of the resource can be secured. That is, the OS is inquired whether the number of interrupt vectors allocated for the active system can be secured for the standby system.
  • (Ix) Sequence 209 In response to a request from the driver, the OS confirms a vector assignable area (virtual memory area) and notifies the driver of the available area.
  • (X) Sequence 210 Based on the vector allocatable area information notified from the OS, the driver determines whether the number of interrupt vectors equal to the number of interrupt vectors assigned to the active PCI device can be set in the standby PCI device. If the setting is possible (Yes in sequence 210), the process proceeds to sequence 211. If the setting is impossible (No in sequence 210), the process proceeds to sequence 212.
  • (Xi) Sequence 211 The OS sets an interrupt vector for the standby PCI device, and notifies the driver of the vector number used for the interrupt as the standby PCI device.
  • the PCI device cannot be used normally. For this reason, if the resources allocated to the active system can be secured but the resources allocated to the standby system are insufficient, it is necessary to review the vector allocation method.
  • sequence 202 the driver determines a different link speed (e.g., 4x) that is the link speed required to operate each PCI device, which is slower than the speed considered so far (e.g., 8x). Then, the driver notifies the OS of the determined link speed. Thereafter, as described above, the processes of sequences 203 to 212 are repeated until the same number of interrupt vectors can be set in both the active system and the standby system.
  • a different link speed e.g., 4x
  • the same number of interrupt vectors are allocated to the working and standby PCI devices.
  • the number of interrupt vectors assigned to each PCI device is half of the number of interrupt vectors originally assigned (by the conventional method).
  • the present inventor has found a technical value regarding a technology capable of continuing the use of the device even with a normal half of the resource.
  • the PCI device It is necessary to verify whether the function can be sufficiently satisfied.
  • the embodiment of the present invention is based on the same number of vector interrupts for the active system and the standby system. This is because the mechanism is the simplest, and the development cost and the cost for mounting the mechanism are taken into consideration in mounting the control mechanism. However, it is not always necessary to use the same number of vector interrupts in the active system and the standby system.
  • an expansion PCI card for supporting a legacy device such as a SCSI card for connecting a SCSI device or a PCI card for serial input / output, is representative.
  • a legacy device such as a SCSI card for connecting a SCSI device or a PCI card for serial input / output
  • the bandwidth is excessive and the number of interrupts to be raised by the device is very small, but an extra interrupt vector is secured.
  • the number of vectors assigned by the setting on the OS is reduced in response to a driver interrupt vector securing request so that a small number of interrupt vectors are assigned to the active system and the standby system in advance, and resources are allocated to other PCI devices. It is possible to devise such a way as to make room for the purpose.
  • the user should consider the user by, for example, outputting it to the SVP 104 log so as not to use this function.
  • the PCI device redundancy function is used (this embodiment)
  • the user is alerted using SVP or the like that the normal operation cannot be performed due to insufficient resources. For this reason, the user knows that the PCI device itself cannot be activated when the resource is insufficient, and that the redundant configuration of the PCI device cannot be built when the PCI card is to be added.
  • the user can be aware of the restrictions before entering into the actual operation of the system.
  • FIG. 3 is a diagram illustrating a state after the driver determines which interrupt vector number is to be used for the PCI device according to the prior art and assigns the interrupt vector number.
  • the PCI device 1_20 is a device that originally requires four interrupt vectors. Therefore, normally four interrupt vectors are set.
  • virtual memory addresses 0x0000 to 0x0003 are assigned to the PCI device 1_20 and virtual memory addresses 0x0004 to 0x0007 are assigned to the CPU 1_10 for the PCI device 2_21.
  • the virtual memory addresses for the PCI device 3 and the PCI device 4 are not assigned to the CPU 1_10.
  • virtual memory addresses 0x0008 to 0x000B are assigned to the PCI device 3_22
  • virtual memory addresses 0x000C to 0x000F are assigned to the CPU 2_11 for the PCI device 4_23.
  • each PCI device corresponds to one CPU on a one-to-one basis, and there is no redundancy when the CPU fails.
  • FIG. 4 is a diagram illustrating a state after the driver determines and assigns which interrupt vector number to use for the PCI device according to the embodiment of the present invention.
  • the CPU 2_11 controls the PCI device 1_20 after halving the number of resources used by the CPU 1_10 for the PCI device 1_20 so that continuous operation can be performed even when the system apparatus fails. Assign interrupt vectors so that you can.
  • the CPU 1_10 assigns virtual memory addresses 0x0000 to 0x0001 for the PCI device 1_20, virtual memory addresses 0x0003 to 0004 for the PCI device 2_21, virtual memory addresses 0x0008 and 0x0009 for the PCI device 3_22, and the PCI device 4_23.
  • Virtual memory addresses 0x000C and 0x000d are allocated for this purpose.
  • the CPU 1_10 does not access the PCI device 3_22 and the PCI device 4_23 under the management of the CPU 2_11 side.
  • the CPU 2_11 controls 0x0002 to 0x0003 for controlling the PCI device 1_20, 0x0006 to 0x0007 for controlling the PCI device 2_21, 0x000A to 0x000B for controlling the PCI device 3_22, and the PCI device 4_23. Therefore, 0x000E to 0x000F are secured respectively. Of these, only the PCI device 3_22 and the PCI device 4_23 are controlled in the normal operating state.
  • the interrupt vector is for generating an interrupt to the CPU when the PCI device communicates with the CPU, securing CPU resources exclusively for the PCI device that generated the interrupt, and performing data communication. For this reason, in general, the larger the number of interrupt vectors, the longer the time that the PCI device can occupy the CPU resources, which is advantageous in terms of the performance of the PCI device.
  • the number of interrupt vectors set in each PCI device is half that of the prior art, so that the performance is deteriorated as compared with the prior art. Therefore, when the present invention is applied, it is understood how much resources the target PCI device originally requires, but performance degradation caused by controlling the PCI device with less resources is not considered (allowable). There must be). For this reason, the user does not apply PCI devices that cannot guarantee normal operation other than performance degradation due to the decrease in the number of interrupt vectors so that the function as a PCI device is not impaired even if the number of interrupt vectors decreases. There is a need to. In addition, when the PCI-Express changeover switch is used and the redundancy according to the present invention is not possible, the EFI / It is necessary to implement the function using BMC or the like.
  • Fig. 4 when resources are allocated, the resources that can be used during normal operation are halved. However, if the resources are halved, the PCI device can operate without significantly changing the implementation around the driver from the existing system.
  • a mechanism to adjust the allocated resources according to the configuration of the entire system is implemented on the EFI / BMC side so that the maximum resources can be secured within the range allowed by the system, and a measure to minimize performance degradation is also considered. It is done.
  • FIG. 5 shows a state in the computer system 1 where the CPU 1_10 has failed and becomes unusable, and both the PCI device 1_20 and the PCI device 2_21 managed by the CPU 1_10 are assigned to the CPU 2_11.
  • the CPU 2_11 directly uses the interrupt vector to set the PCI2_11.
  • the device 1_20 and the PCI device 2_21 can be controlled.
  • each of the CPU 1_10 and the CPU 2_11 manages the correspondence between the PCI devices 1_20 to 4_23 and the CPUs 1_10 and 2_11 and the interrupt vectors assigned to the PCI devices 1_20 to 4_23. .
  • FIG. 6 is a diagram illustrating a connection relationship between the CPU and the PCI device.
  • FIG. 7 is a diagram illustrating a connection relationship between the CPU and the PCI device when the CPU 1_10 fails.
  • the CPU 1_10, CPU 2_11, PCI device 1_20 to PCI device 4_23, SW1_55, and SW2_56 are shown with their connection relationships.
  • SW1_55 provides a path connecting only CPU1_10 to PCI device 1_20 and PCI device 2_21 so that PCI2_11 and PCI device 2_21 cannot be controlled by CPU2_11 across SW1_55 and SW2_56.
  • SW2_56 also provides a path connecting the CPU 2_11 to the PCI device 3_22 and the PCI device 4_23 so that the CPU 1_10 cannot control the PCI device 3_22 and the PCI device 4_23.
  • the SW 1_55 blocks the path connecting the SW 1_55 and the CPU 1_10 and switches to the path between the SW 1_55 and the SW 2_56.
  • SW2_56 has blocked the path 52 connected to SW1_55, but opens the path 52. Therefore, the CPU 2 can also control the PCI device 1_20 and the PCI device 2_21 controlled by the CPU 1_10, separately from the path connecting the PCI device 3_22 and the PCI device 4_23 before the occurrence of the abnormality.
  • the PCI Express switch allows seamless switching even when a failure occurs in the CPU 1_10 by switching the path in synchronization with the PCI Express clock.
  • the resources that can be used by the PCI device are reduced, but the PCI devices 1_20 to 4_23 can continue to operate even if the CPU 1_10 fails.
  • the path 52 connecting SW1_55 and SW2_56 is normally closed, but SW1_ is PCI when the failure of the CPU1_10 occurs.
  • the path 51 of the device 1_20 and the PCI device 2_21 is connected to the CPU 2_11 via the path 52. Therefore, although the resources available for the PCI device are reduced, the PCI devices 1_20 to 4_23 can continue to operate even if the CPU 1_10 fails.
  • At least one PCI device controlled at normal time is connected as a dedicated device to each CPU, and each of the plurality of CPUs includes a plurality of dedicated devices. All the interrupt vectors of the PCI device are set in the virtual memory area. Note that it is desirable to set the same number of interrupt vectors for each of a plurality of PCI devices. By making the PCI path redundant in this way, the system can continue to operate even if the CPU directly connected to the PCI device fails. Also, even if an abnormality occurs in the CPU (active CPU), another CPU (standby CPU) uses a previously set vector number to connect to the PCI device connected to the CPU in which the abnormality has occurred.
  • an SVP for monitoring the system state may be provided in the computer system.
  • each of the plurality of CPUs notifies the SVP that the resource is insufficient when it detects an insufficient resource when setting the interrupt vector. By doing so, it is recorded in the SVP log that there is a shortage of resources, and it is possible to acquire information useful for managing the system.
  • the present invention can also be realized by software program codes that implement the functions of the embodiments.
  • a storage medium in which the program code is recorded is provided to the system or apparatus, and the computer (or CPU or MPU) of the system or apparatus reads the program code stored in the storage medium.
  • the program code itself read from the storage medium realizes the functions of the above-described embodiments, and the program code itself and the storage medium storing the program code constitute the present invention.
  • a storage medium for supplying such program code for example, a flexible disk, CD-ROM, DVD-ROM, hard disk, optical disk, magneto-optical disk, CD-R, magnetic tape, nonvolatile memory card, ROM Etc. are used.
  • an OS operating system
  • the computer CPU or the like performs part or all of the actual processing based on the instruction of the program code.
  • the program code is stored in a storage means such as a hard disk or a memory of a system or apparatus, or a storage medium such as a CD-RW or CD-R
  • the computer (or CPU or MPU) of the system or apparatus may read and execute the program code stored in the storage means or the storage medium when used.
  • control lines and information lines are those that are considered necessary for the explanation, and not all control lines and information lines on the product are necessarily shown. All the components may be connected to each other.

Abstract

 計算機システムは、複数のPCIデバイスと、複数のCPUと、ベクタ番号と当該複数のPCIデバイスと当該複数のCPUとの対応関係をしめす情報を管理し、当該情報に基づいて、当該複数のPCIデバイスと当該複数のCPUの通信を制御するデバイスドライバを備える。そして、デバイスドライバは、OS起動時に、現用系のCPUとPCIデバイスの組み合わせに対して第1のベクタ番号を割り当て、第1のベクタ番号に基づき、待機系のCPUとPCIデバイスの組み合わせに対して第2のベクタ番号を割り当てる。このようにすることにより、CPUに接続されたPCIデバイスをシステム装置のシステムダウンを伴うことなく、保守交換を行うまでシステムとして動作を継続させる(図4参照)。

Description

計算機システム、及びその制御方法
 本発明は、計算機システム、及びその制御方法に関し、例えば、PCIデバイスの管理のための技術に関するものである。
 PCI-Express規格に対応した拡張デバイスはサーバ機器において高密度サーバからタワー型の廉価サーバ機器まで、現行のほとんど全ての機器においてサポートしている。しかしPCIデバイスが物理的故障を起こした場合、一般にシステムダウンを伴う保守交換が発生する。例えば、複数のCPUと複数のPCIデバイスを備えるシステムにおいて、正常に動作しているCPUに異常が発生した場合、当該CPUに接続していたPCIデバイスを、もう一方のCPUでシステム装置の再起動を伴わずに継続して使用することができず、必ずOSのシャットダウン、部品交換、OS起動というプロセスを踏むこととなり、PCIデバイスの使用継続には時間を要する。
 このような不都合を解決するために、例えば特許文献1では、バスに接続されたあるデバイスに障害が発生した場合、専用のリセット回路を設け、他のデバイスを一旦リセットし、障害用モードにて他のデバイスを再起動するようにしている。このようにすることにより、障害が発生したデバイスを電気的に切り離し、デバイスの継続動作を実現させることができる。
特開2007-249505公報
 しかしながら、特許文献1では、各デバイスやサーバに専用動作モード(障害用モード)を予め設定し、障害発生時に専用動作モードで動作させなければならない。つまり、専用のリセット回路を各デバイスに設けなければならない。従って、システムのコストが過大となるという課題が特許文献1の技術には存在する。
 本発明はこのような状況に鑑みてなされたものであり、デバイスに特殊な動作モードを設けることなくシステム障害発生から復旧までの間のダウンタイムを抑えるための技術を提供するものである。
 上記課題を解決するために、本発明による計算機システムは、複数のPCIデバイスと、少なくともOSと複数のPCIデバイスのドライバを実行する複数のCPUと、当該複数のPCIデバイスの割り込みベクタを設定するための仮想メモリ領域を提供する少なくとも1つのメモリと、を有する。そして、複数のCPUのそれぞれは、複数のPCIデバイスと複数のCPUとの対応関係と、複数のPCIデバイスに割り当てられた割り込みベクタと、を管理する。このような計算機システムでは、複数のCPUのそれぞれに対して、複数のPCIデバイスの全ての割り込みベクタがメモリ内に設定されている。
 本発明に関連する更なる特徴は、本明細書の記述、添付図面から明らかになるものである。また、本発明の態様は、要素及び多様な要素の組み合わせ及び以降の詳細な記述と添付される請求の範囲の様態により達成され実現される。
 本明細書の記述は典型的な例示に過ぎず、本発明の請求の範囲又は適用例を如何なる意味に於いても限定するものではないことを理解する必要がある。
 本発明によれば、デバイスに特殊な動作モードを設けることなくシステム障害発生から復旧までの間のダウンタイムを抑えることができるようになる。
本発明による計算機システムの主要部分の概略構成を示す図である。 OS起動時における割り込みベクタの割り当て処理を説明するためのシーケンス図である。 従来技術による、PCIデバイスへの割込みベクタの割り当てを説明するための図である。 本発明の実施形態による、PCIデバイスへの割込みベクタの割り当て(待機系を持つ冗長構成)を説明するための図である。 CPU1が故障した時におけるPCIデバイスへのリソース割り当ての状態を示す図である(異常系)。 システムに異常発生していない場合のデータの流れを説明するための図である。 システムに異常発生し、待機系にて動作している場合のデータの流れを説明するための図である。
 本発明は、CPUに障害が発生した際にCPUと接続されたPCIデバイスの経路を切り替えることにより、PCIデバイスの継続稼動を実現する技術に関するものである。このため、本発明は、上述のように、一次的には、デバイスに特殊な動作モードを設けることなくシステム障害発生から復旧までの間のダウンタイムを抑えるための技術を提供するものである。また、本発明は、二次的には、一般にSMP(Symmetric Mutli Processing)構成の、複数のCPUコアで物理メモリを共有する方式で構成されるシステムのうち、複数のCPUソケットを備えた計算機システムにおいて、1つのCPUが故障した際に、当該CPUに接続されているPCIデバイスを別のCPUにシステムダウンを伴う事なく動的に割り当てを変更するものである。
 以下、添付図面を参照して本発明の実施形態について説明する。添付図面では、機能的に同じ要素は同じ番号で表示される場合もある。なお、添付図面は本発明の原理に則った具体的な実施形態と実装例を示しているが、これらは本発明の理解のためのものであり、決して本発明を限定的に解釈するために用いられるものではない。
 本実施形態では、当業者が本発明を実施するのに十分詳細にその説明がなされているが、他の実装・形態も可能で、本発明の技術的思想の範囲と精神を逸脱することなく構成・構造の変更や多様な要素の置き換えが可能であることを理解する必要がある。従って、以降の記述をこれに限定して解釈してはならない。
 更に、本発明の実施形態は、後述されるように、汎用コンピュータ上で稼動するソフトウェアで実装しても良いし専用ハードウェア又はソフトウェアとハードウェアの組み合わせで実装しても良い。
 <システム構成>
 図1は、本発明の実施形態による計算機システムの全体構成を示す図である。
 複数のCPU(図1では、説明の便宜のためCPU1_10及びCPU2_11の2つのみが示されているが2つに限定されるものではない)と、それぞれのCPUに対応し、バス102又は103を介して接続されるメモリモジュール100及び101と、CPU1_10に接続される少なくとも1つのPCIデバイス(PCIデバイス1_20及びPCIデバイス2_21が示されているが、2つに限定されるものではない)と、CPU2_11に接続される少なくとも1つのPCIデバイス(PCIデバイス3_22及びPCIデバイス4_23が示されているが、2つに限定されるものではない)と、バスを介してCPU1_10及びCPU2_11と接続されるブリッジチップ12と、システムの状態を通知する機能を有するSVP(Service Processor)チップ104と、を含んでいる。
 CPU1_10及びCPU2_11は、正常稼動時においてはいずれも通常のマルチプロセッサとして機能し、待機状態とはならない。そのため、計算機システム1では、正常稼動時においては両方のCPUが使用されるようになっている。
 ブリッジチップ12は、キーボードやマウス、ディスプレイ装置といった外部との入出力インタフェースを制御する。
 通常時、PCIデバイス1_20及びPCIデバイス2_21は、CPU1_10によって動作が制御される。同様に、PCIデバイス3_22及びPCIデバイス4_23は、CPU2_11によって動作が制御される。従って、PCIデバイス1_20及びPCIデバイス2_21はCPU1_10の専用デバイス、PCIデバイス3_22及びPCIデバイス4_23はCPU2_11の専用デバイスということができる。
なお、本発明の実施形態で想定するのは、一般的なSMT(Simultaneous Multi Thread)を採用したシステムであるが、本発明の思想は必ずしもそれに限定されるものではない。
 一般的なマルチプロセッサシステムに対応したOSでは、入出力装置やUSBといった外付けの拡張機能は、1つのCPUに割り込みベクタを設定する。そのため、本実施形態においては、CPU1_10に割り込みベクタが割り当てられているのが一般的である。しかし、PCIデバイスと同様に、冗長性を持たせるため、拡張機能もCPU2_11にも接続している。
 ブリッジチップ12は、小型のマイクロチップであり、自ら各デバイスを制御できる。そのため、ブリッジチップ12は、CPU1_10が故障した場合には、CPU2_11を使用するように自ら制御することができる。
 また、入出力インタフェースやUSBなどは、PCIデバイスと異なり、一度OSから切り離されてしまっても、若干のダウンタイムは発生するものの、再度OSに割り当てる事は、ブリッジチップの回路規模にもよるが、比較的容易である。そのため、本発明においては以降、PCIデバイスの切り替えに関して記載し、入出力デバイスやUSBといった拡張機能に関しては記載の対象としないこととする。
 なお、当該計算機システム1において、OSは、ストレージやHDDからメモリモジュール100及び101にそれぞれ読み込まれ、それぞれのCPUによって実行される。また、各PCIデバイスのドライバも、メモリモジュール100及び101から読みだされ、それぞれのCPUによって実行され、担当のCPUによって各PCIデバイスが制御される。
 <PCIドライバ側の処理とOS側の処理>
 図2は、PCIデバイスに冗長性を持たせるために実行されるPCIドライバ側の処理とOS側の処理のシーケンスを説明するための図である。計算機システム1では、現用系として通常稼動時に使用するリソースと、待機系として障害発生時に使用するリソースを分け、PCIドライバ及びOSがそれぞれを個別に管理している。なお、以下においては、OS或いはPCIデバイスドライバを動作主体として各シーケンスについて説明するが、OS及びドライバはCPU1_10及びCPU2_11によって実行されるため、CPUを動作主体として捉えても良い。
(i)シーケンス201
 まず、CPU1_10及びCPU2_11(以下、図2の説明では、単に「CPU」と記す)によって実行されるOSは、OSの初期化中に、CPUによって実行されるPCIドライバに対して、PCIのリンク速度の情報を通知する。通知されるPCIのリンク速度は、例えば、1×、2×、4×、8×、16×、32×、・・・等である。
(ii)シーケンス202
 PCIのリンク速度の情報を受け取ったドライバは、OSによって通知されたリンク速度に基づいて、各PCIデバイスを正常に動作させるために必要なリンク速度を確認し、決定する。そして、ドライバは、OSに対して決定したリンク速度を通知する。
(iii)シーケンス203
 OSは、ドライバからリンク速度の通知を受け、当該リンク速度に応じて使用できるリソース(CPUのリソース量:PCIデバイスが使える割り込みベクタの数)をドライバに通知する。
(iv)シーケンス204
 ドライバは、OSに対して各PCIデバイスが必要とするリソースを確保できるかOS側へ確認を取る。より具体的には、ドライバは、PCIデバイスの仕様(シーケンス202で決定したリンク速度)に応じて割り込みベクタを割り当ててくれるようにOSに対して要求する。
 通常、PCIデバイスにおいてはデバイス毎に確保するリソースが予め決まっており、ドライバによって確保するリソースの数を制御するのが一般的である。そのため、リソースが通常稼動に必要な容量より小さい場合、デバイスを使用不可としてOSに通知するドライバもあれば、リソースが通常使用する容量より少なくても、使用不可にするような例外処理を入れず、正常稼動させようとするドライバも存在する。(ドライバの実装に依存する)よって、リソースが十分確保できない場合の処理は、ドライバの実装に依存し、各々異なる。
 図2の処理例では、ドライバは、現用系のCPU1_10が動作させるOSに対してPCIデバイスが必要とする本来のリソース数の分だけリソースを確保できるか確認を取る。なお、当該シーケンスの処理は、PCIデバイスの冗長化に関係なく発生する処理であり、本発明特有の処理ではない。また、現用系CPU1_10が通常稼動するために必要なリソースを確保できない場合はエラー処理として、PCIデバイスをどのように扱うかデバイスドライバで制御する点も本発明特有の処理ではない。
 なお、本実施形態において、当該シーケンスにおけるベクタ割り当て要求は、現用系(CPU1_10)の割り込みベクタを割り当てるためのものであり、待機系については現用系のベクタ設定が完了してから設定される。
(v)シーケンス205
 OSは、ドライバに対して、要求されたベクタ数を割り当てることができるメモリ領域(仮想メモリ領域)をドライバに通知する。
(vi)シーケンス206
 ドライバは、ベクタ割り当て可能領域の通知をOSから受け、対象のPCIデバイスについて現用系のためのリソースを割り当て、そのメモリ領域の情報をOSに通知する。
(vii)シーケンス207
 OSは、メモリ領域の情報をドライバから受け、現用系の割り込みベクタを設定する。
(viii)シーケンス208
 ドライバは、対象のPCIデバイスを通常使用するためのリソースを確保できた場合、その倍数のリソースを確保できるか再度OSに問い合わせる。つまり、現用系のために割り当てられた割り込みベクタ数が待機系のためにも確保できるかOSに問い合わせる。
(ix)シーケンス209
 OSは、ドライバからの要求に応じて、ベクタ割り当て可能領域(仮想メモリ領域)を確認し、ドライバに当該可能領域を通知する。
(x)シーケンス210
 ドライバは、OSから通知されたベクタ割り当て可能領域の情報に基づいて、現用系のPCIデバイスに割り当てた割り込みベクタと同数の割り込みベクタ数を待機系のPCIデバイスに設定可能か判断する。設定可能な場合(シーケンス210でYesの場合)、処理はシーケンス211に移行する。設定不可能な場合(シーケンス210でNoの場合)、処理はシーケンス212に移行する。
(xi)シーケンス211
 OSは、待機系のPCIデバイスに対して割り込みベクタを設定し、ドライバに対して待機系のPCIデバイスとして割り込みに使用するベクタ番号を通知する。
(xii)シーケンス212
 ドライバは、現用系及び待機系のベクタ割り当てについて再検討するため、既に設定された現用系のPCIデバイスに対する割り込みベクタの設定を取り消す。
 待機系のPCIデバイスが正常稼動するために必要な割り込みベクタがOSから十分に供給されない場合、現用系に故障が発生した場合、PCIデバイスが正常に使用できない状態となる。そのため、現用系に割り当てるリソースは確保できても待機系に割り当てるリソースが不十分である場合には、ベクタ割り当て方式の再検討を行う必要がある。
 シーケンス212の処理後、処理はシーケンス202に移行する。シーケンス202では、ドライバは、各PCIデバイスを動作させるために必要なリンク速度であって、今まで検討した速度(例えば8×)よりも遅い速度の異なるリンク速度(例えば4×)を決定する。そして、ドライバは、OSに対して決定したリンク速度を通知する。以後、上述のように、現用系及び待機系の両方に同数の割り込みベクタが設定できるまで、シーケンス203~212の処理が繰り返される。
 以上のように、本発明の実施形態では、現用及び待機系のPCIデバイスには同数の割り込みベクタが割り当てられる。ただし、各PCIデバイスに割り当てられる割り込みベクタ数は、本来(従来の方式によって)割り当てられる割り込みベクタ数の半分となる。
 ところで、通常、システム設計に当たっては、各PCIデバイスのデバイスドライバがOSに要求するリソースを確保できる前提でシステム設計を行う。よって、本システム設計の基本に則れば、PCIデバイスが通常動作するために必要とする半分のリソースは確実に確保可能である。通常使用する倍数のリソースを確保できるのであれば、現用系および待機系で何らかの不具合が発生することはない。
 本発明者は、通常の半分のリソースでも当該デバイスの使用を継続可能な技術に関して技術的価値を見出しているが、実際の運用の際には、通常の半分のリソースであってもPCIデバイスの機能を十分満足できるかどうかを検証する必要がある。
 上述のように、本発明の実施形態においては現用系および待機系について、同数のベクタ割り込みを基本としている。これは、機構が最も単純であり、制御機構の実装上、開発コストや機構の実装にかかるコストを考慮したためである。ただし、必ずしも現用系と待機系で同数のベクタ割り込みを使用しなくても良い。
 また、PCIデバイスによっては、当該PCIデバイスの性能を引き出すのに本来必要なリソース以上にリソースを確保するデバイスも存在する。例えば、SCSIデバイス接続用PCIカードやシリアル入出力対応PCIカードなど、レガシデバイスに対応させるための拡張PCIカードなどが代表的である。このようなデバイスの場合、PCI Expressの帯域自体が規格上最小のx1でも帯域過多であり、デバイスが割り込みを上げる数も非常に少ないにも拘らず、使用する割り込みベクタを余分に確保しているデバイスも存在する。このような場合、現用系および待機系に対して割り込みベクタ自体を予め少なく割り当てるように、ドライバの割り込みベクタ確保要求に対し、OS上の設定で割り当てるベクタ数を削減し、リソースを他のPCIデバイスのために空けるといった工夫が考えられる。
 以上のように、本発明では、PCIデバイスが通常確保するリソースの倍数を確保できる余裕がある場合は問題ない。一方、正常系および待機系のPCIデバイスに割り当てる事が可能な割り込みベクタのリソース数が通常より少ない場合には、PCIデバイスが正常動作するか否かを十分検証する必要がある。
 しかし、十分なリソースが確保できず、PCIデバイスを正常稼動させることができない場合でも、OSから下位の物理レイヤーに対してハードウェア異常が発生している事を通知することは既存技術を用いれば可能である。
 そこで、OSが割り当て可能なリソースの上限を超えるようなリソースが必要となる場合は、ユーザー側に本機能を使用しないよう、SVP104のログに出力するなどし、ユーザーへの配慮を図る。また、PCIデバイスの冗長化機能を使用したとき(本実施形態)には、リソース不足で正常稼動できない旨、SVP等を利用してユーザーに対して注意が喚起される。このため、ユーザーは、リソース不足の場合はPCIデバイス自体が起動できず、PCIカードを増設しようとする時点においてPCIデバイスの冗長構成が組めないことが分かる。よって、ユーザーは、システムの本運用に入る前に制約事項に気付くことができる。
 <従来の割り込みベクタの設定>
 図3は、従来技術によってドライバがPCIデバイスに対してどの割り込みベクタ番号を使用するか決定し、割り当てた後の状態を示す図である。
 PCIデバイス1_20は、本来、割り込みベクタを4個必要とするデバイスであるとする。そのため、通常であれば、割り込みベクタは4個設定される。
 従って、図3では、PCIデバイス1_20用に仮想メモリアドレス0x0000から0x0003を、PCIデバイス2_21用に仮想メモリアドレス0x0004から0x0007をCPU1_10に割り当てている。一方、CPU1_10にはPCIデバイス3およびPCIデバイス4用の仮想メモリアドレスは割り当てない。同様に、PCIデバイス3_22用に仮想メモリアドレス0x0008から0x000Bを、PCIデバイス4_23用に仮想メモリアドレス0x000Cから0x000FをCPU2_11に割り当てている。このように、従来技術に依る場合には、各PCIデバイスは1つのCPUと1対1で対応し、CPUが故障した場合の冗長性は無い。
 <本発明による割り込みベクタの設定>
 図4は、本発明の実施形態によってドライバがPCIデバイスに対してどの割り込みベクタ番号を使用するかを決定し、割り当てた後の状態を示す図である。本発明の実施形態では、システム装置が故障した場合にも継続的な動作ができるよう、CPU1_10がPCIデバイス1_20のために使用するリソースの数を半分にしたうえで、CPU2_11がPCIデバイス1_20を制御できるよう、割り込みベクタを割り当てる。
 具体的には、CPU1_10は、PCIデバイス1_20用に仮想メモリアドレス0x0000~0x0001を、PCIデバイス2_21用に仮想メモリアドレス0x0003~0004を、PCIデバイス3_22用に仮想メモリアドレス0x0008と0x0009を、PCIデバイス4_23用に仮想メモリアドレス0x000Cと0x000dを割り当てている。このうち、システム装置が正常に稼動しており、いずれのCPUにも異常がない時、CPU1_10はCPU2_11側の管理下にあるPCIデバイス3_22及びPCIデバイス4_23にはアクセスしない。
 また、CPU2_11は、PCIデバイス1_20を制御するために0x0002~0x0003を、PCIデバイス2_21を制御するために0x0006~0x0007を、PCIデバイス3_22を制御するために0x000A~0x000Bを、PCIデバイス4_23を制御するために0x000E~0x000Fをそれぞれ確保している。このうち、正常に稼動している状態で制御するPCIデバイスはPCIデバイス3_22とPCIデバイス4_23のみである。
 このように、あらかじめOS起動時にドライバが双方のCPUからPCIデバイスにアクセスできるよう、固定的に割り込みベクタを割り振っておく。
 この場合に考慮(許容)すべき点としては、PCIデバイスに割り当てられるリソースが確実に減少することである。割り込みベクタは、PCIデバイスがCPUと通信する際にCPUに対して割込みを発生させ、割込みを発生させたPCIデバイス専用にCPUのリソースを確保し、データ通信を行うためにある。そのため、一般的に割り込みベクタの数が多い方が、PCIデバイスがCPUリソースを占有できる時間が長くなり、PCIデバイスの性能面において有利となる。
 しかしながら、本発明を適用する場合には、各PCIデバイスに設定される割り込みベクタ数は従来の半分となるため、従来よりも性能は劣化する。従って、本発明を適用する場合には、対象のPCIデバイスが本来どれだけリソースを必要とするのかを把握するが、少ないリソースでPCIデバイスを制御することによる性能面の劣化は考慮しない(許容しなければならない)。このため、ユーザーは、割り込みベクタ数が減ってもPCIデバイスとしての機能を損なうことのないよう、割り込みベクタ数減少により性能低下以外の正常動作を保障できないPCIデバイスについては本発明の適用対象外とする必要がある。また、PCI-Express切り替えスイッチを使用し、本発明による冗長化ができない場合には、ユーザーは、OS起動前に、PCIスロット単位でPCIの冗長化構成を組まないように設定できるよう、EFI/BMCなどを使用して機能を実装する必要がある。
 図4では、リソースを割り当てるとき、通常稼動時に使用できるリソースが半分になる。しかし、リソースを半分にしておけば、既存のシステムからドライバ周りの実装を大幅に変更することなく、PCIデバイスが動作可能となる。一方、システムが許す範囲内において、最大限のリソースを確保できるよう、システム全体の構成に応じて割り当てリソースを調整する仕組みをEFI/BMC側で実装し、性能劣化を最小限に抑える工夫も考えられる。
 図5は、計算機システム1において、CPU1_10が故障して使用不可となり、CPU1_10が管理していたPCIデバイス1_20及びPCIデバイス2_21がいずれもCPU2_11に割り当てられている様子を示している。図5からも分かるように、OS起動時において、予めPCIデバイス1_20用に0x0002~0x0003と、PCIデバイス2_21用に0x0006~0x0007を確保しているため、当該割り込みベクタを使用してCPU2_11が直接PCIデバイス1_20及びPCIデバイス2_21をコントロールできるようになる。
 以上のように、本実施形態では、CPU1_10及びCPU2_11のそれぞれは、PCIデバイス1_20乃至4_23とCPU1_10及び2_11との対応関係と、PCIデバイス1_20乃至4_23に割り当てられた割り込みベクタと、を管理している。
 <本発明を適用した場合の接続関係>
 図6は、CPUとPCIデバイスとの接続関係を示す図である。図7は、CPU1_10が故障した場合のCPUとPCIデバイスとの接続関係を示す図である。ここでは、CPU1_10、CPU2_11、PCIデバイス1_20~PCIデバイス4_23、SW1_55、SW2_56に特化してその接続関係が示されている。
 図6において、通常時は、SW1_55は、CPU1_10とPCIデバイス1_20及びPCIデバイス2_21のみを結ぶ経路を提供し、SW1_55とSW2_56を跨いでPCIデバイス1_20やPCIデバイス2_21をCPU2_11が制御できないようにしている。同様に、通常時は、SW2_56も、CPU2_11とPCIデバイス3_22及びPCIデバイス4_23を結ぶ経路を提供し、PCIデバイス3_22やPCIデバイス4_23をCPU1_10が制御することはできないようにしている。
 一方、図7に示すように、CPU1_10が故障した場合、SW1_55は、SW1_55とCPU1_10とを結ぶ経路を遮断し、SW1_55とSW2_56との間の経路へ切り替える。SW2_56は、SW1_55と接続する経路52を閉塞していたが、経路52を開放する。よって、CPU2は、異常発生前のPCIデバイス3_22とPCIデバイス4_23とを結ぶ経路とは別に、CPU1_10が制御していたPCIデバイス1_20及びPCIデバイス2_21も制御可能になる。このとき、PCI Expressスイッチは、PCI Expressのクロックと同期して経路を切り替える事により、CPU1_10に故障が発生した場合においても、シームレスな切り替えを可能とする。このように、本実施形態ではPCIデバイスが利用可能なリソースが減少するものの、PCIデバイス1_20~4_23はCPU1_10が故障してもそのまま継続稼動可能となっている。
 既存(従来)の方式では、CPU1_10が故障した場合、何ら仕組みを設けていないので、CPU1_10及びCPU1_10に接続されているPCIデバイス1_20及びPCIデバイス2_21は即時にシステムダウンに至る。CPUやPCIデバイスに障害が発生した場合に当該障害が発生したデバイスは使用できないが、別のデバイスは継続動作可能とされるシステムが以前から存在する。このようなシステムにおいては、故障したCPUやPCIデバイスを使用するために、システムのシャットダウン後、デバイスの入れ替えを実施する必要がある。この仕組みを実現するには、システムのCPUの故障を検知し、デバイスの切り離し(閉塞)処理をBladeなどのシステム全体で実装することになる(例えば、EFIやBMCにより実装される)。
 これに対し、本発明の実施形態では、図6及び7に示されるように、SW1_55とSW2_56とを結ぶ経路52は正常時には閉塞しているが、SW1_は、CPU1_10の障害の発生とともに、PCIデバイス1_20及びPCIデバイス2_21の経路51を経路52経由でCPU2_11と接続する。このため、PCIデバイスが利用可能なリソースが減少するものの、PCIデバイス1_20~PCIデバイス4_23は、CPU1_10が故障してもそのまま継続稼動可能となる。
 <まとめ>
(i)本発明の実施形態では、計算機システムにおいて、各CPUには、通常時に制御される少なくとも1つのPCIデバイスが専用デバイスとして接続されており、複数のCPUのそれぞれは、専用デバイスを含む複数のPCIデバイスの全ての割り込みベクタを仮想メモリ領域に設定している。なお、複数のPCIデバイスのそれぞれについては同数の割り込みベクタを設定することが望ましい。このようにPCIの経路を冗長化することにより、PCIデバイスに直接接続されているCPUが故障しても、システムはそのまま継続動作が可能となる。また、CPU(現用系CPU)に異常が発生しても、別のCPU(待機系CPU)が、あらかじめ設定されていたベクタ番号を用いて、異常の発生したCPUに接続されているPCIデバイスに、OS再起動を伴わずに直接アクセスできる。したがって、CPUに接続されたPCIデバイスをシステムのシステムダウンを伴うことなく、保守交換を行うまでシステムとして動作を継続させる。そのため、PCI Expressのバスを多重化し、CPUに異常が発生しても、他のCPUにPCIデバイスの処理をシームレスに移行させる事を可能にする。例えば、高い信頼性を要求するシステムにおいて、あるCPUが故障した際に、システムを停止させることなく、継続動作が可能となることは非常に有益である。そのため、CPUの故障判明後、できる限り早い段階で保守交換は必要となるが、故障によるダウンタイムを回避でき、保守交換は計画的に実施することが可能である。従って、本発明は高い信頼性を要求するシステムに対して十分に実用的に適用可能である。
 また、計算機システムにシステムの状態を監視するSVPを設けるようにしても良い。この場合、複数のCPUのそれぞれは、割り込みベクタを設定する際にリソース不足を検知したときにはSVPにリソース不足であることを通知する。このようにすることにより、SVPのログにはリソース不足であったことが記録され、システムを管理する上で有益な情報を取得することが可能となる。
 割り込みベクタを設定する際に、待機系のCPUに対して十分な数のベクタ番号を割り当てるリソースがない場合には、PCIリンク速度を下げて(例えば、8×→4×)再度割り込みベクタを現用系CPU及び待機系CPUに設定する処理を実行する。このようにすることにより、PCIデバイスの性能とシステム故障時における動作担保との両立を図りながら割り込みベクタを割り当てることが可能となる。
(ii)本発明は、実施形態の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ(又はCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD-ROM、DVD-ROM、ハードディスク、光ディスク、光磁気ディスク、CD-R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
 また、プログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)などが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータ上のメモリに書きこまれた後、そのプログラムコードの指示に基づき、コンピュータのCPUなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。
 さらに、実施の形態の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することにより、それをシステム又は装置のハードディスクやメモリ等の記憶手段又はCD-RW、CD-R等の記憶媒体に格納し、使用時にそのシステム又は装置のコンピュータ(又はCPUやMPU)が当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしても良い。
 最後に、ここで述べたプロセス及び技術は本質的に如何なる特定の装置に関連することはなく、コンポーネントの如何なる相応しい組み合わせによってでも実装できることを理解する必要がある。更に、汎用目的の多様なタイプのデバイスがここで記述した教授に従って使用可能である。ここで述べた方法のステップを実行するのに、専用の装置を構築するのが有益であることが判るかもしれない。また、実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。本発明は、具体例に関連して記述したが、これらは、すべての観点に於いて限定の為ではなく説明の為である。本分野にスキルのある者には、本発明を実施するのに相応しいハードウェア、ソフトウェア、及びファームウエアの多数の組み合わせがある。例えば、記述したソフトウェアは、アセンブラ、C/C++、perl、Shell、PHP、Java(登録商標)等の広範囲のプログラム又はスクリプト言語で実装できる。
 さらに、上述の実施形態において、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていても良い。
10 CPU1
11 CPU2
12 ブリッジチップ
20 PCIデバイス1
21 PCIデバイス2
22 PCIデバイス3
23 PCIデバイス4
100 メモリモジュール
101 メモリモジュール
102 バス
103 バス
104 SVPチップ

Claims (11)

  1.  複数のPCIデバイスと、少なくともOSと前記複数のPCIデバイスのドライバを実行する複数のCPUと、当該複数のPCIデバイスの割り込みベクタを設定するための仮想メモリ領域を提供する少なくとも1つのメモリと、CPU間の経路を開閉するための複数のスイッチと、を有し、
     各CPUには、通常時に制御される少なくとも1つのPCIデバイスが専用デバイスとして接続されており、
     前記複数のCPUのそれぞれは、前記専用デバイスを含む前記複数のPCIデバイスの全ての前記割り込みベクタを前記仮想メモリ領域に設定する、
    ことを特徴とする計算機システム。
  2.  請求項1において、
     前記複数のCPUのそれぞれは、前記複数のPCIデバイスのそれぞれについて同数の割り込みベクタを設定することを特徴とする計算機システム。
  3.  請求項1において、
     前記複数のスイッチは、何れかのCPUが使用不可となった場合に、当該使用不可となったCPUに接続された前記専用デバイスの制御を当該使用不可となったCPUとは別のCPUに実行させるための経路を提供することを特徴とする計算機システム。
  4.  請求項1において、
     さらに、計算機システムの状態を監視するSVPを有し、
     前記複数のCPUのそれぞれは、前記割り込みベクタを設定する際にリソース不足を検知したときには前記SVPにリソース不足であることを通知することを特徴とする計算機システム。
  5.  複数のPCIデバイスと、少なくともOSと前記複数のPCIデバイスのドライバを実行する複数のCPUと、当該複数のPCIデバイスの割り込みベクタを設定するための仮想メモリ領域を提供する少なくとも1つのメモリと、を有し、
     前記複数のCPUのそれぞれは、前記複数のPCIデバイスと前記複数のCPUとの対応関係と、前記複数のPCIデバイスに割り当てられた割り込みベクタと、を管理し、
     前記複数のCPUのそれぞれに対して、前記複数のPCIデバイスの全ての前記割り込みベクタが前記メモリ内に設定されている、
    ことを特徴とする計算機システム。
  6.  計算機システムの制御方法であって、
     前記計算機システムは、複数のPCIデバイスと、少なくともOSと前記複数のPCIデバイスのドライバを実行する複数のCPUと、当該複数のPCIデバイスの割り込みベクタを設定するための仮想メモリ領域を提供する少なくとも1つのメモリと、を有し、
     前記制御方法は、
      前記複数のCPUのそれぞれが、前記ドライバを用いて前記PCIデバイスのリンク速度を決定するステップと、
      前記複数のCPUのそれぞれが、前記ドライバを用いて前記リンク速度に応じて前記複数のPCIデバイスの割り込みベクタの割り当てを前記OSに要求するステップと、
      前記複数のCPUのそれぞれが、前記OSからの割り当て可能領域の通知を受け、前記ドライバを用いて、前記複数のCPUのそれぞれに対して前記複数のPCIデバイスの全ての前記割り込みベクタを前記仮想メモリ領域内に設定可能か否か判断するステップと、
      前記複数のCPUのそれぞれが、前記判断するステップで設定可能であると判断され場合に、前記複数のCPUのそれぞれに対して前記複数のPCIデバイスの全ての前記割り込みベクタを前記仮想メモリ領域内に設定するステップと、
    を有することを特徴とする制御方法。
  7.  請求項6において、
     前記複数のCPUのそれぞれは、前記複数のPCIデバイスのそれぞれについて同数の割り込みベクタを設定することを特徴とする制御方法。
  8.  請求項7において、
     前記設定可能か否か判断するステップにおいて、前記複数のCPUのそれぞれは、前記複数のPCIデバイスのそれぞれについて同数の割り込みベクタを設定することが可能か否か判断し、
     前記同数の割り込みベクタの設定が可能ではないと判断された場合、前記複数のCPUのそれぞれは、前記リンク速度を決定するステップを再度実行し、前回設定したリンク速度よりも低速のリンク速度を決定し、前記OSに要求するステップ、前記設定可能か否か判断するステップ、及び前記設定するステップを繰り返し実行することを特徴とする制御方法。
  9.  請求項6において、
     前記割り込みベクタ設定後は、前記複数のCPUのそれぞれは、前記複数のPCIデバイスと前記複数のCPUとの対応関係と、前記複数のPCIデバイスに割り当てられた割り込みベクタと、を管理することを特徴とする制御方法。
  10.  請求項6において、
     前記複数のPCIデバイスに関しては、CPUが使用不可となる状況以外の状況である通常時に制御を担当するCPUが予め決められており、
     前記計算機システムは、前記複数のCPU間の経路を開閉するための複数のスイッチを有し、
     前記制御方法は、さらに、
      前記複数のCPUの何れかが使用不可となったとき、当該使用不可となったCPU以外の正常に稼働する少なくとも1つのCPUが、前記使用不可となったCPUによって制御されていたPCIデバイスの制御を担当するように、前記複数のスイッチによる経路の開閉の制御するステップを有することを特徴とする制御方法。
  11.  請求項6において、
     さらに、計算機システムの状態を監視するSVPを有し、
     前記制御方法は、さらに、
      前記複数のCPUのそれぞれが、前記割り込みベクタを設定する際にリソース不足を検知したときには前記SVPにリソース不足であることを通知するステップを有することを特徴とする制御方法。
PCT/JP2014/080193 2014-11-14 2014-11-14 計算機システム、及びその制御方法 WO2016075813A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/080193 WO2016075813A1 (ja) 2014-11-14 2014-11-14 計算機システム、及びその制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/080193 WO2016075813A1 (ja) 2014-11-14 2014-11-14 計算機システム、及びその制御方法

Publications (1)

Publication Number Publication Date
WO2016075813A1 true WO2016075813A1 (ja) 2016-05-19

Family

ID=55953926

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/080193 WO2016075813A1 (ja) 2014-11-14 2014-11-14 計算機システム、及びその制御方法

Country Status (1)

Country Link
WO (1) WO2016075813A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10769004B2 (en) 2017-01-27 2020-09-08 Fujitsu Limited Processor circuit, information processing apparatus, and operation method of processor circuit

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1124948A (ja) * 1997-06-27 1999-01-29 Fujitsu Ltd マルチプロセッサシステムの割込み制御方式および装置
JP2008065713A (ja) * 2006-09-08 2008-03-21 Canon Inc マルチプロセッサシステム及び割込み制御方法
JP2010250453A (ja) * 2009-04-14 2010-11-04 Hitachi Ltd 計算機システム、割込み中継回路及び割込み中継方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1124948A (ja) * 1997-06-27 1999-01-29 Fujitsu Ltd マルチプロセッサシステムの割込み制御方式および装置
JP2008065713A (ja) * 2006-09-08 2008-03-21 Canon Inc マルチプロセッサシステム及び割込み制御方法
JP2010250453A (ja) * 2009-04-14 2010-11-04 Hitachi Ltd 計算機システム、割込み中継回路及び割込み中継方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10769004B2 (en) 2017-01-27 2020-09-08 Fujitsu Limited Processor circuit, information processing apparatus, and operation method of processor circuit

Similar Documents

Publication Publication Date Title
JP4001877B2 (ja) 入出力ファブリックにおけるハードウェア・エラーからの自動回復
JP5585844B2 (ja) 仮想計算機の制御方法及び計算機
US8555279B2 (en) Resource allocation for controller boards management functionalities in a storage management system with a plurality of controller boards, each controller board includes plurality of virtual machines with fixed local shared memory, fixed remote shared memory, and dynamic memory regions
JP4723290B2 (ja) ディスクアレイ装置及びその制御方法
US8032786B2 (en) Information-processing equipment and system therefor with switching control for switchover operation
JP5069732B2 (ja) 計算機装置、計算機システム、アダプタ承継方法
WO2016165304A1 (zh) 一种实例节点管理的方法及管理设备
US9507664B2 (en) Storage system including a plurality of storage units, a management device, and an information processing apparatus, and method for controlling the storage system
KR20150005854A (ko) 컴퓨터 시스템, pci 익스프레스 엔드포인트 디바이스에 액세스하는 방법 및 장치
US10289564B2 (en) Computer and memory region management method
EP3761564B1 (en) Master/standby container system switch
CN110874261A (zh) 可用性系统、方法和存储有程序的存储介质
US8402195B2 (en) Storage system mounted with plurality of processors
JP5531487B2 (ja) サーバシステム及びサーバシステムの管理方法
WO2016075813A1 (ja) 計算機システム、及びその制御方法
CN110674539B (zh) 一种硬盘保护设备、方法及系统
US11055263B2 (en) Information processing device and information processing system for synchronizing data between storage devices
EP1890229B1 (en) System controller, data processor, and input output request control method
JP5773446B2 (ja) 記憶装置、冗長性回復方法、およびプログラム
JP6063576B2 (ja) サーバシステム、計算機システム、サーバシステムの管理方法、及びコンピュータ読み取り可能な記憶媒体
CN113590306A (zh) 一种实现域控制器双系统之间可靠通讯的方法
US7447842B2 (en) Mass memory device and method for operating a mass memory device
TWI733744B (zh) 計算設備及計算設備儲存部件的管理方法及系統
US11366618B2 (en) All flash array server and control method thereof
RU2810634C2 (ru) Способ повышения надежности систем хранения данных и соответствующее устройство

Legal Events

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

Ref document number: 14906080

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14906080

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP