Abstract:
The present invention relates to a computer system, more particularly to a computer system for reducing a performance load generated by the operation of a program for obtaining performance information of a storage system. A performance information collecting method executed in a computer system comprising: the performance information collecting method comprises: a first step of obtaining, by the control unit, the performance information of the storage system; a second step of transmitting, by the control unit, the obtained performance information to the host computer having a lower load than a predetermined threshold value; a third step of transmitting, by the host computer, the performance information transmitted from the control unit to the management computer; and a fourth step of collecting, by the management computer the transmitted performance information.

Description:
CLAIM OF PRIORITY  
       [0001]     The present application claims priority from Japanese application P2005-306943 filed on Oct. 21, 2004, the content of which is hereby incorporated by reference into this application.  
       BACKGROUND  
       [0002]     The present invention relates to a computer system, and more particularly to a computer system for reducing a performance load generated by the operation of a program for obtaining performance information of a storage system.  
         [0003]     In a computer system provided with a storage system including a control device for inputting and outputting data in a disk drive in response to a request from a host computer, there is a demand for collecting performance information of the storage system for the operation of the computer system.  
         [0004]     The performance information of the storage system includes, for example, the number of I/Os from a host computer, the data amount of I/Os from the host computer, a load on a processor of a control device, the number of I/Os from the control device, disk drive utilization, and the like.  
         [0005]     The performance information of the storage system are generally obtained by a program operating on a host computer or a management computer, as described in, for example, JP 2003-316522 A  
       SUMMARY  
       [0006]     However, the program for collecting the performance information of storage system or the like generates a load on the resources of the program itself. Therefore, the conflict between a particular user program and the resources is generated or a load on I/Os or the like is generated by the program to prevent the number of I/Os of the performance information from being precisely counted in some cases.  
         [0007]     The present invention is devised in view of the problem described above, and has an object of providing a computer system that determines how to operate a program for obtaining performance information of a storage system to obtain performance information with higher accuracy.  
         [0008]     According to an aspect of this invention relates to a performance information collecting method executed in a computer system comprising: a disk drive, in which at least one logical area that stores data is set; a storage system comprising a control unit that controls read and write of data from and to the disk drive and an interface connected to a host computer; the host computer connected to the interface through a network, the host computer making a request of read and write of data from and to the logical area of the disk drive; and a management computer that collects performance information of the storage system, the network and the host computer; wherein a correlation between the host computer and the logical area used by the host computer is set; and the performance information collecting method comprises: a fist step of obtaining, by the control unit, the performance information of the storage system; a second step of transmitting, by the control unit, the obtained performance information to the host computer having a lower load than a predetermined threshold value; a third step of transmitting, by the host computer, the performance information transmitted from the control unit to the management computer; and a fourth step of collecting, by the management computer, the transmitted performance information.  
         [0009]     According to this invention, in a computer system, performance information obtained by a control unit of a storage system is transmitted to a management computer through a host computer with a low load. Thus, the effects on the operation being executed on the computer system can be kept to a minimum. At the same time, more precise performance information can be obtained. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0010]      FIG. 1  is a block diagram showing a configuration of a computer system according to an embodiment of this invention.  
         [0011]      FIG. 2  is a functional block diagram of a first agent program according to the embodiment of this invention.  
         [0012]      FIG. 3  is a functional block diagram of a second agent program according to the embodiment of this invention.  
         [0013]      FIG. 4  is a functional block diagram of a client program according to the embodiment of this invention.  
         [0014]      FIG. 5  is a configuration block diagram of a manager program according to the embodiment of this invention.  
         [0015]      FIG. 6  is an explanatory view of the first agent program according to the embodiment of this invention.  
         [0016]      FIG. 7  is an explanatory view of an example of a data format of performance information according to the embodiment of this invention.  
         [0017]      FIG. 8  is an explanatory view of an example of a setting information table according to the embodiment of this invention.  
         [0018]      FIG. 9  is an explanatory view of an example of install target information according to the embodiment of this invention.  
         [0019]      FIG. 10  is an explanatory view of an example of an obtained data time information management table according to the embodiment of this invention.  
         [0020]      FIG. 11  is an explanatory view of an example of a node information table according to the embodiment of this invention.  
         [0021]      FIG. 12  is a sequence diagram of a processing of distributing the agent programs according to the embodiment of this invention.  
         [0022]      FIG. 13A  is a flowchart of a processing of changing a storage location of the first agent program according to the embodiment of this invention.  
         [0023]      FIG. 13B  is a sequence diagram of the processing of changing the storage location of the first agent program according to the embodiment of this invention.  
         [0024]      FIG. 13C  is another sequence diagram of the processing of changing the storage location of the first agent program according to the embodiment of this invention.  
         [0025]      FIG. 14  is an explanatory view of an example of a performance information correspondence table according to the embodiment of this invention.  
         [0026]      FIG. 15  is a flow chart of an alarm notification according to the embodiment of this invention.  
         [0027]      FIG. 16  is an explanatory view of an example of an alarm state management table according to the embodiment of this invention.  
         [0028]      FIG. 17  is a sequence diagram of a processing of collecting data according to the embodiment of this invention.  
         [0029]      FIG. 18A  is an explanatory view of distribution of the performance information according to the embodiment of this invention.  
         [0030]      FIG. 18B  is an explanatory view of distribution of the performance information according to the embodiment of this invention.  
         [0031]      FIG. 18B  is an explanatory view of distribution of the performance information according to the embodiment of this invention. 
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0032]     Hereinafter, an embodiment of this invention will be described with reference to the accompanying drawings.  
         [0033]     According to the embodiment of this invention, in a computer system, performance information of a storage system  30  is obtained by a program (a first agent program  3000 ) for obtaining the performance information stored in the storage system  30 . Then, the obtained performance information is transmitted to an integration management server  10  for collecting the performance information through a program (a second agent program  2000 ) stored in a host computer  20 .  
         [0034]     First, a configuration of the computer system will be described.  
         [0035]      FIG. 1  is a block diagram showing the configuration of the computer system according to a first embodiment of this invention.  
         [0036]     The computer system according to this embodiment of this invention includes the integration management server  10 , host computers  20 A and  20 B, storage systems  30 A and  30 B, and switches (SWs)  40 A and  40 B.  
         [0037]     The host computers  20 A and  20 B make a request to read and write data stored in the storage systems  30 A and  30 B. Each of the storage systems  30 A and  30 B includes a disk drive  330  so as to process the request to read and write the data stored in the disk drive  330  from the host computers  20 A and  20 B. The integration management server  10  obtains the performance information of the host computers  20 A and  20 B, the storage systems  30 A and  30 B, and the like so as to inform of statistical information or an alert (an error) regarding the obtained performance information.  
         [0038]     The host computer  20 A is connected to the storage systems  30 A and  30 B through the SW  40 A, whereas the host computer  20 B is connected to the storage systems  30 A and  30 B through the SW  40 B. The connections between the host computers  20 A and  20 B and the SWs  40 A and  40 B and between the SWs  40 A and  40 B and the storage systems  30  are realized by a network suitable for data transfer such as an FC (Fiber Channel) or an SCSI.  
         [0039]     The integration management server  10  is connected to the host computers  20 A and  20 B and the storage systems  30 A and  30 B through the network  11 . The network  11  is configured with a network such as an Ethernet.  
         [0040]     The integration management server  10  includes a CPU  101 , a memory  102 , and an interface  103 .  
         [0041]     The CPU  101  reads a program stored in the memory  102  so as to execute a process defined by the program. The memory  102  stores various programs, data used by the programs, and the like. The interface  103  transmits/receives data to/from the host computer  20 A and  20 B, the storage systems  30 A and  30 B through the network  11 .  
         [0042]     The host computer  20 A includes a CPU  201 , a memory  202 , interface  203 , and an interface  204 .  
         [0043]     The CPU  201  reads a program stored in the memory  202  so as to execute a process defined by the program. The memory  202  stores various programs, data used by the programs, and the like. The interface  203  transmits/receives data to/from the integration management server  10  through the network  11 . The interface  204  transmits/receives data to/from the storage systems  30 A and  30 B through the SW  40 A.  
         [0044]     The configuration of the host computer  20 B is approximately the same as that of the host computer  20 A.  
         [0045]     The storage system  30 A includes a plurality of channel interfaces  310  ( 310 A to  310 C), a controller  320  and the disk drives  330 .  
         [0046]     The channel interfaces  310 A to  310 C transmit/receive data to/from the host computers  20 A and  20 B through the SWs  40 A and  40 B.  
         [0047]     The channel interfaces  310 A includes a CPU  311 , a memory  312 , an interface  323 , and an interface  324 .  
         [0048]     The CPU  311  reads a program stored in the memory  312  so as to execute a process defined by the program. The memory  312  stores various programs, data used by the programs, and the like. The interface  313  transmits/receives data to/from the host computer  20 A and  20  B through the SW  40 A and  40 B. The interface  314  transmits/receives data to/from the controller  320  through the controller  320 .  
         [0049]     Any interface  313  of each of the channel interfaces  310 A to  310 C is free to transmit/receive data to/from any of host computers  20 A and  20 B through any of the SW  40 A and  40 B. In the example shown in  FIG. 1 , two of the interfaces  313  of the channel interface  310 A are connected to the SW  40 A. The interfaces  313  of the channel interface  310 B (not shown) are connected to the SW  40 A. In the same manner, the interfaces  313  of the channel interface  310 C (not shown) are connected to the SW  40 B. The connections are processed using a port corresponding to a logical interface as a unit.  
         [0050]     The controller  320  includes a CPU  321 , a memory  322 , an interface  323  and a disk interface  324 .  
         [0051]     The CPU  321  reads a program stored in the memory  322  so as to execute a process defined by the program. The memory  322  stores various programs, data used by the programs, and the like. The interface  323  transmits/receives data to/from the channel interface  310  through the channel interface  310 . The disk interface  324  transmits/receives data to/from the disk drive  330  through the disk drive  330 .  
         [0052]     Each of the disk drives  330  includes at least one hard disk drive  331 . The disk drive  330  arranges the hard disk drive  331  in an RAID configuration as an array group. The array group constitutes a logical device corresponding to a logical storage area.  
         [0053]     The configuration of the storage system  30 B is approximately the same as that of the storage system  30 A. In the example shown in  FIG. 1 , one of the channel interfaces  310  of the storage system  30 B is connected to the SW  40 A, whereas the other channel interface  310  is connected to the SW  40 B.  
         [0054]     Hereinafter, the host computers  20 A and  20 B are collectively denoted as the host computer  20  unless otherwise required. In a similar manner, the storage systems  30 A and  30 B are collectively denoted as the storage system  30 . The SWs  40 A and  40 B are collectively denoted as the SW  40 . The channel interfaces  310 A to  310 C are collectively denoted as the channel interface  310 .  
         [0055]     Next, an agent program will be described.  
         [0056]     In the embodiment of this invention, each of the host computer  20  and the storage system  30  is provided with a program for obtaining its own performance information. Then, the performance information obtained by a process of the program is collected by a manager program provided for the integration management server  10 .  
         [0057]      FIG. 2  is a functional block diagram of the first agent program  3000  provided for the storage system  30 .  
         [0058]     The first agent program  3000  is stored in any of the logical devices of the disk drives  330  of the storage system  30  by a processing of the integration management server  10 . The storage system  30  reads out the stored first agent program  3000  so as to set a process of the program executable (hereinafter, the setting is referred to as installation) so as to execute the process of the first agent program  3000 . The process permits the performance information of the storage system  30  to be obtained.  
         [0059]     The first agent program  3000  includes a communication control subprogram  3100 , a data collection management module  3200 , a data storing subprogram  3300 , an alarm management module  3400 , and a microprogram processing subprogram  3500 .  
         [0060]     The data collection management module  3200  includes a data collection subprogram  3201 , a data collection object management subprogram  3202 , and a data collection term management subprogram  3203 .  
         [0061]     The alarm management module  3400  includes an alarm evaluation subprogram  3401 , an alarm bind information management subprogram  3402 , and an event management subprogram  3403 .  
         [0062]     The communication control subprogram  3100  performs processings for the communication of the first agent program  3000 . More specifically, the communication control subprogram  3100  transmits the performance information obtained by the first agent program  3000  to the integration management server  10  or receives an alarm transmitted from the integration management server  10 .  
         [0063]     The data collection management module  3200  executes processings for obtaining the performance information of the storage system  30 . More specifically, the data collection subprogram  3201  obtains a data collection object set by the data collection object management subprogram  3202 , in other words, the performance information of the port or the logical device at data collection intervals set by the data collection term management subprogram  3203 .  
         [0064]     The data storing subprogram  3300  stores the performance information obtained by the data collection management module  3200  in the logical device of the disk drive  330 .  
         [0065]     The alarm management module  3400  executes a processing for the alarm. More specifically, the alarm evaluation subprogram  3401  compares alarm information managed by the alarm bind information management subprogram  3402  with the obtained performance information so as to determine whether or not the alarm is to be informed as an event. When the alarm is determined to be informed as an event, the event management subprogram  3403  informs the integration management server  10  of the contents of the alarm as an event.  
         [0066]     The microprogram processing subprogram  3500  is provided for the controller  320  of the storage system  30  so as to obtain data regarding the performance information by a program for a processing regarding data input/output to/from the disk drive  330 , in other words, data regarding the performance information from a microprogram.  
         [0067]      FIG. 3  is a functional block diagram of the second agent program  2000  provided for the host computer  20 .  
         [0068]     The second agent program  2000  is stored in the host computer  20  by the processing of the integration management server  10 . The host computer  20  reads out the stored second agent program  2000  so as to install the program to execute the second agent program  2000 . This processing allows the performance information of the host computer  20  (or the SW  40 ) to be obtained.  
         [0069]     The second agent program  2000  includes a communication control subprogram  2100 , a data collection management module  2200 , a data storing subprogram  2300 , an alarm management module  2400 , a microprogram processing subprogram  2500 , and a program distribution management module  2600 .  
         [0070]     The data collection management module  2200  includes a data collection subprogram  2201 , a data collection object management subprogram  2202 , and a data collection term management subprogram  2203 .  
         [0071]     The alarm management module  2400  includes an alarm evaluation subprogram  2401 , an alarm bind information management subprogram  2402 , and an event management subprogram  2403 .  
         [0072]     The program distribution management module  2600  includes an event management subprogram  2601  and a program distribution subprogram  2602 .  
         [0073]     Since the processings of the communication control subprogram  2100 , the data collection management module  2200 , the data storing subprogram  2300 , the alarm management module  2400 , and the microprogram processing subprogram  2500  are approximately the same as those of the first agent program  3000  described above, the description thereof is herein omitted. The microprogram processing subprogram  2500  obtains data regarding performance information from a program for executing a processing regarding data input and output between the host computer  20  and the storage system  30 , in other words, a microprogram.  
         [0074]     The program distribution management module  2600  manages the distribution of a program, in other words, the first agent program  3000 . More specifically, in response to a request for the distribution of the first agent program  3000 , which is transmitted from the integration management server  10 , the event management program  2601  transmits the received first agent program  3000  to the storage system  30  corresponding to a distribution target through the program distribution subprogram  2602 .  
         [0075]     At this time, the integration management server  10  transmits a request of distribution of the program as a request command to the host computer  20 . The program distribution management module  2600  of the second agent program  2000  of the host computer  20  writes the first agent program  3000  regarding the request and its setting information as write data to the logical device of the storage system  30 . Thereafter, the integration management server  10  instructs the storage system  30  to install the written first agent program  3000  through the network  11 .  
         [0076]      FIG. 4  is a functional block diagram of a client program  2800  provided for the integration management server  10 .  
         [0077]     The client program  2800  functions as a user interface with an administrator in the integration management server  10 . In other words, the client program  2800  notifies the administrator of information or receives the input of information from the administrator.  
         [0078]     The client program  2800  includes a communication control subprogram  2801 , a data collection management subprogram  2802 , a data indicating subprogram  2803 , an alarm definition subprogram  2804 , an alarm indication subprogram  2805 , and a massage indication subprogram  2806 .  
         [0079]     The communication control subprogram  2801  transmits/receives data to/from another program of the integration management server  10  or the host computer  20  and the storage system  30 .  
         [0080]     The data collection management subprogram  2802  collects the data through the communication control subprogram  2801 . The data indicating subprogram  2803  indicates the performance information collected by the data collection subprogram  2802  on a display device provided for the integration management server  10  or the like.  
         [0081]     The alarm definition subprogram  2804  defines a condition to be transmitted to the first agent program  3000  or the second agent program  2000 . The alarm indication subprogram  2805  indicates an issued alarm on the display device provided for the integration management server  10 . The message indication subprogram  2806  indicates a message to the administrator on the display device provided for the integration management server  10 .  
         [0082]      FIG. 5  is a configuration block diagram of a manager program  1000  provided for the integration management server  10 .  
         [0083]     A manager program  1000  distributes the second agent program  2000  to the host computer  20  while distributing the first agent program  3000  to the storage system  30 . Moreover, the manager program  1000  receives the performance information obtained by the first agent program  3000  and the second agent program  2000  to aggregate the received performance information so as to store the aggregate data.  
         [0084]     The manager program  1000  includes a communication control subprogram  1100 , a data collection management module  1200 , a data storing subprogram  1300 , a program distribution management module  1400 , a node management information module  1500 , an install target information setting module  1600 , a data integration subprogram  1700 , and an alarm management module  1800 .  
         [0085]     The data collection management module  1200  includes a data collection subprogram  1201 , a data collection object management subprogram  1202 , a data collection term management subprogram  1203 , and an obtained data term processing subprogram  1204 .  
         [0086]     The program distribution management module  1400  includes an event management subprogram  1401  and a program distribution subprogram  1402 .  
         [0087]     The node management module  1500  includes a node information management subprogram  1501 , a setting information management subprogram  1502 , and an event management subprogram  1503 .  
         [0088]     The install target information setting program  1600  includes an event management subprogram  1601  and an install target information setting subprogram  1602 .  
         [0089]     The alarm management module  1800  includes an alarm definition management subprogram  1801 , an alarm state management subprogram  1802 , and an event management subprogram  1803 .  
         [0090]     The communication control subprogram  1100  performs a processing for the communication of the manager program  1000 . More specifically, the communication control subprogram  1100  transmits/receives data to/from the host computer  20  and the storage system  30  through the network  11 .  
         [0091]     The data collection management module  1200  collects the performance information obtained by the second agent program  2000  and the first agent program  3000  in the host computer  20  and the storage system  30 . More specifically, the data collection management subprogram  1201  polls a data collection object set by the data collection object management subprogram  1202 , in other words, the performance information obtained by the second agent program  2000  stored in the host computer  20  and the first agent program  3000  stored in the storage system  30  at data collection intervals set by the data collection term management subprogram  1203 . As a result of the polling, the data collection subprogram  1201  collects the performance information transmitted from the first agent program  3000  and the second agent program  2000 . The obtained data term processing subprogram  1204  manages an obtained data time information management table  12041  shown in  FIG. 10 , which includes the last polling time and the latest entry time of the performance information obtained from the first agent program  3000  and the second agent program  2000 .  
         [0092]     The data storing subprogram  1300  stores the performance information collected by the data collection management module  1200  in a memory  122 . Alternatively, the integration management server  10  may be provided with a disk device so as to store the performance information. Further alternatively, the performance information may be set so as to be stored in the logical device of the disk drive  330  of the storage system  30 .  
         [0093]     The program distribution management module  1400  manages the distribution of the programs, in other words, the first agent program  3000  and the second agent program  2000 . More specifically, the program distribution subprogram  1402  refers to the information set in the node information management module  1500  so as to request the distribution of the first agent program  3000  and the second agent program  2000 . The event management subprogram  1401  transmits the distribution request to the host computer  20  and the storage system  30  as an event.  
         [0094]     The node management information module  1500  manages the information of the nodes, in other words, the host computers  20 , the storage systems  30  and the SWs  40  constituting the computer system.  
         [0095]     The node information management subprogram  1501  manages the node information table  1501  shown in  FIG. 11 . The setting information management subprogram  1502  manages a setting information management table  15020  shown in  FIG. 8 . The event management subprogram  1503  receives an event indicating a modification of the node information or the setting information so as to transmit the information to the node information management subprogram  1501  or the setting information management subprogram  1502 .  
         [0096]     The install target information setting module  1600  manages the installation of the program distributed by the program distribution management module  1500 . More specifically, the install target information setting subprogram  1602  refers to the information set in the node information management module  1500  so as to create install target information shown in  FIG. 9 . The event management subprogram  1601  transmits the thus created install target information to the host computer  20  or the storage system  30  as an event.  
         [0097]     The data integration subprogram  1700  receives the performance information obtained by the first agent program  3000  and the second agent program  2000  so as to integrate each of the received data for each of the host computers  20  or the storage systems  30  from which the performance information is obtained.  
         [0098]     The alarm management module  1800  transmits an alarm to the host computer  20  and the storage system  30  as an event so as to receive the notification of the alarm from the host computer  20  or the storage system  30 . More specifically, the alarm definition management subprogram  1801  transmits an alarm definition created by a client program  2800  to the host computer  20  and the storage system  30 . Thereafter, the alarm state management subprogram  1802  receives the alarm notified from the host computer  20  or the storage system  30  so as to update the current alarm state. The event management subprogram  1803  receives the notification of the alarm.  
         [0099]      FIG. 6  is an explanatory view of the first agent program  3000  stored in the storage system  30 .  
         [0100]     As described above, the first agent program  30000  is stored in any of the array group areas of the logical devices of the storage system  30  by the processing of the manager program  1000 . Then, in response to a direction from the integration management server  10 , the stored first agent program  3000  is installed. More specifically, the first agent program  3000  stored in the array group area is read into a memory  322  of the controller  3200  or the area is swapped so that the processing of the first agent program  3000  is set executable by a CPU  321 .  
         [0101]     In the storage system  30 , an application in the host computer  20  is operated using the logical device corresponding to a storage area of the disk drive  330  as a storage area for the host computer  20 . Therefore, when the first agent program  3000  is stored in the logical device frequently accessed by the host computer  20 , in other words, the logical device with a higher load, the load affects the obtainment of the performance information by the first agent program  3000 .  
         [0102]     Therefore, it is desirable to store the first agent program  3000  in the logical device with a load as low as possible so as to obtain the performance information. Accordingly, in the embodiment of this invention, there is provided a mechanism capable of changing a storage location of the first agent program  3000  based on the performance information obtained by the first agent program  3000 , in other words, the performance information of the logical device of the disk drive  330 .  
         [0103]      FIG. 7  is an explanatory view of an example of a data format of the performance information transmitted by the first agent program  3000  of the storage system  30  through the host computer  20  to the integration management server  10 .  
         [0104]     The first agent program  3000  obtains the performance information of the storage system at predetermined intervals or a predetermined time. The performance information contains, for example, an IOPS (I/O Per Second) or a Transfer (the number of bytes of the I/O).  
         [0105]     The first agent program  3000  transmits the performance information in the data format shown in  FIG. 7  through the second agent program  2000  in the host computer  20  to the integration management server  10 . At this time, the first agent program  3000  sets a “Key” for each of the data to be transmitted. The Key serves as a unique identifier for the storage system  30  in the computer system. The setting of the Key allows the performance information data for each of the storage system  30  transmitted in an asynchronous manner to be collected as data of the same storage system  30 .  
         [0106]      FIG. 8  is an explanatory view of an example of the setting information management table  15020 .  
         [0107]     The setting information management table  15020  corresponds to logical setting information of each of the structures (the host computer  20 , the storage system  30 , the SW  40 , and the like) included in the computer system, which is managed by the setting information management subprogram  1502 .  
         [0108]     The setting information management table  15020  contains user program information  15021  regarding the user program operating on the host computer  20 , host computer configuration information  15022  regarding the configuration of the host computer  20 , storage system configuration information  15023  regarding the configuration of the storage system  30 , and SW configuration information  15024  regarding the SW  4 .  
         [0109]      FIG. 8  shows an example where the correlations are indicated by a GUI. In other words, the data indicating subprogram  2803  of the client program  2800  obtains node information managed by the node information management subprogram  1501  so as to indicate the obtained node information on a display device of the integration management server  10  or the like. At this time, the correlation between them can be indicated so as to allow the correlation of a certain structure with the other structures to be indicated for the administrator in a clearly understandable manner.  
         [0110]     In the example shown in  FIG. 8 , a logical device name of the storage system  30  corresponding to the device file name used by the user program is indicated. Moreover, the array group of the storage system  30  included in the logical device name used by the host computer  20  is also indicated. Furthermore, the port of the SW  40  corresponding to a WWN of the port of an HBA used by the host computer  20  is also indicated.  
         [0111]      FIG. 9  is an explanatory view of an example of install target information  16020  of the integration management server  10 .  
         [0112]     When the manager program  1000  distributes the first agent program  3000  to the storage system  30 , the manager program  1000  transmits the install target information  16020  corresponding to program storage target information. The storage system  30  refers to the install target information  16020  to store the first agent program  3000 .  
         [0113]     The install target information  16020  includes storage source information  16021 , storage target information  16022 , data collection object information  16023 , and data collection term information  16024 .  
         [0114]     Each of the storage source information  16021  and the storage target information  16022  contains a logical device number, an array group name, a storage system name, a serial number, and an IP address of the controller. As described below, the storage source information  16021  is used for copying the first agent program  3000  already stored in the storage system  30  to another storage target. Therefore, when the manager program  1000  stores the first agent program  3000  in the storage system  30  for the first time, the storage source information  16021  is left blank.  
         [0115]      FIG. 10  is an explanatory view of an example of an obtained data time information management table  12040  of the integration management server  10 .  
         [0116]     The obtained data time information management table  12040  is managed by the obtained data term processing subprogram  1204  of the agent program  1000 , and is used to collect the performance information from the first agent program  3000  and the second agent program  2000  by polling. More specifically, the agent program  1000  refers to the contents of the obtained data time information management table  12040  to obtain information indicating the data collection time, the agent program of the node from which the data is collected, and the validity of the already collected data.  
         [0117]      FIG. 11  is an explanatory view of an example of a node information table  15010  managed by the manager program  1000 .  
         [0118]     In the integration management server  10 , the node information management subprogram  1501  of the node information management module  1500  of the manager program  1000  manages the node information table  15010 .  
         [0119]     The node information table  15010  manages the node (the host computer  20 , the storage system  30 , and the SW  40 ) at which the agent program (the first agent program  3000  and the second agent program  2000 ) is stored and the state of the agent program.  
         [0120]     The node information table  15010  comprises entries including an agent name  15011 , an agent type  15012 , node information  15013 , an active/stop state  15014 , and a control direction  15015 .  
         [0121]     The agent name  15011  stores an identifier of the agent program. The agent type  15012  stores the type of the node of the agent program. The node information  15013  stores information of the node storing the agent program. The active/stop state  15014  stores the current state of the agent program. The control direction  15015  stores a state of the control direction to the agent program.  
         [0122]     For example, for the entry having “Agent A” as the agent name  15011 , the agent type  15012  is indicated as “Storage”. Its node information  15013  is stored in “Logical device #10:00 of Storage A (Serial #1001)”. The control direction  15015  to the agent program is “Stop”. According to the control direction, “Stop” is indicated as the active/stop state  15014 .  
         [0123]     Next, an operation of the computer system having the configuration as described above according to this embodiment of this invention will be described.  
         [0124]     First, the distribution of the agent program will be described.  
         [0125]      FIG. 12  is a sequence diagram of a processing of distributing the first agent program  3000  and the second agent program  2000  by the manager program  1000  of the integration management server  10 .  
         [0126]     In the integration management server  10 , the program distribution management module  1400  of the manager program  1000  first transmits the second agent program  2000  to the host computer  20  designated by the administrator. At the same time, the program distribution management module  1400  transmits setting information necessary for the processing to be executed by the second agent program  2000 . Moreover, the host computer  20  installs and executes the received second agent program  2000 .  
         [0127]     The host computer  20  receiving the second agent program  2000  and the setting information stores the received second agent program  2000  and setting information in the memory  202 . Upon completion of the storage, the host computer  20  transmits a notification indicating the completion of the storage of the second agent program  2000  and the setting information to the integration management server  10  corresponding to a transmission source.  
         [0128]     The manager program  1000 , which receives the notification, transmits the first agent program  3000  to the host computer  20 . At the same time, the manager program  1000  transmits setting information necessary for the processing to be executed by the first agent program  3000 , in particular, information regarding the storage system  30  corresponding to a storage target.  
         [0129]     The first agent program  3000  and the setting information are received by the second agent program  2000  of the host computer  20 . Based on the received setting information, the program distribution management module  2600  of the second agent program  2000  determines the logical device of the storage system  30  into which the first agent program  3000  and the setting information are to be stored. Then, the first agent program  3000  and the setting information are stored in the determined storage location.  
         [0130]     Upon reception of the completion of the I/O of the storage of the first agent program  3000  and the setting information from the storage system  30 , the program distribution management module  2600  transmits a notification indicating the completion of the storage of the first agent program  3000  and the setting information to the integration management server  10 . At the same time, the information of the determined storage target is transmitted.  
         [0131]     The manager program  1000 , which receives the notification, indicates the information of the logical device contained in the received storage target information to the storage system  30  corresponding to the storage target so as to instruct the installation of the first agent program  3000 .  
         [0132]     Thereafter, upon reception of the notification of the completion of the installation of the first agent program  3000  from the storage system  30 , the manager program  1000  terminates the processing of this sequence.  
         [0133]     By the processing of the first agent program  3000  stored by the processing shown in  FIG. 9 , the performance information of the storage system  30  is obtained. Moreover, by the processing of the second agent program  2000 , the performance information of the host computer  20  is obtained. The performance information obtained by the first agent program  3000  is transmitted to the second agent program  2000  of the host computer  20  in a periodic manner, at a predetermined time, or in response to a request of the second agent program  2000  of the host computer  20 . The second agent program  2000  of the host computer  20  transmits the transmitted performance information together with the performance information obtained by itself. The manager program  1000  of the integration management server  10  collects the transmitted performance information.  
         [0134]     Next, a processing of changing the storage location of the first agent program  3000  based on the collected performance information will be described.  
         [0135]      FIGS. 13A  to  13 C are a flowchart and sequence diagrams of the processing for changing the storage location of the first agent program  3000  by the client program  2800 .  
         [0136]     In  FIG. 13A , the data collection subprogram  2802  of the client program  2800  refers to the performance information collected by the manager program  1000 . Then, the data collection subprogram  2802  extracts an array group name corresponding to the logical device name of data of performance information which is larger than a preset lower limit and smaller than a preset upper limit. The data of the performance information may be an IOPS for the array group or the transfer data amount (step S 1001 ).  
         [0137]     Next, the data collection subprogram  2802  refers to the collected performance information so as to extract a name of the host computer  20  having a lower load than a preset load at a time for transmitting the performance information data from the first agent program  3000  to the second agent program  2000  (step S 1002 ).  
         [0138]     In the steps S 1001  and S 1002 , threshold values (an upper limit, a lower limit and a load value) are preset. When there are any array group and host computer exceeding the threshold value, the corresponding array group and host computer are extracted. On the other hand, the integration management server  10  may notify of a threshold value set by the administrator as alarm information so that the array group and the host computer are extracted depending on the presence or the absence of the alarm notification returned when the alarm condition is satisfied. The notification of the alarm will be described below.  
         [0139]     Next, the data collection subprogram  2802  refers to the node information shown in  FIG. 11  from the node information management module  1500  of the manager program  1000 . Then, the data collection subprogram  2802  determines whether or not there are the array group name extracted in the step S 1001  and the host name extracted in the step S 1002  corresponding to the referred node information (step S 1003 ). In other words, it is determined whether or not the array group name corresponding to the logical device name used by the host computer  20  extracted in the step S 1002  contains the array group extracted in the step S 1001 .  
         [0140]     When it is determined that there are corresponding ones, the processing proceeds to a step S 1004 . On the other hand, when it is determined there is no corresponding one, the processing proceeds to a step S 1008 .  
         [0141]     In the step S 1004 , the administrator is notified of performance information having the correlation with the array group and the host computer  20  among the collected performance information as a performance information correspondence table shown in  FIG. 14 . Specifically, the performance information correspondence table is indicated on a display device of the integration management server  10  or the like. Furthermore, the administrator is notified of the performance information correspondence table in an easily understood manner by coloring the performance information having the correlation.  
         [0142]     Upon reception of the notification, the administrator selects the array group to which the first agent program  3000  is to be moved.  
         [0143]     In other words, it is determined whether or not the selection of the array group having the lowest performance among the notified array groups is acceptable (step S 1005 ). The array group having the lowest performance means the array group having the lowest frequency of use in the storage system  30 . Therefore, if the first agent program  3000  is stored in the array group with the lowest performance, the effect of the I/O to/from the array group on the performance information becomes the lowest when the performance information is to be obtained.  
         [0144]     Alternatively, the administrator may refer to the notified performance information to select the array group in which the first agent program  3000  is to be stored (step S 1006 ).  
         [0145]     On the other hand, when it is determined in the step S 1003  that there is no corresponding one, the processing proceeds to a step S 1008  where the administrator is notified of the performance information containing the array group extracted in the step S 1001  and the host computer extracted in the step S 1002 .  
         [0146]     Based on the performance information, the administrator determines the array group, in which the first agent program  3000  is to be stored, and the host computer  20  using the array group (step S 1009 ). At this time, a path from the host computer  20  is not set to the array group, a path between the array group and the host computer  20  is assigned so as to set the array group usable by the host computer  20  (step S 1010 ).  
         [0147]     Next, the client program  2800  determines whether or not the first agent program  3000  is already stored in the array group selected in the step S 1005 , S 1006  or S 1009  (step S 1007 ).  
         [0148]     The case where the first agent program  3000  is already stored corresponds to, for example, the case where the array group and the host computer  20  are not modified or the case where the first agent program  3000  was stored in the array group once before.  
         [0149]     When the first agent program  3000  is not stored yet, the processing proceeds to  FIG. 13B .  
         [0150]     In  FIG. 13B , the client program  2800  of the integration management server  10  passes the processing to the manager program  1000 . The manager program  1000  first transmits the first agent program  3000  and the information of the array group (hereinafter, referred to as storage source information), in which the performance information obtained by the first agent program  3000  is stored, and the information of the array group selected in the step S 1005 , S 1006  or S 1009  (hereinafter, referred to as storage target information) to the storage system  30 .  
         [0151]     In the storage system  30 , the controller  320  refers to the received storage source information and storage target information so as to copy the first agent program  3000  and the performance information stored in the storage source array group to the storage target array group. Upon completion of the copy, the controller  320  transmits a notification of the completion of the copy to the integration management server  10 .  
         [0152]     In the integration management server  10 , the manager program  1000  next determines whether or not the second agent program  2000  is already stored in the host computer  20 . When the second agent program  2000  is not stored, the manager program  1000  transmits the second agent program  2000  and the setting information to the host computer  20 .  
         [0153]     The host computer  20  receiving the second agent program  2000  and the setting information stores the received second agent program  2000  and setting information in the memory  202 . Upon completion of the storage, the host computer  20  transmits a notification indicating the completion of the storage of the second agent program  2000  and the setting information to the integration management server  10  corresponding to a transmission source.  
         [0154]     When the second agent program  2000  is already stored in the host computer  20  and the notification indicating the completion of the storage from the host computer  20  is received, the manager program  1000  first instructs the host computer  20  to install the second agent program  2000 . Next, the manager program  1000  instructs the storage system  30  to install the first agent program  3000 .  
         [0155]     When the installation of the first agent program  3000  and the second agent program  2000  is completed, the performance information is obtained by the processings of the programs. Then, the performance information is collected by the integration management server.  
         [0156]     On the other hand, when the first agent program  3000  is already stored in the step S 1007  ( FIG. 13A ), the processing proceeds to  FIG. 13C .  
         [0157]     In  FIG. 13C , the client program  2800  of the integration management server  10  passes the processing to the manager program  1000 . The manager program  1000  transmits the storage source information corresponding to the information of the array group storing the performance information obtained by the first agent program  3000  and the storage target information to the storage system  30 .  
         [0158]     In the storage system  30 , the controller  320  refers to the received storage source information and storage target information so as to copy the performance information stored in the array group corresponding to the storage source to the array group corresponding to the storage target. Upon completion of the copy, the controller  320  transmits a notification of the completion of the copy to the integration management server  10 .  
         [0159]     When the notification of the completion of the copy from the storage system  30  is received, the manager program  1000  instructs the storage system  30  to install the first agent program  3000 .  
         [0160]     Upon completion of the installation of the first agent program  3000 , the performance information is obtained by the processings of the programs and then is collected by the integration management server  10 .  
         [0161]      FIG. 14  is an explanatory view of an example of the performance information correspondence table displayed in the step S 1004  in  FIG. 13A .  
         [0162]     The performance information correspondence table  4000  contains an entry indicating a correlation between a logical device name  4001  and a host computer name  4005  set to be able to use the logical device. An entry with the performance of the logical device larger than a lower limit and smaller than an upper limit and the host computer having a low load is shaded.  
         [0163]     Each of the entries contains the logical device name  4001 , a storage device name  4002  including the logical device, a storage serial number  4003 , a logical device performance of the logical device  4004 , a host computer name  4005 , a device file name  4006  corresponding to the host computer, a device file performance of the device file  4007 , and a CPU load  4008 .  
         [0164]     The administrator refers to the performance information correspondence table  4000  notified by the integration management server  10  to determine the logical area in which the first agent program  3000  is to be stored.  
         [0165]      FIG. 15  is a flowchart of an alarm notification.  
         [0166]     In the first agent program  3000  and the second agent program  2000 , when the collected performance information satisfies a condition of alarm information based on the alarm information transmitted from the manager program  1000  as an event, the alarm management modules ( 3400  and  2400 ) notifies the manager program  1000  of the collected performance information as an alarm.  
         [0167]     Although the processing is described as that of the alarm management module  3400  of the first agent program  300 , the processing of the alarm management module  2400  of the second agent program  2000  is the same.  
         [0168]     First, in the alarm management module  3400 , the alarm bind information management subprogram  3402  obtains alarm information when the alarm information is contained in the event notified from the manager program  1000  (step S 1401 ).  
         [0169]     Next, the alarm evaluation subprogram  3401  compares the performance information obtained by the data collection management module  3200  and the alarm condition contained in the obtained alarm information so as to determine whether or not the performance information satisfies the alarm condition (step S 1402 ).  
         [0170]     When the performance information does not satisfy the alarm condition, the processing is terminated.  
         [0171]     On the other hand, when the performance information satisfies the alarm condition, the event management subprogram  3403  creates an event indicating the generation of the alarm corresponding to the alarm condition (step S 1403 ). Then, the event management subprogram  3403  transmits the generated event to the manager program  1000 .  
         [0172]     By the above processing, the manager program  1000  is notified of the generation of the alarm.  
         [0173]      FIG. 16  is an explanatory view of an example of an alarm state management table  18020  managed by the alarm management module  1800  of the manager program  1000 .  
         [0174]     The alarm state management table  18020  is managed by the alarm management module  1800  of the manager program  1000 .  
         [0175]     The alarm generation event transmitted by the first agent program  3000  and the second agent program  2000  is received by the event management subprogram  1803  of the alarm management module  1800  of the manager program  1000 . Then, the contents of the alarm generation event are stored in the alarm state management table  18020  by the alarm state management subprogram  1802 .  
         [0176]     The alarm state management table  18020  contains an alarm name  18021 , an alarm generation time  18022 , an alarm generation condition  18023 , data at the time of generation of the alarm  18024 , and a status  18025 .  
         [0177]     The alarm name  18021  stores an identifier attached to each of the received alarms. The alarm generation time  18022  stores information of the time at which the alarm is generated. The alarm generation condition  18023  stores an alarm generation condition set by the administrator. The data at the time of generation of the alarm  18024  stores information of the performance information obtained by the agent program at the time when the alarm is generated. The status  18025  stores the contents of the alarm.  
         [0178]     For example, for the entry with “Alarm 001” as the alarm name  18021 , it is indicated that the alarm is generated at the time indicated by the alarm generation time  18022 , “2005 Jul. 30, 13:00”. The alarm generation condition  18023  is a warning when the IOPS of the logical device #001 exceeds 3000 and is a failure when the IOPS exceeds 4000. For the data at the time of generation of the alarm  18024 , the IOPS is 5500. Therefore, “Failure” is set in the status  18025 .  
         [0179]      FIG. 17  is a sequence diagram of a processing in which the integration management server  10  collects the data.  
         [0180]     In the computer system according to this embodiment, the performance information obtained by the first agent program  3000  of the storage system  30  is temporarily transmitted to the second agent program  2000  of the host computer  20 . The second agent program  2000  transmits the received performance information to the integration management server  10 . At this time, the first agent program  3000  transmits the performance information to the plurality of host computers  20 , in other words, the host computers  20 A and  20 B in a distributed manner.  
         [0181]     First, in the integration management server  10 , the data collection management module  1200  of the manager program  1000  transmits data collection object information and data collection range information to the second agent program  2000  of the host computer  20 A.  
         [0182]     In the host computer  20 A, the data collection management module  2200  of the second agent program  2000  makes a request to the storage system  30  corresponding to a data collection object for the transmission of the obtained performance information in accordance with the received data collection object information and data collection range information. Then, the data collection management module  2200  transmits the received performance information to the integration management server  10 .  
         [0183]     Similarly, the data collection management module  1200  of the manager program  1000  transmits data collection object information and data collection range information to the second agent program  2000  of the host computer  20 B.  
         [0184]     In the host computer  20 B, the data collection management module  2200  of the second agent program  2000  makes a request to the storage system  30  corresponding to a data collection object for the transmission of the obtained performance information in accordance with the received data collection object information and data collection range information. Then, the data collection management module  2200  transmits the received performance information to the integration management server  10 .  
         [0185]     The manager program  1000  refers to the Keys attached to the performance information to arrange the performance information received from the second agent program  2000  in the host computer  20 A and the second agent program  2000  in the host computer  20 B in order of time.  
         [0186]     The data collection range information contains a direction that allows the different host computer  20  to receive the performance information at each time. More specifically, for example, the performance information obtained from 0:00 to 7:59 is received by the host computer  20 A, whereas the performance information obtained from 8:00 to 12:59 is received by the host computer  20 B. In this manner, the performance information is collected by the plurality of host computers in a distributed manner, thereby preventing a load on the particular host computer  20  from being increased.  
         [0187]     The data collection range information may be distributed not by switching the host computer  20  that receives the information for each time but for each port of the storage system  30 , in other words, the path set between the storage system  30  and the host computer  20 . Alternatively, the host computers  20  may be allocated to the respective logical devices set in the storage system  30 .  
         [0188]      FIG. 18  is an explanatory view of the distribution of the performance information obtained by the storage system  30 .  
         [0189]     The first agent program  3000  in the storage system  30  stores the obtained performance information as a database in order of obtainment time as shown in  FIG. 18C .  
         [0190]     The case where the data collection range information is set so that the performance information obtained from 0:00 to 7:59 is collected by the second agent program  2000  of the host computer  20 A and the performance information obtained from 8:00 to 12:59 is collected by the second agent program  2000  of the host computer  20 B will be considered. The second agent program  2000  makes a request to the first agent program  3000  in the storage system  30  for the transmission of the performance information obtained from 0:00 to 7:59. In response to this request, the first agent program  3000  transmits the performance information obtained during the requested time period, in other word,  FIG. 18A , to the host computer  20 A. At this time, the performance information is transmitted with the Key corresponding to identification information indicating the storage system  30  being attached to header information of the data to be transmitted.  
         [0191]     Similarly, the second agent program  2000  of the host computer  20 B makes a request to the first agent program  3000  in the storage system  30  for the transmission of the performance information obtained from 8:00 to 12:59. In response to this request, the first agent program  3000  transmits the performance information obtained during the requested time period, in other word,  FIG. 18B , to the host computer  20 B. At this time, the performance information is transmitted with the Key corresponding to identification information indicating the storage system  30  being attached to header information of the data to be transmitted.  
         [0192]     Each of the second agent program  2000  of the host computer  20 A and the second agent program  2000  of the host computer  20 B transmits the collected performance information to the integration management server  10 .  
         [0193]     In the integration management server  10 , the data integration subprogram  1700  of the manager program  1000  receives the performance information.  
         [0194]     The data integration subprogram  1700  refers to the header information in the performance information transmitted from each of the host computers  20  to group the performance information with the same Key in time series as single performance information. The format of the performance information is the same as that obtained by the storage system  30 , in other words,  FIG. 18C . The data integration subprogram  1700  stores the performance information in the memory  102 .  
         [0195]     In the computer system having the above configuration according to the embodiment of this invention, the first agent program  3000  for obtaining the performance information of the storage system  30  is stored in the storage system  30 . Therefore, the effects of the transmission and reception of data on the network on the performance information can be minimized.  
         [0196]     Moreover, since the performance information obtained by the first agent program  3000  is distributed and then collected by the plurality of host computers  20  so as to be transmitted to the integration management server  10 , a load on the particular host computer  20  or a particular path set between the host computer  20  and the storage system  30  can be reduced.  
         [0197]     Moreover, since the first agent program  3000  stored in the storage system  30  is stored in the logical device whose path is set to the host computer with a lower load among the logical devices of the storage system  30  with a low load, more precise performance information can be collected while being hardly affected by the other processings. At the same time, the effects on the applications operated by the host computer  20  and the storage system  30  can be minimized.  
         [0198]     While the present invention has been described in detail and pictorially in the accompanying drawings, the present invention is not limited to such detail but covers various obvious modifications and equivalent arrangements, which fall within the purview of the appended claims.