WO2016056060A1 - 計算機及びベクタの設定方法 - Google Patents

計算機及びベクタの設定方法 Download PDF

Info

Publication number
WO2016056060A1
WO2016056060A1 PCT/JP2014/076777 JP2014076777W WO2016056060A1 WO 2016056060 A1 WO2016056060 A1 WO 2016056060A1 JP 2014076777 W JP2014076777 W JP 2014076777W WO 2016056060 A1 WO2016056060 A1 WO 2016056060A1
Authority
WO
WIPO (PCT)
Prior art keywords
computer
sharing
information
vectors
vector
Prior art date
Application number
PCT/JP2014/076777
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/076777 priority Critical patent/WO2016056060A1/ja
Publication of WO2016056060A1 publication Critical patent/WO2016056060A1/ja

Links

Images

Classifications

    • 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
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt

Definitions

  • the present invention relates to a vector setting method in a computer that supports multi-queue technology.
  • a plurality of IO commands are managed using a queue structure.
  • an IO process is started, an IO command is enqueued into the queue, and when an IO response is received, the IO command is dequeued from the queue.
  • the IO adapter has an IO adapter core that executes an IO process between the IO adapter and the opposing device.
  • the computer instructs the IO adapter core a queue including the IO command to be processed, and the IO adapter core executes the IO processing for the instructed queue.
  • IO adapters having a plurality of IO adapter cores are increasing.
  • multiple IO adapter cores can perform IO processing corresponding to the queue in parallel to improve IO performance. There are things to plan.
  • the virtualization function unit In a computer system equipped with a virtualization function unit such as a hypervisor, the virtualization function unit logically divides physical resources such as an IO adapter and allocates it to a plurality of virtual machines.
  • a guest OS runs on a plurality of virtual machines.
  • exclusive control between the guest OSs is required.
  • the hypervisor assigns a queue to each guest OS, the above-described exclusive control between the guest OSs becomes unnecessary.
  • an interrupt destination CPU core can be set for each vector (MSI-X interrupt vector).
  • a queue is associated with a vector, and a queue used by the CPU core (corresponding to the queue is set so that the CPU core at the time of IO processing startup matches the CPU core of the IO interrupt destination.
  • the cache hit rate for the cache of the CPU core is improved.
  • the CPU core can improve the IO performance because it does not need to access the cache memory of the CPU.
  • a register for specifying the identification number of the IO adapter core and a register for specifying the identification number of the guest OS are specified in order for the device driver to specify a queue for executing the response process when an interrupt occurs.
  • the cause of the interrupt is specified by accessing.
  • a process of accessing a register from a CPU core on a computer using PCI MMIO has a higher processing cost than a memory access of a computer, and causes a deterioration in IO performance.
  • the device driver identifies the interrupt factor based on the vector number when an interrupt occurs. can do. This method eliminates the need for register access and improves IO performance.
  • Patent Document 1 Japanese Patent Application Laid-Open No. 2004-133260 describes that when a vector is depleted and one vector cannot be assigned to each CPU core, the CPU cores are grouped and one vector is assigned to a plurality of CPU cores. As a result, multi-queue is realized with a small number of vectors.
  • Patent Document 1 does not consider sharing other information such as an IO adapter core and a guest OS in one vector. In other words, Patent Document 1 considers only one sharing method. There are various ways to share queues, share vectors, and share other ways to reduce the number of vectors. In each sharing method, the number of vectors and the number of queues are different, and the influence on the IO performance is also different.
  • a computer that automatically selects an optimal sharing method from a plurality of sharing methods is realized in consideration of the number of vectors that can be secured by the computer and the effect on IO performance.
  • a typical example of the invention disclosed in the present application is as follows. That is, a computer that operates one or more operating systems, and the computer is connected as physical resources to at least one processor, a storage device connected to the at least one processor, and the at least one processor.
  • At least one IO adapter wherein the at least one processor includes a plurality of processor cores, the IO adapter includes a plurality of IO adapter cores, and performs a plurality of IO processes in parallel using a plurality of queues.
  • the plurality of queues are assigned to a plurality of interrupt factors defined by a combination of the plurality of processor cores, the plurality of IO adapter cores, and the one or more operating systems, and the computer
  • the vector, queue, And an IO adapter driver that manages the association of interrupt factors and controls the IO adapter, and is associated with the definition information of the sharing method, the number of vectors set in the computer, and the number of queues set in the computer Holds sharing order information for storing a plurality of data, and the sharing method reduces the number of vectors set in the computer by controlling the association of a plurality of vectors, the plurality of queues, and the plurality of interrupt factors.
  • the IO adapter driver can secure the one or more operating systems by referring to the sharing order information. Selecting the data including the definition information corresponding to the sharing method that is equal to or less than the number of the vectors; Based on the selected data, the one or more operating systems are requested to secure the vector, and when the one or more operating systems succeed in securing the vector, based on the selected data, Set the plurality of vectors and the plurality of queues, and generate association information for managing associations between the plurality of vectors, the plurality of queues, and the plurality of interrupt factors based on the selected data. It is characterized by doing.
  • the IO adapter driver can set the vector and the queue based on the sharing order information so as to maintain the multi-queue function and reduce the influence on the IO performance.
  • FIG. 3 is a block diagram illustrating a configuration of a computer according to the first embodiment. It is explanatory drawing which shows the relationship between the sharing method of Example 1, and the influence which acts on the performance of IO processing. It is explanatory drawing which shows an example of the performance information of Example 1. FIG. It is explanatory drawing which shows an example of the performance information of Example 1.
  • FIG. 6 is an explanatory diagram illustrating an example of vector-factor association information according to Embodiment 1.
  • FIG. 6 is an explanatory diagram illustrating an example of vector-factor association information according to Embodiment 1.
  • FIG. 6 is an explanatory diagram illustrating an example of vector-factor association information according to Embodiment 1.
  • FIG. 6 is an explanatory diagram illustrating an example of vector-factor association information according to Embodiment 1.
  • FIG. 1 is a block diagram illustrating a configuration of a computer according to the first embodiment. It is explanatory drawing which shows the relationship between the sharing method of Example 1, and the influence which acts on the performance of IO
  • FIG. 6 is a flowchart for describing sharing order information generation processing executed by the computer according to the first embodiment
  • FIG. 10 is an explanatory diagram illustrating a state of performance information in the sharing order information generation process according to the first embodiment.
  • FIG. 10 is an explanatory diagram illustrating a state of performance information in the sharing order information generation process according to the first embodiment. It is explanatory drawing which shows an example of the sharing order information of Example 1.
  • FIG. 6 is a flowchart for explaining vector and queue setting processing executed by the computer according to the first embodiment
  • 3 is a flowchart illustrating an IO process executed by the computer according to the first embodiment.
  • FIG. 1 is a block diagram illustrating an example of the configuration of a computer according to the first embodiment.
  • the computer 100 includes one or more CPUs 110, a main storage device 120, and one or more IO adapters 130 as computer resources.
  • the CPU 110, the main storage device 120, and the IO adapter 130 are connected to each other via an internal bus or the like.
  • the computer 100 shown in FIG. 1 includes two CPUs 110-1 and 110-2 and one IO adapter 130.
  • the virtual environment 140 is constructed using the computer resources described above.
  • the virtual environment 140 is managed by the hypervisor 141.
  • the hypervisor 141 generates a plurality of virtual machines (not shown) by logically dividing the computer resources, and operates the guest OS 142 on each virtual machine.
  • three guest OSs 142-1, 142-2, and 142-3 are managed by the hypervisor 141.
  • CPU 110 executes a program stored in main storage device 120.
  • Various functions of the computer 100 can be realized by the CPU 110 executing the program.
  • a program when mainly described, it indicates that the program is being executed by the CPU 110.
  • the CPU 110 has a plurality of CPU cores 111 that execute arithmetic processing.
  • the CPU 110-1 has two CPU cores 111-1 and 111-2
  • the CPU 110-2 has two CPU cores 111-3 and 111-4.
  • the CPU core 111 has a cache memory (not shown), and the CPU 110 has a cache memory accessible to all the CPU cores 111.
  • the main storage device 120 stores a plurality of programs executed by the CPU 110 and information used when the plurality of programs are executed.
  • the main storage device 120 may be a memory, for example.
  • the main storage device 120 may be either a volatile memory or a nonvolatile memory.
  • the entities of the hypervisor 141 and the guest OS 142 exist in the main storage device 120.
  • the main storage device 120 also stores a program for realizing the IO adapter driver 121, performance information 123, and vector-factor association information 124. Further, a plurality of queues 122 are set in a part of the storage area of the main storage device 120.
  • the IO adapter 130 is an adapter that connects the computer 100 and other devices. Examples of other devices connected to the computer 100 include a storage system and a network device. The present invention is not limited to the type of device connected to the computer 100.
  • the IO adapter driver 121 When the IO adapter driver 121 receives an IO request from the guest OS 142 on the OS running on the computer 100 or on the virtual computer, the IO adapter driver 121 sets a command in one queue (transmission queue) 122, and the command is set in the queue 122. This is notified to the IO adapter 130.
  • OS running on the computer 100 or the guest OS 142 is not distinguished on the virtual computer, it is simply described as OS.
  • the IO adapter 130 When the IO adapter 130 receives a notification from the IO adapter driver 121, the IO adapter 130 reads a command from the predetermined queue 122 and executes an IO process corresponding to the command. The IO adapter 130 sets an IO completion notification in one queue (response queue) 122 after the IO processing is completed. Further, the IO adapter 130 notifies the IO adapter driver 121 that an IO completion notification has been set in the queue 122. The notification includes a vector number.
  • the IO adapter driver 121 identifies an interrupt factor based on the vector number, reads an IO completion notification from a predetermined queue 122, and notifies the OS of the completion of the IO processing.
  • the interrupt factor of the computer 100 running one OS can be defined as a combination of the CPU core 111 and the IO adapter core 131.
  • An interrupt factor in the computer 100 that provides the virtual environment 140 can be defined as a combination of the CPU core 111, the IO adapter core 131, and the guest OS 142.
  • one queue 122 can be assigned to one interrupt factor, or one queue 122 can be assigned to a plurality of interrupt factors.
  • the contents of the invention will be described on the premise of the computer 100 that provides the virtual environment 140.
  • the IO processing performance is maximized and the number of necessary vectors is maximized.
  • (Condition 1) One vector is reserved for each CPU core 111 in order to process IOs in parallel with a plurality of CPU cores 111.
  • (Condition 2) In order to determine the guest OS 142, one vector is secured for each guest OS 142.
  • (Condition 3) In order to determine the IO adapter core 131, one vector is secured for each IO adapter core 131.
  • (Condition 4) One guest OS 142 is set so that all CPU cores 111 and all IO adapter cores 131 can be used.
  • the number of vectors is required only for the value calculated using the following equation (2), for example. In the example shown in FIG. 1, it is calculated as in the following formula (3).
  • the computer 100 shown in FIG. 1 needs 24 vectors and 24 queues 122.
  • the number of vectors required for the computer system is also described as the necessary vector number, and the number of queues 122 required for the computer system is also described as the required queue number.
  • Methods for reducing the number of necessary vectors include a method of assigning a plurality of factors to one vector and a method of assigning one vector to each group composed of a plurality of CPU cores 111 instead of each CPU core 111. .
  • a control method for reducing the number of necessary vectors by controlling vector allocation is simply referred to as a sharing method.
  • FIG. 2 is an explanatory diagram showing the relationship between the sharing method of Example 1 and the effect on the performance of IO processing. In FIG. 2, five sharing methods are described.
  • the second sharing method from the top in FIG. 2 is a sharing method that reduces the number of necessary vectors by assigning one vector to each group composed of a plurality of IO adapter cores 131.
  • one vector is associated with a plurality of IO adapter cores 131 in one IO adapter 130.
  • the sharing method since the queue 122 needs to be independent for each IO adapter core 131, the number of necessary queues cannot be reduced. Therefore, a plurality of queues 122 are associated with one vector.
  • the third sharing method from the top in FIG. 2 is a sharing method that reduces the number of necessary vectors by allocating one vector to each group composed of a plurality of guest OSs 142.
  • the sharing method since the queue 122 needs to be independent for each guest OS 142, the number of necessary queues cannot be reduced. Therefore, a plurality of queues 122 are associated with one vector.
  • Two or more sharing methods shown in FIG. 2 can be combined. That is, a plurality of sharing methods can be combined into one sharing method.
  • performance information 123 including definition information of all applicable sharing methods is set in the computer 100 in advance. Details of the performance information 123 will be described later with reference to FIGS. 3A and 3B.
  • the vector-factor association information 124 stores information for managing the association of vector numbers, queues 122, and interrupt factors. Details of the vector-factor association information 124 will be described later with reference to FIGS. 4A, 4B, and 4C.
  • the sharing order information 125 stores the definition information of the sharing method applied to the computer 100 and the application order of the sharing method. As will be described later, the sharing order information 125 is generated based on the performance information 123. Details of the sharing order information 125 will be described later with reference to FIG.
  • 3A and 3B are explanatory diagrams illustrating an example of the performance information 123 according to the first embodiment.
  • the performance information 123 includes a plurality of entries including sharing method definition information.
  • One sharing method corresponds to one entry.
  • the entry includes an ID 301, a sharing method 302, a performance deterioration 303, a vector number 304, and a queue number 305.
  • ID 301 is a column for storing an identifier for uniquely identifying an entry of the performance information 123.
  • the sharing method 302 is a column that stores specific contents of the sharing method, that is, definition information of the sharing method.
  • the sharing method of the present embodiment is roughly divided into two types of sharing methods.
  • One sharing method is a sharing method that reduces only the necessary number of vectors by allocating one vector to a plurality of interrupt factors or a plurality of CPU cores 111 and the like.
  • Another sharing method is a sharing method that reduces the number of necessary vectors and the number of necessary queues by assigning one vector to a plurality of interrupt factors or a plurality of CPU cores 111.
  • a combination of a plurality of sharing methods can be set as one sharing method.
  • the sharing method 302 stores combinations of IDs 301 of the respective sharing methods.
  • the first sharing method in FIG. 2 corresponds to an entry whose ID 301 is “2”.
  • the second sharing method in FIG. 2 corresponds to an entry whose ID 301 is “3”.
  • the third sharing method in FIG. 2 corresponds to an entry whose ID 301 is “4”.
  • the fourth sharing method in FIG. 2 corresponds to an entry whose ID 301 is “5”.
  • the fifth sharing method in FIG. 2 corresponds to each entry whose ID 301 is “6” to “8”.
  • each entry whose ID 301 is “10” to “43” stores a combination of sharing methods whose ID 301 is “1” to “9”.
  • the sharing method 302 whose ID 302 is “10” indicates that the sharing method is a combination of the sharing method whose ID 301 is “2” and the sharing method whose ID 302 is “3”.
  • the performance degradation 303 is a column that stores a value indicating the degree of degradation of the performance of the IO processing when the sharing method corresponding to the sharing method 302 is applied to the computer 100.
  • the performance value of the IO processing of the computer 100 when the sharing method is not applied is used as a reference. For example, when the performance deterioration 303 is “0”, it indicates that there is no deterioration in the performance of the IO processing. When the performance degradation 303 is “12”, it indicates that the performance of the IO processing is reduced by 12% from the performance of the IO processing to which the sharing method is not applied.
  • the IO adapter driver 121 selects a plurality of candidate sharing methods from the sharing methods set in the performance information 123, and sets the application order to the selected sharing methods, thereby sharing order.
  • Information 125 is generated.
  • the application order of sharing methods that is, the order of sharing methods to be preferentially applied to the computer 100.
  • the IO processing performance value (IOPS) is used as the metrics described above.
  • the IO adapter driver 121 determines the application order so that a sharing method with a low IO performance degradation rate after the sharing method is applied is preferentially applied.
  • the rate of decrease in IO performance after the sharing method is applied depends on the system configuration of the CPU 110, the main storage device 120, the IO adapter 130, and the like. Therefore, the user prepares the performance information 123 by measuring the rate of decrease in IO performance in advance using the system to be used.
  • the performance information 123 in FIGS. 3A and 3B is generated by measuring the rate of decrease in IO performance in the computer 100.
  • the user changes the configuration of the computer 100 within a range that does not affect the IO performance, such as removing a PCI board that is not necessary for measurement from the computer 100 in advance in order to secure a vector during system operation.
  • the vector number 304 is a column that stores the number of necessary vectors when the sharing method corresponding to the sharing method 302 is applied.
  • the queue number 305 is a column that stores the necessary queue number when the sharing method corresponding to the sharing method 302 is applied.
  • 4A, 4B, and 4C are explanatory diagrams illustrating an example of the vector-factor association information 124 according to the first embodiment.
  • the number of guest OSs 142 is “3”
  • the number of IO adapter cores 131 is “2”.
  • FIG. 4A shows vector-factor association information 124-1 when the sharing method with ID 301 of “6” is applied.
  • FIG. 4B shows vector-factor association information 124-2 when the sharing method whose ID 301 is “11” is applied.
  • FIG. 4C shows vector-factor association information 124-2 when the sharing method whose ID 301 is “16” is applied.
  • the details of the vector-factor association information 124 will be described with reference to FIG. 4A as an example.
  • the vector-factor association information 124 has one entry for one vector.
  • the entry includes a vector number 401, a queue number 402, a guest OS number 403, a CPU core number 404, and an IO adapter core number 405.
  • the vector number 401 is a column that stores an identification number for uniquely identifying a vector.
  • the queue number 402 is a column that stores an identification number for uniquely identifying the queue 122.
  • the guest OS number 403 is a column that stores an identification number for uniquely identifying the guest OS 142.
  • the CPU core number 404 is a column that stores an identification number for uniquely identifying the CPU core 111.
  • the IO adapter core number 405 is a column that stores an identification number for uniquely identifying the IO adapter core 131.
  • One or more queues 122 can be assigned to one vector. Further, one or more interrupt factors (a combination of the guest OS 142, the CPU 110, and the IO adapter core 131) can be assigned to one queue 122. The association of the vector, the queue 122, and the interrupt factor is determined based on the sharing method.
  • the computer 100 executes the generation process of the sharing order information 125 at a predetermined timing. For example, when the performance information 123 is input to the computer 100 or when a process start instruction is received from the user, the generation process described above is executed. Details of the generation processing of the sharing order information 125 will be described later with reference to FIG.
  • the computer 100 executes the vector and queue 122 setting process based on the sharing order information 125 when the guest OS 142 is activated. By this processing, vector-factor association information 124 is generated. Details of the vector and queue 122 setting process will be described later with reference to FIG.
  • FIG. 5 is a flowchart illustrating a process for generating the sharing order information 125 executed by the computer 100 according to the first embodiment.
  • 6A and 6B are explanatory diagrams illustrating the state of the performance information 123 in the generation processing of the sharing order information 125 according to the first embodiment.
  • FIG. 7 is an explanatory diagram illustrating an example of the sharing order information 125 according to the first embodiment.
  • the computer 100 starts generating the sharing order information 125 at a predetermined timing. At this time, the computer 100 calls the IO adapter driver 121.
  • the IO adapter driver 121 acquires the performance information 123 stored in the main storage device 120, and rearranges the entries of the performance information 123 based on a predetermined standard (step S501). For example, the following processing is executed.
  • the IO adapter driver 121 rearranges the entries of the performance information 123 so that the value of the performance deterioration 303 of the performance information 123 is in ascending order. At this time, if there are entry groups having the same performance degradation 303 value, the IO adapter driver 121 rearranges the entries included in the entry group so that the ID 301 value is in ascending order.
  • the IO adapter driver 121 searches for an entry group having the same performance degradation 303 value.
  • the IO adapter driver 121 rearranges the entries included in the searched entry group so that the value of the vector number 304 is in ascending order.
  • the value of the performance deterioration 303 is the same for the entry whose ID 301 is “5” and the entry whose ID 301 is “11”. Therefore, the IO adapter driver 121 rearranges the entries in ascending order of the vector number 304. That is, the entries are rearranged in the order of the entry whose ID 301 is “11” and the entry whose ID 301 is “5”.
  • step S501 is a process for rearranging the order of sharing methods to be preferentially applied to the computer 100, that is, the entries of the performance information 123 in the application order. Therefore, the sharing method corresponding to the upper entry is a candidate for a sharing method that is preferentially applied to the computer 100.
  • the IO adapter driver 121 deletes an entry that matches a predetermined condition from the performance information 123. Specifically, the processing from step S502 to step S508 is executed.
  • the IO adapter driver 121 selects one entry from the performance information 123 (step S502).
  • the entry selected from the performance information 123 is also referred to as a first entry.
  • the IO adapter driver 121 selects the first entry in order from the top of the performance information 123.
  • the IO adapter driver 121 determines whether or not there is an entry lower than the first entry (step S503). That is, it is determined whether or not there is an entry whose application order is lower than that of the first entry.
  • the IO adapter driver 121 selects one entry to be compared from the entries lower than the first entry (step S504).
  • the entry to be compared is also referred to as a second entry.
  • the IO adapter driver 121 determines whether or not the value of the vector number 304 of the second entry is larger than the value of the vector number 304 of the first entry (step S505).
  • the IO adapter driver 121 proceeds to step S507.
  • the IO adapter driver 121 deletes the second entry from the performance information 123 (step S506). . Thereafter, the IO adapter driver 121 proceeds to step S507. As a result, a sharing method that reduces the IO processing performance and increases the number of necessary vectors is excluded.
  • step S507 the IO adapter driver 121 determines whether there is a selectable entry among entries lower than the first entry (step S507). Specifically, the IO adapter driver 121 determines whether or not there is an entry that is lower than the first entry and is not selected as the second entry.
  • the IO adapter driver 121 If it is determined that there is a selectable entry among the entries lower than the first entry, the IO adapter driver 121 returns to step S504 and executes the same processing.
  • the IO adapter driver 121 If it is determined that there is no selectable entry among the entries lower than the first entry, the IO adapter driver 121 returns to step S502 and executes the same processing.
  • step S503 If it is determined in step S503 that there is no entry lower than the first entry, the IO adapter driver 121 deletes the column of the performance degradation 303 of the entry (step S508), and then ends the process.
  • sharing order information 125 as shown in FIG. 7 is generated.
  • the ID 701, the sharing method 702, the vector number 703, and the queue number 704 included in the entry of the sharing order information 125 are the same as the ID 301, the sharing method 302, the vector number 304, and the queue number 305, respectively.
  • the IO adapter driver 121 stores specific processing contents instead of the identification number of the sharing method.
  • the IO adapter driver 121 gives priority to a sharing method in which the number of vectors and the number of queues 122 set in the computer 100 is large and the IO performance of the computer 100 is high based on the sharing order information 125. Apply.
  • FIG. 8 is a flowchart for explaining the vector and queue 122 setting process executed by the computer 100 according to the first embodiment.
  • the computer 100 starts the vector and queue 122 setting processing. At this time, the computer 100 calls the IO adapter driver 121.
  • the IO adapter driver 121 selects one sharing method from the sharing order information 125 according to the application order (step S801). Since the entries of the sharing order information 125 according to the first embodiment are arranged in the application order, the IO adapter driver 121 selects entries in order from the entry on the sharing order information 125.
  • the IO adapter driver 121 sets the necessary vector number and the necessary queue number based on the vector number 703 and the queue number 704 of the selected entry (step S802). At this time, no vector or queue is set in the computer 100.
  • the IO adapter driver 121 requests the OS to secure vectors for the value of the vector number 703 of the selected entry (step S803).
  • the IO adapter driver 121 waits for a response from the OS.
  • the IO adapter driver 121 requests the OS to secure the necessary number of vectors. In the case of a virtual environment, the IO adapter driver 121 requests the hypervisor 141 to secure the necessary number of vectors via the guest OS 142.
  • the IO adapter driver 121 determines based on the response from the OS whether or not the OS has secured 703 vectors (step S804).
  • step S801 the IO adapter driver 121 selects an entry having the next highest application order after the currently selected entry, and thereafter executes the same processing.
  • the IO adapter driver 121 When the OS receives a response indicating that the number of vectors of 703 can be secured, the IO adapter driver 121 generates vector-factor association information 124 based on the selected entry (step S805). Thereafter, the IO adapter driver 121 ends the process. Specifically, the IO adapter driver 121 sets the queue 122 by the value of the queue number 704, and associates the vector, the queue, and the factor based on the sharing method 702, thereby obtaining the vector-factor association information 124. Generate.
  • FIG. 8 the process of FIG. 8 will be described using a specific example.
  • the hardware configuration of the computer 100 and the configuration of the virtual environment 140 are as shown in FIG. It is assumed that the number of vectors that can be secured by the hypervisor 141 is “5”. Further, it is assumed that the sharing order information 125 is in a state as shown in FIG.
  • the IO adapter driver 121 selects the sharing method whose ID 701 is “1”. In the sharing method in which the ID 701 is “1”, since the necessary vector number and the necessary queue number are “24”, the IO adapter core sets the necessary vector number to “24” and the necessary queue number to “24”.
  • the IO adapter driver 121 requests the three guest OSs 142 to secure “24” vectors via the hypervisor 141. However, since the hypervisor 141 cannot secure the requested vector, the IO adapter driver 121 determines that securing of the vector has failed.
  • the IO adapter driver 121 selects the sharing method whose ID 701 is “2”. In the sharing method with the ID 701 of “2”, the necessary vector number and the necessary queue number are “12”, so the IO adapter core sets the necessary vector number to “12” and the necessary queue number to “12”.
  • the IO adapter driver 121 requests the three guest OSs 142 to secure “12” vectors via the hypervisor 141. However, since the hypervisor 141 cannot secure the requested vector, the IO adapter driver 121 determines that securing of the vector has failed.
  • the IO adapter driver 121 selects the sharing method whose ID 701 is “4”.
  • the necessary vector number is “8” and the necessary queue number is “24”, so the IO adapter core sets the necessary vector number to “8” and the necessary queue number to “24”. And set.
  • the IO adapter driver 121 requests the three guest OSs 142 to secure “8” vectors via the hypervisor 141. However, since the hypervisor 141 cannot secure the requested vector, the IO adapter driver 121 determines that securing of the vector has failed.
  • the IO adapter driver 121 selects the sharing method whose ID 701 is “11”. In the sharing method in which the ID 701 is “11”, since the necessary vector number is “4” and the necessary queue number is “12”, the IO adapter core sets the necessary vector number to “4” and the necessary queue number to “12”. And set.
  • the IO adapter driver 121 requests the three guest OSs 142 to secure “4” vectors via the hypervisor 141. In this case, since the hypervisor 141 can secure the requested vector, the IO adapter driver 121 determines that the vector has been successfully secured.
  • the IO adapter driver 121 generates the vector-factor association information 124 by associating the vector, the queue 122, and the interrupt factor based on the sharing method whose ID 701 is “11”. As a result, the vector-factor association information 124 shown in FIG. 4B is generated.
  • FIG. 9 is a flowchart illustrating processing executed by the IO adapter driver 121 in the IO processing according to the first embodiment.
  • the IO adapter driver 121 When the IO adapter driver 121 detects the occurrence of an IO interrupt, the IO adapter driver 121 starts processing described below.
  • the IO adapter driver 121 determines whether or not a plurality of IO adapter cores 131 share one vector (step S901). For example, the IO adapter driver 121 determines whether or not a plurality of IO adapter cores 131 share one vector by referring to the vector-factor association information 124. Further, the IO adapter driver 121 can make the same determination by referring to the sharing method 702 of the sharing order information 125 instead of the vector-factor association information 124.
  • the IO adapter driver 121 proceeds to step S903. In this case, since the IO adapter core 131 is uniquely determined, the IO adapter driver 121 does not need to refer to the IO adapter core determination register 133.
  • the IO adapter driver 121 When it is determined that a plurality of IO adapter cores 131 share one vector, the IO adapter driver 121 refers to the IO adapter core determination register 133 and identifies the IO adapter core 131 (step S902). Thereafter, the IO adapter driver 121 proceeds to step S903.
  • step S903 the IO adapter driver 121 determines whether or not a plurality of guest OSs 142 share one vector.
  • the process in step S903 may use the same method as in step S901.
  • the IO adapter driver 121 proceeds to step S905. In this case, since the guest OS 142 is uniquely determined, the IO adapter driver 121 does not need to refer to the guest determination register 134.
  • the IO adapter driver 121 When it is determined that a plurality of guest OSs 142 share one vector, the IO adapter driver 121 refers to the guest determination register 134 and identifies the guest OS 142 (step S904). Thereafter, the IO adapter driver 121 proceeds to step S905.
  • the IO adapter driver 121 refers to the vector-factor association information 124 based on the vector number, the identification number of the IO adapter core 131 related to the interrupt, and the identification number of the guest OS 142, and sets the queue 122 associated with the vector. Specify (step S905).
  • the IO adapter driver 121 refers to the vector-factor association information 124 and searches for an entry in which the vector number 401 matches the vector number notified at the time of interruption. Further, the IO adapter driver 121 includes the guest OS number 403 and the IO adapter core number 405 in the row included in the searched entry, the identification number of the specified guest OS 142 and the identification of the specified IO adapter core 131. Find the line that matches the number. The queue corresponding to the queue number 402 of the retrieved row becomes the queue 122 that is the target of IO processing.
  • the IO adapter driver 121 executes an IO response process for the identified queue 122 (step S906), and then ends the process.
  • the IO adapter driver 121 generates the sharing order information 125 based on the performance information 123 registered by the user.
  • the sharing order information 125 may be registered in the computer 100 in advance.
  • a plurality of sharing order information 125 may be set for each type of guest OS 142 and each type of application executed on the guest OS 142.
  • a plurality of sharing order information 125 is presented to the user, and the sharing order information 125 to be applied by the user is selected.
  • the IO adapter driver 121 may select the optimal sharing order information 125 from the configuration of the computer 100 in cooperation with the hypervisor 141 or the like.
  • the performance information 123 and the sharing order information 125 are data formats in a table format, but the present invention is not limited to this.
  • the data format of the performance information 123 and the sharing order information 125 may be a CSV format.
  • the IO adapter driver 121 maintains a multi-queue function based on the sharing order information 125, suppresses a decrease in IO performance, and the required number of vectors is less than or equal to the number of vectors that can be secured by the OS.
  • This sharing method can be automatically applied to the computer 100. Also, the user can enumerate a plurality of sharing methods, reduce management costs such as applying to the computer 100 as appropriate, and apply the optimum sharing method to the computer 100.
  • this invention is not limited to the above-mentioned Example, Various modifications are included. Further, for example, the above-described embodiments are described in detail for easy understanding of the present invention, and are not necessarily limited to those provided with all the described configurations. Further, a part of the configuration of each embodiment can be added to, deleted from, or replaced with another configuration.
  • each of the above-described configurations, functions, processing units, processing means, and the like may be realized by hardware by designing a part or all of them with, for example, an integrated circuit.
  • 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 computer, and a processor included in the computer 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 it constitute the present invention.
  • Examples of storage media for supplying such program codes include flexible disks, CD-ROMs, DVD-ROMs, hard disks, SSDs (Solid State Drives), optical disks, magneto-optical disks, CD-Rs, magnetic tapes, A non-volatile memory card, ROM or the like is used.
  • program code for realizing the functions described in this embodiment can be implemented by a wide range of programs or script languages such as assembler, C / C ++, Perl, Shell, PHP, Java, and the like.
  • the program code is stored in a storage means such as a hard disk or memory of a computer or a storage medium such as a CD-RW or CD-R.
  • a processor included in the computer may read and execute the program code stored in the storage unit or the storage medium.
  • control lines and information lines indicate those that are considered necessary for the explanation, and do not necessarily indicate all the control lines and information lines on the product. All the components may be connected to each other.

Abstract

 OSが稼動する計算機であって、プロセッサ、記憶装置及びIOアダプタを備え、IOアダプタは、複数のキューを用いて並列的に複数のIO処理を実行し、計算機は、IOアダプタドライバを備え、共有方法の定義情報、ベクタの数、及びキューの数が対応づけられた複数のデータを格納する共有順序情報を保持し、共有方法は計算機に設定するベクタの数を削減する制御方法であって、IOアダプタドライバは、共有順序情報を参照して、OSが確保可能なベクタの数以下となる共有方法に対応する定義情報を含むデータを選択し、選択されたデータに基づいてOSにベクタの確保を要求し、OSがベクタの確保に成功した場合、選択されたデータに基づいて、複数のベクタ及び複数のキューを設定し、ベクタ、キュー、及び割り込み要因の間の対応付けを管理する関連付け情報を生成する。

Description

計算機及びベクタの設定方法
 本発明は、マルチキュー技術に対応した計算機におけるベクタの設定方法に関する。
 従来、ネットワーク装置又はストレージシステムに対するIO処理は、キュー構造を用いて複数のIOコマンドが管理される。IO処理の起動時には、キューにIOコマンドをエンキューし、IO応答時にはキューからIOコマンドをデキューする。
 複数のCPUコアを有する計算機システムでは、キューのデータの整合性を保つ排他制御を実現するために、1つのキューを同時に操作できるのは1つのCPUコアのみとする必要がある。
 近年、計算機が有するCPUコアの数は増加している。前述したように、1つのキューを同時に操作できるのは1つのCPUコアだけであるため、1つキューのみを有するシングルキューのシステム環境では、CPUコアの数の増加による恩恵を得られない。これに対し、複数のキューを有するマルチキューのシステム環境では、複数のCPUコアが並列的にIO処理を実行することによって、IO性能を向上できる。
 また、IOアダプタは、IOアダプタと対向装置との間のIO処理を実行するIOアダプタコアを有する。計算機はIOアダプタコアに対し処理対象のIOコマンドが含まれるキューを指示し、IOアダプタコアは指示されたキューに対しIO処理を実行する。
 近年、複数のIOアダプタコアを有するIOアダプタが増加している。複数のIOアダプタコアを搭載するIOアダプタの中には、IOアダプタコア毎にキューを割り当てることによって、複数のIOアダプタコアが並列的にキューに対応するIO処理を実行し、IO性能の向上を図るものも存在する。
 ハイパバイザ等の仮想化機能部を備える計算機システムでは、仮想化機能部がIOアダプタ等の物理リソースを論理的に分割し、複数の仮想計算機に割り当てる。なお、複数の仮想計算機上ではゲストOSが稼働する。複数のゲストOSが同一のキューを操作できるように制御する場合、ゲストOS間の排他制御が必要となる。しかし、ハイパバイザが、ゲストOS毎にキューを割り当てることによって、前述したゲストOS間の排他制御が必要なくなる。
 したがって、最大のIO性能を得るためには、下式(1)で算出された値だけキューが必要となる。すなわち、CPUコア、IOアダプタコア、及びゲストOSの一つの組み合わせに対して一つのキューが対応づけられた場合、IO性能が最大となる。
Figure JPOXMLDOC01-appb-M000001
 MSI-Xでは、ベクタ(MSI-X割り込みベクタ)毎に、割り込み先のCPUコアを設定できる。マルチキューのシステム環境において、キューをベクタに対応付け、かつ、IO処理の起動時のCPUコアとIO割り込み先のCPUコアが一致するように、当該CPUコアが使用するキュー(当該キューに対応づけられたベクタ)を選択することによって、CPUコアが有するキャッシュに対するキャッシュヒット率が向上する。これによって、CPUコアは、CPUが有するキャッシュメモリにアクセスする必要がないためIO性能を向上できる。
 また、従来のIO応答処理では、割り込み発生時に応答処理を実行するキューを特定するため、デバイスドライバが、IOアダプタコアの識別番号を特定するためのレジスタ、及びゲストOSの識別番号を特定するレジスタへのアクセスによって、割り込み要因を特定する。
 一般的に、PCIのMMIOを用いて計算機上のCPUコアからレジスタにアクセスする処理は、計算機のメモリアクセスよりも処理コストが高く、IO性能の劣化の要因となる。
 これに対し、ベクタ番号と割り込み要因(IOアダプタコアの識別番号及びゲストOSの識別番号等の組み合わせ)とを対応づけることによって、デバイスドライバは、割り込み発生時にベクタ番号に基づいて、割り込み要因を特定することができる。この方法では、レジスタアクセスが不要となるため、IO性能が向上する。
 したがって、計算機が式(1)で算出されたキュー数と同じ数のベクタを確保することによって、キャッシュヒット率が向上し、また、レジスタへのアクセスを削減できるため、計算機におけるIO性能を向上できる。
米国特許第8255577号明細書
 CPUコア、ゲストOS、及びIOアダプタコアのそれぞれの数の増加に伴って、必要となるキューの数も増加する。一方、MSI-Xに対応した計算機が確保できるベクタの数には限りがある。そのため、計算機が、IO性能の向上のために必要となるキュー数分のベクタを確保できない可能性がある。
 確保可能なベクタの数が必要キュー数より少ない場合、これに対応する方法として、マルチキューのシステム環境をシングルキューのシステム環境として動作させる方法が考えられる。しかし、この方法では、前述のマルチキューによるIO性能の向上効果が失われる。
 また、マルチキューのシステム環境を維持しつつ、ベクタの数を削減する方法として特許文献1のような技術が知られている。特許文献1では、ベクタが枯渇し、CPUコア毎に1つのベクタを割り当てることができなかった場合に、CPUコアをグルーピングし、1つのベクタを複数のCPUコアに割り当てることが記載されている。これによって、少ないベクタの数でマルチキューを実現している。
 しかし、特許文献1では、IOアダプタコア及びゲストOS等その他の情報を、一つのベクタに共有させることは考慮されていない。すなわち、特許文献1では一つの共有方法しか考慮されていない。キューを共有する方法、ベクタを共有する方法、その他のベクタ数を削減する共有方法は、さまざま考えられる。各共有方法では、ベクタの数、及びキューの数が異なり、また、IO性能へ与える影響も異なる。
 そのため、ユーザが一つ一つの共有方法を計算機に適用することによって、最適な共有方法を決定することは困難である。また、システム構成が異なる計算機システム間では、それまでの利用してきた共有方法をそのまま適用することができない。
 本発明では、計算機が確保可能なベクタの数及びIO性能へ与える影響を考慮して、複数の共有方法の中から最適な共有方法を自動的に選択する計算機を実現する。
 本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、一つ以上のオペレーティングシステムが稼動する計算機であって、前記計算機は、物理リソースとして、少なくとも一つのプロセッサ、前記少なくとも一つのプロセッサに接続される記憶装置、及び前記少なくとも一つのプロセッサに接続される少なくとも一つのIOアダプタを備え、前記少なくとも一つのプロセッサは、複数のプロセッサコアを含み、前記IOアダプタは、複数のIOアダプタコアを含み、複数のキューを用いて並列的に複数のIO処理を実行し、前記複数のプロセッサコア、前記複数のIOアダプタコア及び前記一つ以上のオペレーティングシステムの組み合わせによって定義される複数の割り込み要因に対して、前記複数のキューが割り当てられ、前記計算機は、IO割り込みに含まれるベクタ、キュー、及び割り込み要因の関連付けを管理し、前記IOアダプタを制御するIOアダプタドライバを備え、共有方法の定義情報、前記計算機に設定するベクタの数、及び前記計算機に設定するキューの数が対応づけられた複数のデータを格納する共有順序情報を保持し、前記共有方法は、複数のベクタ、前記複数のキュー、及び前記複数の割り込み要因の関連付けを制御することによって前記計算機に設定するベクタの数を削減する制御方法であって、前記IOアダプタドライバは、前記一つ以上のオペレーティングシステムに前記ベクタの確保を要求する場合、前記共有順序情報を参照して、前記一つ以上のオペレーティングシステムが確保可能な前記ベクタの数以下となる前記共有方法に対応する前記定義情報を含む前記データを選択し、前記選択されたデータに基づいて、前記一つ以上のオペレーティングシステムに前記ベクタの確保を要求し、前記一つ以上のオペレーティングシステムが前記ベクタの確保に成功した場合、前記選択されたデータに基づいて、前記複数のベクタ及び前記複数のキューを設定し、前記選択されたデータに基づいて、前記複数のベクタ、前記複数のキュー、及び前記複数の割り込み要因の間の対応付けを管理する関連付け情報を生成することを特徴とする。
 本発明によれば、IOアダプタドライバが、共有順序情報に基づいて、マルチキューの機能を維持し、かつ、IO性能への影響が少なくなるようにベクタ及びキューを設定できる。
 上記した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
実施例1の計算機の構成を説明するブロック図である。 実施例1の共有方法とIO処理の性能に与える影響との関係を示す説明図である。 実施例1の性能情報の一例を示す説明図である。 実施例1の性能情報の一例を示す説明図である。 実施例1のベクタ-要因関連付け情報の一例を示す説明図である。 実施例1のベクタ-要因関連付け情報の一例を示す説明図である。 実施例1のベクタ-要因関連付け情報の一例を示す説明図である。 実施例1の計算機が実行する共有順序情報の生成処理を説明するフローチャートである。 実施例1の共有順序情報の生成処理における性能情報の状態を示す説明図である。 実施例1の共有順序情報の生成処理における性能情報の状態を示す説明図である。 実施例1の共有順序情報の一例を示す説明図である。 実施例1の計算機が実行するベクタ及びキューの設定処理を説明するフローチャートである。 実施例1の計算機が実行するIO処理を説明するフローチャートである。
 以下、図面を用いて実施例について説明する。
 図1は、実施例1の計算機の構成の一例を説明するブロック図である。
 計算機100は、計算機資源として、一つ以上のCPU110、主記憶装置120、及び一つ以上のIOアダプタ130を備える。CPU110、主記憶装置120及びIOアダプタ130は、内部バス等を介して互いに接続される。なお、図1に示す計算機100は、2つのCPU110-1、110-2、及び一つのIOアダプタ130を備える。
 計算機100上には、前述した計算機資源を用いて仮想環境140が構築される。仮想環境140は、ハイパバイザ141によって管理される。具体的には、ハイパバイザ141は、計算機資源を論理的に分割することによって複数の仮想計算機(図示省略)を生成し、各仮想計算機上でゲストOS142を稼働させる。図1に示す例では、3つのゲストOS142-1、142-2、142-3がハイパバイザ141によって管理される。
 CPU110は、主記憶装置120に格納されるプログラムを実行する。CPU110がプログラムを実行することによって計算機100が有する各種機能を実現できる。以下の説明では、プログラムを主体に説明する場合、当該プログラムがCPU110によって実行されていることを示す。
 CPU110は、演算処理を実行するCPUコア111を複数有する。図1では、CPU110-1は2つのCPUコア111-1、111-2を有し、CPU110-2は2つのCPUコア111-3、111-4を有する。
 CPUコア111は、図示しないキャッシュメモリを有し、また、CPU110は、全てのCPUコア111がアクセス可能なキャッシュメモリを有する。
 主記憶装置120は、CPU110によって実行される複数のプログラム及び当該複数のプログラムの実行時に用いられる情報を格納する。主記憶装置120は、例えば、メモリが考えられる。なお、主記憶装置120は、揮発性のメモリ及び不揮発性のメモリのいずれであってもよい。
 ハイパバイザ141及びゲストOS142の実体は主記憶装置120に存在する。また、主記憶装置120は、IOアダプタドライバ121を実現するプログラム、並びに、性能情報123及びベクタ-要因関連付け情報124を格納する。さらに、主記憶装置120の記憶領域の一部には複数のキュー122が設定される。
 IOアダプタ130は、計算機100と他の装置と接続するアダプタである。計算機100と接続する他の装置は、例えば、ストレージシステム及びネットワーク装置等が考えられる。本発明は、計算機100と接続する装置の種類に限定されない。
 ここで、一般的なIO処理の流れについて説明する。
 IOアダプタドライバ121は、計算機100上で稼働するOS又は仮想計算機上でゲストOS142からIO要求を受け付けた場合、1つのキュー(送信キュー)122にコマンドを設定し、キュー122にコマンドが設定されたことをIOアダプタ130に通知する。
 以下の説明では、計算機100上で稼働するOS又は仮想計算機上でゲストOS142を区別しない場合、単にOSと記載する。
 IOアダプタ130は、IOアダプタドライバ121からの通知を受け付けた場合、所定のキュー122からコマンドを読み出し、当該コマンドに対応するIO処理を実行する。IOアダプタ130は、IO処理が完了した後、1つのキュー(応答キュー)122にIOの完了通知を設定する。さらに、IOアダプタ130は、キュー122にIOの完了通知が設定されたことをIOアダプタドライバ121に通知する。当該通知にはベクタ番号が含まれる。
 IOアダプタドライバ121は、ベクタ番号に基づいて、割り込み要因を特定し、また、所定のキュー122からIOの完了通知を読み出し、OSにIO処理の完了を通知する。
 なお、一つのOSが稼働する計算機100の割り込み要因は、CPUコア111及びIOアダプタコア131の組み合わせとして定義できる。また、仮想環境140を提供する計算機100における割り込み要因は、CPUコア111、IOアダプタコア131、及びゲストOS142の組み合わせとして定義できる。また、マルチキューに対応した計算機100では、1つのキュー122を1つの割り込み要因に割り当てること、又は、1つのキュー122を複数の割り込み要因に割り当てることができる。
 以上が一般的なIO処理の説明である。マルチキューを用いて、前述した一連の処理の性能を向上させるために、複数の割り込み要因に対してベクタの数及びキューの数を適切に設定し、かつ、複数の割り込み要因に対してベクタ及びキューを適切に対応づける必要がある。
 実施例1では、仮想環境140を提供する計算機100を前提として発明の内容について説明する。以下の条件を全て満たすように、計算機100にベクタを設定する場合、IO処理の性能が最大、かつ、必要となるベクタの数が最大となる。
(条件1)複数のCPUコア111に並列的にIOを処理するために、CPUコア111毎に1つのベクタを確保する。
(条件2)ゲストOS142を判定するために、ゲストOS142毎に1つのベクタを確保する。
(条件3)IOアダプタコア131を判定するために、IOアダプタコア131毎に1つのベクタを確保する。
(条件4)1つのゲストOS142が、全てのCPUコア111及び全てのIOアダプタコア131が使用できるように設定する。
 前述した4つの条件を満たすためには、ベクタの数は、例えば、下式(2)を用いて算出された値だけ必要となる。図1に示す例では、下式(3)のように算出される。
Figure JPOXMLDOC01-appb-M000002
Figure JPOXMLDOC01-appb-M000003
 さらに、ベクタ及びキュー122が1対1となるように対応づけた場合、図1に示す計算機100は、24本のベクタ及び24個のキュー122が必要となる。
 以下の説明では、計算機システムに必要とされるベクタの数を必要ベクタ数とも記載し、また、計算機システムに必要とされるキュー122の数を必要キュー数とも記載する。
 OSが確保できるベクタの数には制限がある。そのため、必要ベクタ数を削減する必要がある。必要ベクタ数を削減する方法には、1つのベクタに複数の要因を割り当てる方法、CPUコア111毎ではなく複数のCPUコア111から構成されるグループ毎に1つのベクタを割り当てる方法等の方法がある。以下の説明では、ベクタの割り当てを制御することによって必要ベクタ数を削減する制御方法を、単に共有方法と記載する。
 ここで、共有方法と、計算機100のIO処理の性能に与える影響との間の関係について説明する。
 図2は、実施例1の共有方法とIO処理の性能に与える影響との関係を示す説明図である。図2では、5つの共有方法について記載している。
 図2の上から2番目の共有方法は、複数のIOアダプタコア131から構成されるグループ毎に1つのベクタを割り当てることによって、必要ベクタ数を削減する共有方法である。例えば、1つのIOアダプタ130内の複数のIOアダプタコア131に1つのベクタを対応づける。当該共有方法の場合、IOアダプタコア131毎にキュー122が独立している必要があるため必要キュー数を削減できない。したがって、1つのベクタに対して複数のキュー122が対応づけられる。
 図2の上から3番目の共有方法は、複数のゲストOS142から構成されるグループ毎に1つのベクタを割り当てることによって、必要ベクタ数を削減する共有方法である。当該共有方法の場合、ゲストOS142毎にキュー122が独立している必要があるため必要キュー数を削減できない。したがって、1つのベクタに対して複数のキュー122が対応づけられる。
 図2に示す複数の共有方法は、2つ以上組み合わせることが可能である。すなわち、複数の共有方法を組み合わせて一つの共有方法とすることもできる。
 実施例1では、予め、適用可能な全ての共有方法の定義情報を含む性能情報123が計算機100に設定される。性能情報123の詳細は、図3A及び図3Bを用いて後述する。
 ベクタ-要因関連付け情報124は、ベクタ番号、キュー122、及び割り込み要因の関連付けを管理する情報を格納する。ベクタ-要因関連付け情報124の詳細は、図4A、図4B及び図4Cを用いて後述する。
 共有順序情報125は、計算機100に適用する共有方法の定義情報、及び共有方法の適用順番を格納する。後述するように、共有順序情報125は、性能情報123に基づいて生成される。共有順序情報125の詳細は、図7を用いて後述する。
 図3A及び図3Bは、実施例1の性能情報123の一例を示す説明図である。
 性能情報123は、共有方法の定義情報を含む複数のエントリを含む。一つの共有方法は1つのエントリに対応する。エントリは、ID301、共有方法302、性能劣化303、ベクタ数304、及びキュー数305を含む。
 ID301は、性能情報123のエントリを一意に識別するための識別子を格納するカラムである。
 共有方法302は、共有方法の具体的な内容、すなわち、共有方法の定義情報を格納するカラムである。本実施例の共有方法には、大きく分けて2つの種類の共有方法が存在する。一つの共有方法は、複数の割り込み要因又は複数のCPUコア111等に対して1つのベクタを割り当てることによって、必要ベクタ数のみを削減する共有方法である。もう一つの共有方法は、複数の割り込み要因又は複数のCPUコア111に対して1つのベクタを割り当てることによって、必要ベクタ数及び必要キュー数を削減する共有方法である。
 また、本実施例では、複数の共有方法の組み合わせを一つの共有方法として設定できる。この場合、共有方法302には、各共有方法のID301の組み合わせが格納される。
 図3Aに示すように、ID301が「1」から「9」までの各エントリには、1つの共有方法の具体的な内容が格納される。なお、性能情報123には、共有方法が適用されていないものが一つの共有方法として設定される。
 ここで、図2と性能情報123に設定される共有方法との対応関係について説明する。図2の1番目の共有方法はID301が「2」のエントリに対応する。図2の2番目の共有方法は、ID301が「3」のエントリに対応する。図2の3番目の共有方法は、ID301が「4」のエントリに対応する。図2の4番目の共有方法は、ID301が「5」のエントリに対応する。図2の5番目の共有方法は、ID301が「6」から「8」のそれぞれのエントリに対応する。
 また、ID301が「10」から「43」までの各エントリは、ID301が「1」から「9」までの共有方法の組み合わせを格納する。例えば、ID302が「10」の共有方法302は、ID301が「2」の共有方法及びID302が「3」の共有方法を組み合わせた共有方法であることを示す。
 性能劣化303は、共有方法302に対応する共有方法を計算機100に適用した場合におけるIO処理の性能の劣化の度合いを示す値を格納するカラムである。本実施例では、共有方法が適用されていない場合の計算機100のIO処理の性能値を基準とする。例えば、性能劣化303が「0」の場合、IO処理の性能に劣化がないことを示す。性能劣化303が「12」の場合、共有方法が適用されないIO処理の性能より、12パーセントだけIO処理の性能が低下することを示す。
 後述するように、IOアダプタドライバ121が、性能情報123に設定された共有方法の中から候補となる共有方法を複数選択し、選択された複数の共有方法に適用順番を設定することによって共有順序情報125を生成する。共有方法の適用順番、すなわち、優先的に計算機100に適用する共有方法の順番を決定するためには、共有方法を定量的に比較するためのメトリクスが必要となる。
 そこで、実施例1では、IO処理の性能値(IOPS)を前述したメトリクスとして用いる。すなわち、実施例1のIOアダプタドライバ121は、共有方法が適用された後のIO性能の低下率が小さい共有方法が優先的に適用されるように適用順番を決定する。
 ただし、共有方法が適用された後のIO性能の低下率は、CPU110、主記憶装置120、及びIOアダプタ130等のシステム構成に依存する。そのため、ユーザは、予め、使用するシステムを用いてIO性能の低下率を計測し、性能情報123を用意する。図3A及び図3Bの性能情報123は、計算機100におけるIO性能の低下率を計測することによって生成されたものである。
 なお、IO性能の低下率の計測時に、ベクタが確保できないことによってIO性能値を取得できない可能性がある。そのため、ユーザは、システム運用時にベクタを確保するために、計測に必要のないPCIボードを予め計算機100から外す等、IO性能に影響を与えない範囲で計算機100の構成を変更する。
 ベクタ数304は、共有方法302に対応する共有方法を適用した場合の必要ベクタ数を格納するカラムである。キュー数305は、共有方法302に対応する共有方法を適用した場合の必要キュー数を格納するカラムである。
 図4A、図4B及び図4Cは、実施例1のベクタ-要因関連付け情報124の一例を示す説明図である。図4A、図4B及び図4Cでは、ゲストOS142の数は「3」、IOアダプタコア131の数は「2」であるものとする。
 図4Aは、ID301が「6」の共有方法が適用された場合のベクタ-要因関連付け情報124-1を示す。図4Bは、ID301が「11」の共有方法が適用された場合のベクタ-要因関連付け情報124-2を示す。図4Cは、ID301が「16」の共有方法が適用された場合のベクタ-要因関連付け情報124-2を示す。ここでは、図4Aを例に、ベクタ-要因関連付け情報124の詳細について説明する。
 ベクタ-要因関連付け情報124は、1つのベクタに対して1つのエントリが存在する。エントリは、ベクタ番号401、キュー番号402、ゲストOS番号403、CPUコア番号404、及びIOアダプタコア番号405を含む。
 ベクタ番号401は、ベクタを一意に識別するための識別番号を格納するカラムである。キュー番号402は、キュー122を一意に識別するための識別番号を格納するカラムである。
 ゲストOS番号403は、ゲストOS142を一意に識別するための識別番号を格納するカラムである。CPUコア番号404は、CPUコア111を一意に識別するための識別番号を格納するカラムである。IOアダプタコア番号405は、IOアダプタコア131を一意に識別するための識別番号を格納するカラムである。
 1つのベクタに対して1つ以上のキュー122を割り当てることができる。また、1つのキュー122に対して1つ以上の割り込み要因(ゲストOS142、CPU110、及びIOアダプタコア131の組み合わせ)を割り当てることができる。ベクタ、キュー122、及び割り込み要因の関連付けは、共有方法に基づいて決定される。
 ここで、本発明の処理の概要について説明する。
 まず、計算機100は、性能情報123が設定された場合、所定のタイミングで共有順序情報125の生成処理を実行する。例えば、性能情報123が計算機100に入力された場合、又は、ユーザから処理の開始指示を受け付けた場合、前述した生成処理が実行される。共有順序情報125の生成処理の詳細は、図5を用いて後述する。
 計算機100は、ゲストOS142を起動時に、共有順序情報125に基づいてベクタ及びキュー122の設定処理を実行する。当該処理によって、ベクタ-要因関連付け情報124が生成される。ベクタ及びキュー122の設定処理の詳細は、図8を用いて後述する。
 図5は、実施例1の計算機100が実行する共有順序情報125の生成処理を説明するフローチャートである。図6A及び図6Bは、実施例1の共有順序情報125の生成処理における性能情報123の状態を示す説明図である。図7は、実施例1の共有順序情報125の一例を示す説明図である。
 計算機100は、所定のタイミングで、共有順序情報125の生成処理を開始する。このとき、計算機100は、IOアダプタドライバ121を呼び出す。
 IOアダプタドライバ121は、主記憶装置120に格納される性能情報123を取得し、所定の基準に基づいて性能情報123のエントリを並び替える(ステップS501)。例えば、以下のような処理が実行される。
 IOアダプタドライバ121は、性能情報123の性能劣化303の値が昇順となるように性能情報123のエントリを並び替える。このとき、性能劣化303の値が同一のエントリ群が存在する場合、IOアダプタドライバ121は、ID301の値が昇順となるようにエントリ群に含まれるエントリを並び替える。
 IOアダプタドライバ121は、性能劣化303の値が同一のエントリ群を検索する。IOアダプタドライバ121は、ベクタ数304の値が昇順となるように、検索されたエントリ群に含まれるエントリを並び替える。
 例えば、ID301が「5」のエントリ及びID301が「11」のエントリは、性能劣化303の値が同一である。そのため、IOアダプタドライバ121は、ベクタ数304の値が小さい順にエントリを並び替える。すなわち、ID301が「11」のエントリ、ID301が「5」のエントリの順に並び替えられる。
 以上の処理によって、性能情報123は、図6A及び図6Bに示すような状態となる。ステップS501の処理では、優先的に計算機100に適用する共有方法の順番、すなわち、性能情報123のエントリを適用順に並び替えるための処理である。したがって、上位のエントリに対応する共有方法が、優先的に計算機100に適用される共有方法の候補となる。
 性能情報123に含まれる複数の共有方法の中には、他の共有方法との関係で適用する必要がない共有方法が存在する。そのため、性能情報123に含まれる複数の共有方法の中から、適切な共有方法を選択する必要がある。そこで、IOアダプタドライバ121は、性能情報123から所定の条件に一致するエントリを削除する。具体的には、ステップS502からステップS508までの処理が実行される。
 IOアダプタドライバ121は、性能情報123からエントリを一つ選択する(ステップS502)。性能情報123から選択されたエントリを第1のエントリとも記載する。なお、IOアダプタドライバ121は、性能情報123の上から順に第1のエントリを選択する。
 IOアダプタドライバ121は、第1のエントリより下位のエントリが存在するか否かを判定する(ステップS503)。すなわち、第1のエントリより適用順番が低いエントリが存在するか否かが判定される。
 第1のエントリより下位のエントリが存在すると判定された場合、IOアダプタドライバ121は、第1のエントリより下位のエントリの中から比較対象のエントリを一つ選択する(ステップS504)。比較対象のエントリを第2のエントリとも記載する。
 IOアダプタドライバ121は、第2のエントリのベクタ数304の値が第1のエントリのベクタ数304の値より大きいか否かを判定する(ステップS505)。
 第2のエントリのベクタ数304の値が第1のエントリのベクタ数304の値以下であると判定された場合、IOアダプタドライバ121は、ステップS507に進む。
 第2のエントリのベクタ数304の値が第1のエントリのベクタ数304の値より大きいと判定された場合、IOアダプタドライバ121は、性能情報123から第2のエントリを削除する(ステップS506)。その後、IOアダプタドライバ121は、ステップS507に進む。これによって、IO処理性能が低くなり、かつ、必要ベクタ数が多くなる共有方法が除外されることになる。
 ステップS507では、IOアダプタドライバ121が、第1のエントリより下位のエントリの中に選択可能なエントリが存在するか否かを判定する(ステップS507)。具体的には、IOアダプタドライバ121は、第1のエントリより下位のエントリであり、かつ、第2のエントリとして選択されていないエントリが存在するか否かを判定する。
 第1のエントリより下位のエントリの中に選択可能なエントリが存在すると判定された場合、IOアダプタドライバ121は、ステップS504に戻り同様の処理を実行する。
 第1のエントリより下位のエントリの中に選択可能なエントリが存在しないと判定された場合、IOアダプタドライバ121は、ステップS502に戻り同様の処理を実行する。
 ステップS503において、第1のエントリより下位にエントリが存在しないと判定された場合、IOアダプタドライバ121は、エントリの性能劣化303のカラムを削除し(ステップS508)、その後、処理を終了する。
 以上の処理によって、図7に示すような共有順序情報125が生成される。なお、共有順序情報125のエントリに含まれるID701、共有方法702、ベクタ数703、及びキュー数704は、それぞれ、ID301、共有方法302、ベクタ数304、及びキュー数305と同一のものである。また、複数の共有方法を組み合わせた共有方法が共有方法702に設定される場合、IOアダプタドライバ121は、共有方法の識別番号ではなく、具体的な処理内容を格納する。
 IOアダプタドライバ121は、後述するように、共有順序情報125に基づいて、計算機100に設定するベクタの数及びキュー122の数が多く、かつ、計算機100のIO性能が高い共有方法を優先的に適用する。
 図8は、実施例1の計算機100が実行するベクタ及びキュー122の設定処理を説明するフローチャートである。
 計算機100は、例えば、ハイパバイザ141の起動を検知した場合、又はゲストOS142の起動を検知した場合、ベクタ及びキュー122の設定処理を開始する。このとき、計算機100は、IOアダプタドライバ121を呼び出す。
 IOアダプタドライバ121は、適用順にしたがって共有順序情報125から共有方法を一つ選択する(ステップS801)。実施例1の共有順序情報125のエントリは適用順に並べられているため、IOアダプタドライバ121は、共有順序情報125の上のエントリから順にエントリを選択する。
 IOアダプタドライバ121は、選択されたエントリのベクタ数703及びキュー数704に基づいて、必要ベクタ数及び必要キュー数を設定する(ステップS802)。なお、この時点では、計算機100にベクタ及びキューは設定されていない。
 IOアダプタドライバ121は、OSに対して、選択されたエントリのベクタ数703の値分のベクタの確保を要求する(ステップS803)。IOアダプタドライバ121は、OSからの応答を待つ。
 物理環境の場合、IOアダプタドライバ121は、OSに対して、必要ベクタ数分のベクタの確保を要求する。仮想環境の場合、IOアダプタドライバ121は、ゲストOS142を介して、ハイパバイザ141に必要ベクタ数分のベクタの確保を要求する。
 IOアダプタドライバ121は、OSからの応答に基づいて、OSがベクタ数703分のベクタを確保できたか否かを判定する(ステップS804)。
 OSがベクタ数304分のベクタを確保できない旨の応答を受信した場合、IOアダプタドライバ121は、ステップS801に戻る。ステップS801では、IOアダプタドライバ121は、現在選択されたエントリの次に適用順番が高いエントリを選択し、以下同様の処理を実行する。
 OSがベクタ数703分のベクタを確保できた旨の応答を受信した場合、IOアダプタドライバ121は、選択されたエントリに基づいてベクタ-要因関連付け情報124を生成する(ステップS805)。その後、IOアダプタドライバ121は、処理を終了する。具体的には、IOアダプタドライバ121は、のキュー数704の値だけキュー122を設定し、また、共有方法702に基づいて、ベクタ、キュー及び要因を関連付けることによって、ベクタ-要因関連付け情報124を生成する。
 ここで、具体例を用いて図8の処理を説明する。以下の説明では、計算機100のハードウェア構成及び仮想環境140の構成は、図1に示すような状態であるものとする。ハイパバイザ141が確保可能なベクタの数は「5」であるものとする。また、共有順序情報125は、図7に示すような状態であるものとする。
 はじめに、IOアダプタドライバ121は、ID701が「1」の共有方法を選択する。ID701が「1」の共有方法の場合、必要ベクタ数及び必要キュー数は「24」であるため、IOアダプタコアは、必要ベクタ数を「24」、必要キュー数を「24」と設定する。
 IOアダプタドライバ121は、ハイパバイザ141を介して3つのゲストOS142に対して「24」本のベクタの確保を要求する。しかし、ハイパバイザ141は要求されたベクタを確保できないため、IOアダプタドライバ121は、ベクタの確保に失敗したと判定する。
 次に、IOアダプタドライバ121は、ID701が「2」の共有方法を選択する。ID701が「2」の共有方法の場合、必要ベクタ数及び必要キュー数は「12」であるため、IOアダプタコアは、必要ベクタ数を「12」、必要キュー数を「12」と設定する。
 IOアダプタドライバ121は、ハイパバイザ141を介して3つのゲストOS142に対して「12」本のベクタの確保を要求する。しかし、ハイパバイザ141は要求されたベクタを確保できないため、IOアダプタドライバ121は、ベクタの確保に失敗したと判定する。
 次に、IOアダプタドライバ121は、ID701が「4」の共有方法を選択する。ID701が「4」の共有方法の場合、必要ベクタ数は「8」、必要キュー数は「24」であるため、IOアダプタコアは、必要ベクタ数を「8」、必要キュー数を「24」と設定する。
 IOアダプタドライバ121は、ハイパバイザ141を介して3つのゲストOS142に対して「8」本のベクタの確保を要求する。しかし、ハイパバイザ141は要求されたベクタを確保できないため、IOアダプタドライバ121は、ベクタの確保に失敗したと判定する。
 次に、IOアダプタドライバ121は、ID701が「11」の共有方法を選択する。ID701が「11」の共有方法の場合、必要ベクタ数は「4」、必要キュー数は「12」であるため、IOアダプタコアは、必要ベクタ数を「4」、必要キュー数を「12」と設定する。
 IOアダプタドライバ121は、ハイパバイザ141を介して3つのゲストOS142に対して「4」本のベクタの確保を要求する。この場合、ハイパバイザ141は要求されたベクタを確保できるため、IOアダプタドライバ121は、ベクタの確保に成功したと判定する。
 IOアダプタドライバ121は、ID701が「11」の共有方法に基づいて、ベクタ、キュー122、及び割り込み要因を対応づけることによって、ベクタ-要因関連付け情報124を生成する。これによって、図4Bに示すベクタ-要因関連付け情報124が生成される。
 図9は、実施例1のIO処理においてIOアダプタドライバ121が実行する処理を説明するフローチャートである。
 IOアダプタドライバ121は、IO割り込みの発生を検知した場合、以下で説明する処理を開始する。
 まず、IOアダプタドライバ121は、複数のIOアダプタコア131が一つのベクタを共有しているか否かを判定する(ステップS901)。例えば、IOアダプタドライバ121は、ベクタ-要因関連付け情報124を参照することによって、複数のIOアダプタコア131が一つのベクタを共有しているか否かを判定する。また、IOアダプタドライバ121は、ベクタ-要因関連付け情報124の代わりに共有順序情報125の共有方法702を参照することによって、同様の判定をできる。
 複数のIOアダプタコア131が一つのベクタを共有していないと判定された場合、IOアダプタドライバ121は、ステップS903に進む。この場合、IOアダプタコア131は一意に定まるため、IOアダプタドライバ121は、IOアダプタコア判定レジスタ133を参照する必要がない。
 複数のIOアダプタコア131が一つのベクタを共有していると判定された場合、IOアダプタドライバ121は、IOアダプタコア判定レジスタ133を参照して、IOアダプタコア131を特定する(ステップS902)。その後、IOアダプタドライバ121は、ステップS903に進む。
 次に、IOアダプタドライバ121は、複数のゲストOS142が1つのベクタを共有しているか否かを判定する(ステップS903)。ステップS903の処理は、ステップS901と同一の方法を用いればよい。
 複数のゲストOS142が1つのベクタを共有していないと判定された場合、IOアダプタドライバ121は、ステップS905に進む。この場合、ゲストOS142は一意に定まるため、IOアダプタドライバ121は、ゲスト判定レジスタ134を参照する必要がない。
 複数のゲストOS142が1つのベクタを共有していると判定された場合、IOアダプタドライバ121は、ゲスト判定レジスタ134を参照して、ゲストOS142を特定する(ステップS904)。その後、IOアダプタドライバ121は、ステップS905に進む。
 IOアダプタドライバ121は、ベクタ番号、並びに、割り込みに関連するIOアダプタコア131の識別番号及びゲストOS142の識別番号に基づいてベクタ-要因関連付け情報124を参照し、ベクタに対応づけられたキュー122を特定する(ステップS905)。
 具体的には、IOアダプタドライバ121は、ベクタ-要因関連付け情報124を参照し、ベクタ番号401が割り込み時に通知されたベクタ番号と一致するエントリを検索する。さらに、IOアダプタドライバ121は、検索されたエントリに含まれる行の中から、ゲストOS番号403及びIOアダプタコア番号405が、特定されたゲストOS142の識別番号及び特定されたIOアダプタコア131の識別番号と一致する行を検索する。検索された行のキュー番号402に対応するキューがIO処理の対象となるキュー122となる。
 IOアダプタドライバ121は、特定されたキュー122に対してIO応答処理を実行し(ステップS906)、その後、処理を終了する。
 (変形例)
 実施例1では、IOアダプタドライバ121は、ユーザによって登録された性能情報123に基づいて、共有順序情報125を生成していた。しかし、予め、計算機100に共有順序情報125が登録されてもよい。
 例えば、ゲストOS142の種別、及びゲストOS142上で実行されるアプリケーションの種別毎に複数の共有順序情報125を設定することが考えられる。この場合、ベクタ及びキュー122の設定処理の実行時に、ユーザに複数の共有順序情報125を提示し、ユーザが適用する共有順序情報125を選択する。また、IOアダプタドライバ121が、ハイパバイザ141等と連携して、計算機100の構成から最適な共有順序情報125を選択してもよい。
 なお、性能情報123及び共有順序情報125は、テーブル形式のデータ形式であるが、本発明はこれに限定されない。例えば、性能情報123及び共有順序情報125のデータ形式がCSV形式であってもよい。
 本発明によれば、IOアダプタドライバ121は、共有順序情報125に基づいて、マルチキュー機能を維持し、IO性能の低下を抑え、かつ、必要ベクタ数がOSが確保可能なベクタの数以下となる共有方法を、自動的に計算機100に適用できる。また、ユーザが複数の共有方法を列挙し、かつ、計算機100に適宜適用する等の管理コストを削減し、かつ、最適な共有方法を計算機100に適用できる。
 なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
 また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD-ROM、DVD-ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD-R、磁気テープ、不揮発性のメモリカード、ROM等が用いられる。
 また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Java等の広範囲のプログラム又はスクリプト言語で実装できる。
 さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はCD-RW、CD-R等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
 上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。

Claims (8)

  1.  一つ以上のオペレーティングシステムが稼動する計算機であって、
     前記計算機は、物理リソースとして、少なくとも一つのプロセッサ、前記少なくとも一つのプロセッサに接続される記憶装置、及び前記少なくとも一つのプロセッサに接続される少なくとも一つのIOアダプタを備え、
     前記少なくとも一つのプロセッサは、複数のプロセッサコアを含み、
     前記IOアダプタは、
     複数のIOアダプタコアを含み、
     複数のキューを用いて並列的に複数のIO処理を実行し、
     前記複数のプロセッサコア、前記複数のIOアダプタコア及び前記一つ以上のオペレーティングシステムの組み合わせによって定義される複数の割り込み要因に対して、前記複数のキューが割り当てられ、
     前記計算機は、
     IO割り込みに含まれるベクタ、キュー、及び割り込み要因の関連付けを管理し、前記IOアダプタを制御するIOアダプタドライバを備え、
     共有方法の定義情報、前記計算機に設定するベクタの数、及び前記計算機に設定するキューの数が対応づけられた複数のデータを格納する共有順序情報を保持し、
     前記共有方法は、複数のベクタ、前記複数のキュー、及び前記複数の割り込み要因の関連付けを制御することによって前記計算機に設定するベクタの数を削減する制御方法であって、
     前記IOアダプタドライバは、
     前記一つ以上のオペレーティングシステムに前記ベクタの確保を要求する場合、前記共有順序情報を参照して、前記一つ以上のオペレーティングシステムが確保可能な前記ベクタの数以下となる前記共有方法に対応する前記定義情報を含む前記データを選択し、
     前記選択されたデータに基づいて、前記一つ以上のオペレーティングシステムに前記ベクタの確保を要求し、
     前記一つ以上のオペレーティングシステムが前記ベクタの確保に成功した場合、前記選択されたデータに基づいて、前記複数のベクタ及び前記複数のキューを設定し、
     前記選択されたデータに基づいて、前記複数のベクタ、前記複数のキュー、及び前記複数の割り込み要因の間の対応付けを管理する関連付け情報を生成することを特徴とする計算機。
  2.  請求項1に記載の計算機であって、
     前記共有順序情報に含まれる前記データには、前記計算機に対する前記共有方法の適用順番が定義され、
     前記IOアダプタドライバは、
     前記共有順序情報を参照して、前記計算機に対する前記共有方法の適用順番にしたがって、前記共有順序情報の中から前記データを一つ選択し、
     前記選択されたデータに基づいて、前記一つ以上のオペレーティングシステムに前記ベクタの確保を要求し、
     前記一つ以上のオペレーティングシステムが前記ベクタの確保に失敗した場合、前記共有順序情報の中から、前記選択されたデータに対応する共有方法の次に適用する共有方法の前記定義情報を含む前記データを選択し、
     前記新たに選択されたデータに基づいて、前記一つ以上のオペレーティングシステムに前記ベクタの確保を要求することを特徴とする計算機。
  3.  請求項2に記載の計算機であって、
     前記共有方法の適用順番は、前記計算機に設定するベクタの数及び前記計算機に設定するキューの数が多く、かつ、前記計算機における処理性能が高い共有方法が、前記計算機に優先的に適用されるように決定され、
     前記定義情報は、前記計算機に設定するベクタの数のみを削減する第1の共有方法の定義情報、前記計算機に設定するベクタの数及びキューの数を削減する第2の共有方法の定義情報、並びに、一つ以上の前記第1の共有方法及び一つ以上の前記第2の共有方法を組み合わせである第3の共有方法の定義情報の少なくともいずれかであることを特徴とする計算機。
  4.  請求項3に記載の計算機であって、
     前記共有順序情報は、テーブル形式の情報であって、
     前記IOアダプタドライバは、
     前記共有方法の定義情報、前記共有方法が適用された前記計算機の性能値、前記計算機に設定するベクタの数、及び前記計算機に設定するキューの数が対応づけられた複数のエントリを含む性能情報が入力された場合に、前記計算機の性能値が高い順に前記性能情報に含まれる前記複数のエントリを並び替え、
     前記性能情報に含まれる前記複数のエントリの中から第1のエントリを選択する第1の処理を実行し、
     前記性能情報に含まれる前記複数の定義情報の中から、前記第1のエントリに含まれる前記定義情報が適用された前記計算機の性能値以下の性能値となる定義情報に対応する第2のエントリを一つ選択する第2の処理を実行し、
     前記第2のエントリに含まれる前記定義情報に基づいて設定される前記ベクタの数が、前記第1のエントリに含まれる前記定義情報に基づいて設定される前記ベクタの数より大きいか否かを判定する第3の処理を実行し、
     前記第2のエントリに含まれる前記定義情報に基づいて設定される前記ベクタの数が、前記第1のエントリに含まれる前記定義情報に基づいて設定される前記ベクタの数より大きいと判定された場合、前記性能情報から前記第2のエントリを削除第4の処理を実行し、
     前記性能情報に含まれる全てのエントリに対して、前記第1の処理、前記第2の処理、前記第3の処理、及び前記第4の処理が実行された後、前記性能情報に含まれる複数のエントリの各々から前記計算機の性能値に対応するカラムを削除することによって、前記共有順序情報を生成することを特徴とする計算機。
  5.  一つ以上のオペレーティングシステムが稼動する計算機におけるIO割り込みに用いられるベクタの設定方法であって、
     前記計算機は、物理リソースとして、少なくとも一つのプロセッサ、前記少なくとも一つのプロセッサに接続される記憶装置、及び前記少なくとも一つのプロセッサに接続される少なくとも一つのIOアダプタを備え、
     前記少なくとも一つのプロセッサは、複数のプロセッサコアを含み、
     前記IOアダプタは、
     複数のIOアダプタコアを含み、
     複数のキューを用いて並列的に複数のIO処理を実行し、
     前記複数のプロセッサコア、前記複数のIOアダプタコア及び前記一つ以上のオペレーティングシステムの組み合わせによって定義される複数の割り込み要因に対して、前記複数のキューが割り当てられ、
     前記計算機は、
     IO割り込みに含まれるベクタ、キュー、及び割り込み要因の関連付けを管理し、前記IOアダプタを制御するIOアダプタドライバを備え、
     共有方法の定義情報、前記計算機に設定するベクタの数、及び前記計算機に設定するキューの数が対応づけられた複数のデータを格納する共有順序情報を保持し、
     前記共有方法は、複数のベクタ、前記複数のキュー、及び前記複数の割り込み要因の関連付けを制御することによって前記計算機に設定するベクタの数を削減する制御方法であって、
     前記ベクタの設定方法は
     前記IOアダプタドライバが、前記一つ以上のオペレーティングシステムに前記ベクタの確保を要求する場合、前記共有順序情報を参照して、前記一つ以上のオペレーティングシステムが確保可能な前記ベクタの数以下となる前記共有方法に対応する前記定義情報を含む前記データを選択する第1のステップと、
     前記IOアダプタドライバが、前記選択されたデータに基づいて、前記一つ以上のオペレーティングシステムに前記ベクタの確保を要求する第2のステップと、
     前記IOアダプタドライバが、前記一つ以上のオペレーティングシステムが前記ベクタの確保に成功した場合、前記選択されたデータに基づいて、前記複数のベクタ及び前記複数のキューを設定する第3のステップと、
     前記IOアダプタドライバが、前記複数のベクタ、前記複数のキュー、及び前記複数の割り込み要因の間の対応付けを管理する関連付け情報を生成する第4のステップと、を含むことを特徴とするベクタの設定方法。
  6.  請求項5に記載のベクタの設定方法であって、
     前記共有順序情報に含まれる前記データには、前記計算機に対する前記共有方法の適用順番が定義され、
     前記第2のステップは、
     前記共有順序情報を参照して、前記計算機に対する前記共有方法の適用順番にしたがって、前記共有順序情報の中から前記データを一つ選択するステップと、
     前記選択されたデータに基づいて、前記一つ以上のオペレーティングシステムに前記ベクタの確保を要求するステップと、
     前記一つ以上のオペレーティングシステムが前記ベクタの確保に失敗した場合、前記共有順序情報の中から、前記選択されたデータに対応する共有方法の次に適用する共有方法の前記定義情報を含む前記データを選択するステップと、
     前記新たに選択されたデータに基づいて、前記一つ以上のオペレーティングシステムに前記ベクタの確保を要求するステップと、を含むことを特徴とするベクタの設定方法。
  7.  請求項6に記載のベクタの設定方法であって、
     前記共有方法の適用順番は、前記計算機に設定するベクタの数及び前記計算機に設定するキューの数が多く、かつ、前記計算機における処理性能が高い共有方法が、前記計算機に優先的に適用されるように決定され、
     前記定義情報は、前記計算機に設定するベクタの数のみを削減する第1の共有方法の定義情報、前記計算機に設定するベクタの数及びキューの数を削減する第2の共有方法の定義情報、並びに、一つ以上の前記第1の共有方法及び一つ以上の前記第2の共有方法を組み合わせである第3の共有方法の定義情報の少なくともいずれかであることを特徴とするベクタの設定方法。
  8.  請求項7に記載のベクタの設定方法であって、
     前記共有順序情報は、テーブル形式の情報であって、
     前記ベクタの設定方法は、
     前記IOアダプタドライバが、前記共有方法の定義情報、前記共有方法が適用された前記計算機の性能値、前記計算機に設定するベクタの数、及び前記計算機に設定するキューの数が対応づけられた複数のエントリを含む性能情報が入力された場合に、前記計算機の性能値が高い順に前記性能情報に含まれる前記複数のエントリを並び替えるステップと、
     前記IOアダプタドライバが、前記性能情報に含まれる前記複数のエントリの中から第1のエントリを選択する第1の処理を実行するステップと、
     前記IOアダプタドライバが、前記性能情報に含まれる前記複数の定義情報の中から、前記第1のエントリに含まれる前記定義情報が適用された前記計算機の性能値以下の性能値となる定義情報に対応する第2のエントリを一つ選択する第2の処理を実行するステップと、
     前記IOアダプタドライバが、前記第2のエントリに含まれる前記定義情報に基づいて設定される前記ベクタの数が、前記第1のエントリに含まれる前記定義情報に基づいて設定される前記ベクタの数より大きいか否かを判定する第3の処理を実行するステップと、
     前記IOアダプタドライバが、前記第2のエントリに含まれる前記定義情報に基づいて設定される前記ベクタの数が、前記第1のエントリに含まれる前記定義情報に基づいて設定される前記ベクタの数より大きいと判定された場合、前記性能情報から前記第2のエントリを削除第4の処理を実行するステップと、
     前記IOアダプタドライバが、前記性能情報に含まれる全てのエントリに対して、前記第1の処理、前記第2の処理、前記第3の処理、及び前記第4の処理が実行された後、前記性能情報に含まれる複数のエントリの各々から前記計算機の性能値に対応するカラムを削除することによって、前記共有順序情報を生成するステップと、を含むことを特徴とするベクタの設定方法。
PCT/JP2014/076777 2014-10-07 2014-10-07 計算機及びベクタの設定方法 WO2016056060A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/076777 WO2016056060A1 (ja) 2014-10-07 2014-10-07 計算機及びベクタの設定方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/076777 WO2016056060A1 (ja) 2014-10-07 2014-10-07 計算機及びベクタの設定方法

Publications (1)

Publication Number Publication Date
WO2016056060A1 true WO2016056060A1 (ja) 2016-04-14

Family

ID=55652723

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/076777 WO2016056060A1 (ja) 2014-10-07 2014-10-07 計算機及びベクタの設定方法

Country Status (1)

Country Link
WO (1) WO2016056060A1 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3822588A1 (en) 2018-04-23 2021-05-19 Corephotonics Ltd. An optical-path folding-element with an extended two degree of freedom rotation range
EP3842853A1 (en) 2016-12-28 2021-06-30 Corephotonics Ltd. Folded camera structure with an extended light-folding-element scanning range
JP7379502B2 (ja) 2019-02-14 2023-11-14 インターナショナル・ビジネス・マシーンズ・コーポレーション フォールバックを伴う有向割り込みの仮想化方法、システム、プログラム
US11822493B2 (en) 2019-02-14 2023-11-21 International Business Machines Corporation Directed interrupt for multilevel virtualization
JP7398465B2 (ja) 2019-02-14 2023-12-14 インターナショナル・ビジネス・マシーンズ・コーポレーション 有向割り込みの仮想化のための割り込み信号伝達方法、システム、プログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006268282A (ja) * 2005-03-23 2006-10-05 Nec Corp マルチ・パーティション・システムの割り込み制御方式
JP2009151745A (ja) * 2007-11-28 2009-07-09 Hitachi Ltd 仮想マシンモニタ及びマルチプロセッサシステム
JP2013003946A (ja) * 2011-06-20 2013-01-07 Nippon Telegr & Teleph Corp <Ntt> 仮想マシン制御システム、仮想マシン制御装置、仮想マシン制御方法及びプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006268282A (ja) * 2005-03-23 2006-10-05 Nec Corp マルチ・パーティション・システムの割り込み制御方式
JP2009151745A (ja) * 2007-11-28 2009-07-09 Hitachi Ltd 仮想マシンモニタ及びマルチプロセッサシステム
JP2013003946A (ja) * 2011-06-20 2013-01-07 Nippon Telegr & Teleph Corp <Ntt> 仮想マシン制御システム、仮想マシン制御装置、仮想マシン制御方法及びプログラム

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3842853A1 (en) 2016-12-28 2021-06-30 Corephotonics Ltd. Folded camera structure with an extended light-folding-element scanning range
EP4246993A2 (en) 2016-12-28 2023-09-20 Corephotonics Ltd. Folded camera structure with an extended light-folding-element scanning range
EP3822588A1 (en) 2018-04-23 2021-05-19 Corephotonics Ltd. An optical-path folding-element with an extended two degree of freedom rotation range
EP4109174A1 (en) 2018-04-23 2022-12-28 Corephotonics Ltd. An optical-path folding-element with an extended two degree of freedom rotation range
EP4303653A1 (en) 2018-04-23 2024-01-10 Corephotonics Ltd. An optical-path folding-element with an extended two degree of freedom rotation range
JP7379502B2 (ja) 2019-02-14 2023-11-14 インターナショナル・ビジネス・マシーンズ・コーポレーション フォールバックを伴う有向割り込みの仮想化方法、システム、プログラム
US11822493B2 (en) 2019-02-14 2023-11-21 International Business Machines Corporation Directed interrupt for multilevel virtualization
US11829790B2 (en) 2019-02-14 2023-11-28 International Business Machines Corporation Directed interrupt virtualization with fallback
JP7398465B2 (ja) 2019-02-14 2023-12-14 インターナショナル・ビジネス・マシーンズ・コーポレーション 有向割り込みの仮想化のための割り込み信号伝達方法、システム、プログラム

Similar Documents

Publication Publication Date Title
US9081612B2 (en) Virtual machine control method and virtual machine
JP6029550B2 (ja) 計算機の制御方法及び計算機
KR102321913B1 (ko) 불휘발성 메모리 장치, 및 그것을 포함하는 메모리 시스템
US9183061B2 (en) Preserving, from resource management adjustment, portions of an overcommitted resource managed by a hypervisor
US20190243757A1 (en) Systems and methods for input/output computing resource control
WO2016056060A1 (ja) 計算機及びベクタの設定方法
US8966130B2 (en) Tag allocation for queued commands across multiple devices
JP6172649B2 (ja) 情報処理装置、プログラム、及び、情報処理方法
JP6072084B2 (ja) 仮想計算機システムおよび仮想計算機システムのデータ転送制御方法
US10579416B2 (en) Thread interrupt offload re-prioritization
US10817205B2 (en) Computer system and storage device
US10057338B2 (en) Data distribution apparatus, data distribution method, and data distribution program for parallel computing processing system
US20060143204A1 (en) Method, apparatus and system for dynamically allocating sequestered computing resources
Blagojević et al. Priority {IO} Scheduling in the Cloud
WO2016059692A1 (ja) 計算機及びi/o処理の制御方法
US8245229B2 (en) Temporal batching of I/O jobs
JP6157719B2 (ja) 計算機
US11237745B2 (en) Computer system and volume arrangement method in computer system to reduce resource imbalance
US10783096B2 (en) Storage system and method of controlling I/O processing
US9176910B2 (en) Sending a next request to a resource before a completion interrupt for a previous request
WO2016092667A1 (ja) 計算機及び割込み制御方法
JP6653786B2 (ja) I/o制御方法およびi/o制御システム
US20160011891A1 (en) Engine for Virtual Machine Resources
US20170147408A1 (en) Common resource updating apparatus and common resource updating method

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

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP