WO2015186220A1 - ストレージ装置及びストレージ装置の動作解析方法 - Google Patents

ストレージ装置及びストレージ装置の動作解析方法 Download PDF

Info

Publication number
WO2015186220A1
WO2015186220A1 PCT/JP2014/064935 JP2014064935W WO2015186220A1 WO 2015186220 A1 WO2015186220 A1 WO 2015186220A1 JP 2014064935 W JP2014064935 W JP 2014064935W WO 2015186220 A1 WO2015186220 A1 WO 2015186220A1
Authority
WO
WIPO (PCT)
Prior art keywords
virtual
time
trace information
hypervisor
trace
Prior art date
Application number
PCT/JP2014/064935
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/064935 priority Critical patent/WO2015186220A1/ja
Publication of WO2015186220A1 publication Critical patent/WO2015186220A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment

Definitions

  • the present invention generally relates to a technology in a storage device, and more particularly to a technology for analyzing the operation of the storage device.
  • Patent Documents 1 and 2 There is known a method of analyzing the performance and bottleneck of a computer by tracing the operation state of the computer that changes with the passage of time and analyzing the trace result (Patent Documents 1 and 2).
  • an object of the present invention is to make it possible to easily analyze performance, failure, and the like in a storage apparatus in which a plurality of virtual computers are operating on a hypervisor of a physical computer.
  • Another object of the present invention is to make it possible to easily analyze the cause when a failure or the like occurs in a storage apparatus in which a plurality of virtual computers are operating on a hypervisor of a physical computer.
  • one of the plurality of virtual computers is a block control unit that controls data stored in a predetermined storage area at a block level, and another one of the plurality of virtual computers stores the data. It may be a file control unit that manages data stored in the area at a file level.
  • a storage apparatus includes a plurality of physical resources and a hypervisor that allocates a plurality of physical resources to a plurality of virtual resources provided in a plurality of virtual computers.
  • the hypervisor makes it possible to use a common identifier unique for each timing in a plurality of virtual computers.
  • a block control unit which is one of a plurality of virtual computers and controls data stored in a predetermined storage area at a block level, includes block trace information including information representing an operation state at a block level, and the block trace The common identifier corresponding to the timing at which the operation situation included in the information occurs is associated.
  • a file control unit which is another one of a plurality of virtual computers and controls data stored in the storage area at a file level, file trace information including information indicating an operation status at a file level, and the file
  • file trace information including information indicating an operation status at a file level
  • the common identifier corresponding to the timing at which the operation status included in the trace information occurs is associated.
  • the present invention it is possible to easily analyze performance, failure, and the like in a storage apparatus in which a plurality of virtual computers are operating on a hypervisor of a physical computer. Further, according to the present invention, when a failure or the like occurs in a storage apparatus in which a plurality of virtual computers are operating on a hypervisor of a physical computer, the cause can be easily analyzed.
  • FIG. 1 illustrates an example of a physical configuration of a server system according to a first embodiment.
  • An example of a process in which an OS (Operating System) and a block micro synchronize a system clock at startup will be described.
  • An example of processing for updating the system clock while the block micro and the OS are operating will be described.
  • An example of processing in which the block micro and the OS acquire TSC (Time Stamp Counter) is shown.
  • An example of the whole structure of the server system which concerns on Example 2 is shown.
  • An example of functions of the OS, block micro, and hypervisor is shown.
  • An example of OS disk configuration information is shown.
  • An example of storage configuration information is shown.
  • An example of IRQ (Interrupt ReQuest) information is shown.
  • An example of mapping trace information is shown.
  • An example of the OS trace information regarding a process is shown.
  • An example of OS trace information related to a system call is shown.
  • An example of OS trace information regarding a block is shown.
  • An example of the OS trace information regarding a communication packet is shown.
  • An example of OS trace information related to a CPU (Central Processing Unit) usage status is shown.
  • An example of OS trace information related to the number of IRQ issues is shown.
  • An example of OS trace information related to block I / O (Input / Output) performance is shown.
  • An example of OS trace information related to network I / O performance is shown.
  • An example of OS trace information related to disk I / O performance is shown.
  • An example of the OS trace information regarding the load average is shown.
  • An example of OS trace information related to inode is shown.
  • OS trace information regarding memory performance is shown.
  • storage trace information related to storage performance is shown.
  • An example of storage trace information related to block micro performance is shown.
  • It is a flowchart showing an example of a common time issue process.
  • It is a flowchart showing an example of the update method selection process of a system clock.
  • It is a flowchart showing an example of the update process of system clocks, such as OS.
  • It is a flowchart which shows the example of a trace information collection process.
  • 30 is a sequence chart showing details of processing of an OS trace unit of the first OS shown in FIG. 29. It is a sequence chart showing the detail of the collection process of OS trace part.
  • FIG. 32 is a sequence chart showing details of an OS trace information collection process in each of the OS trace units of the first OS, the second OS, and the third OS in FIG. 31.
  • FIG. 31 is a sequence chart showing details of processing of a storage trace unit of FIG. 30.
  • FIG. It is a sequence chart showing an example of processing of an analysis part. An example of the analysis GUI generated and displayed by the analysis unit is shown.
  • a program is executed by a processor (for example, a CPU), so that a predetermined processing can be appropriately performed with a storage resource (for example, a memory) and Since the processing is performed using at least one of the communication interface devices, the subject of the processing may be a processor and an apparatus having the processor. Part or all of the processing performed by the processor may be performed by a hardware circuit.
  • the computer program may be installed from a program source.
  • the program source may be a program distribution server or a storage medium (for example, a portable storage medium).
  • reference numerals are used like “OS trace information 250”, and when the description is made by distinguishing the same type of elements, the OS trace information is used.
  • an identifier for example, a number assigned to the element may be used instead of the reference numeral of the element.
  • reference numerals are used such as “physical CPU 24a” and “physical CPU 24b”, and the same type of elements are not distinguished. In some cases, only a common number among the reference numerals is used, such as “physical CPU 24”.
  • FIG. 1 shows an example of a physical configuration of the server system 10.
  • a client device is connected to the server system 10 through a communication network 12.
  • the server system 10 provides a service as a file server to the client device 14.
  • the client device 14 can read and write file data with respect to the server system 10.
  • the server system 10 includes, as the controller unit 20, a first physical CPU 24a, a second physical CPU 24b, a hypervisor 22, a memory 26, a first hardware (referred to as “HW”) clock 28a, and a second HW clock 28b. , NIC (Network Interface Card) 21.
  • the server system 10 includes a storage unit 40 including a plurality of drive devices 42.
  • the controller unit 20 and the storage unit 40 are connected by an internal bus 30 that can transmit and receive data bidirectionally. Each element of the controller unit 20 may be two or more.
  • An example of the internal bus 30 is a PCI Express bus.
  • Examples of the memory 26 include a DRAM (Dynamic Random Access Memory), an MRAM (Magnetic Responsive Random Access Memory), or a FeRAM (Ferroelectric Random Access Memory).
  • An example of the communication network 14 is a SAN (Storage Area Network).
  • An example of the NIC 21 in this case is an I / F board that controls the fiber channel protocol.
  • the drive device 42 there is an HDD (Hard Disk Drive) or an SSD (Solid State Drive).
  • the storage unit 40 may configure a RAID (Redundant Arrays of Inexpensive Disks) group using a plurality of drive devices 42.
  • the storage unit 40 may store data written from the client device 14.
  • the controller unit 20 performs a data write process and a read process on the storage unit 40 based on a read request and a write request from the client device 14.
  • the controller unit 20 may constitute a plurality of virtual computers (referred to as “VMs”), and each VM may provide a file server to each client device 14.
  • the hypervisor 22 has a function of realizing a plurality of virtual computers by controlling physical resources (24a, 24b, 26, 28a, 28b, 21). For example, the hypervisor 22 controls the computing resources of the first physical CPU 24a and the second physical CPU 24b to realize a virtual CPU related to a certain VM. Details of the function of the hypervisor 22 will be described later.
  • FIG. 2 shows an example of a process in which the OS 200 and the block micro 300 synchronize the system clock when starting up.
  • the hypervisor 22 controls physical resources (24a, 24b, 28a, 28b), and generates a virtual clock 54a that is a virtual hardware clock and a virtual CPU 52a that is a virtual CPU.
  • the first VM 50a is realized.
  • the hypervisor 22 controls the physical resources (24a, 24b, 28a, 28b) to realize the second VM 50b having the virtual clock 54b and the virtual CPUs 52b, 52c.
  • a block micro 300 that is a kind of computer program or firmware for controlling the storage unit 40 is operating.
  • the block micro 300 has a function of controlling data stored in the storage unit 40 at a block level.
  • an OS 200 which is a kind of computer program for controlling the storage unit 40 is running.
  • the OS 200 has a function of controlling data stored in the storage unit 40 at a file level.
  • the OS 200 may have a function as a file server.
  • the OS 200 may control data stored in the storage unit 40 at a file level through block level information provided by the block micro 300.
  • the block micro 300 and the OS 200 execute a process of synchronizing its own system clock at startup (referred to as “system clock synchronization process”).
  • system clock synchronization process a process of synchronizing its own system clock at startup.
  • the conventional block micro 300 and the OS 200 perform system clock synchronization processing as follows.
  • the block micro 300 issues a time request to the virtual clock 54a.
  • the OS 200 issues a time request to the virtual clock 54b.
  • the hypervisor 22 issues a time request to the first HW clock 28a when the virtual clock 54a is associated with the first HW clock 28a. Further, when the hypervisor 22 associates the virtual clock 54b with the second HW clock 28b in response to the time request from the OS 200, the hypervisor 22 issues a time request to the second HW clock 28b.
  • the hypervisor 22 transfers the time acquired from the first HW clock 28a to the block micro 300 as the virtual clock 54a. Further, the hypervisor 22 transfers the time acquired from the second HW clock 28b to the OS 200 as the virtual clock 54b.
  • the block micro 300 synchronizes the system clock with the time acquired from the first HW clock 28a. Further, the OS 200 synchronizes the system clock with the time acquired from the second HW clock 28b.
  • the hypervisor 22 includes a time synchronization unit 101 for preventing such deviation.
  • the time synchronization unit 101 associates the virtual clock 54 of each VM 50 with a predetermined one HW clock 28, and in response to a time request from the virtual clock 54 of each VM 50, Provide time.
  • the server system 10 according to the present embodiment synchronizes the system clock at startup as follows, for example.
  • the block micro 300 issues a time request to the virtual clock 54a of the first VM 50a (702a). Further, the OS 200 issues a time request to the virtual clock 54b of the second VM 50b (702b).
  • the time synchronization unit 101 of the hypervisor 22 traps the time request from the block micro 300. Further, the time synchronization unit 101 traps a time request from the OS 200.
  • the hypervisor 22 allocates the resource of the first physical CPU 24a to the virtual CPU 52a of the first VM 50a and allocates the resource of the second physical CPU 24b to the virtual CPU 52b of the second VM 50b, the time synchronization unit 101
  • the trapped time request is also transferred to a predetermined first HW clock 28a which is a kind of time physical resource.
  • the time synchronization unit 101 transfers the time 900a acquired from the first HW clock 28a to the time request issuer (block micro 300 or OS 200).
  • the block micro 300 synchronizes the system clock 704a with the time 900a acquired from the first HW clock 28a.
  • the OS 200 also synchronizes the system clock 704b with the time 900a acquired from the first HW clock 28a.
  • both the block micro 300 and the OS 200 synchronize the system clocks 704a and 704b with the time 900a acquired from the same first HW clock 28a, so that the system clock of the block micro 300 and the system clock of the OS 200 are synchronized. There will be no gap between them.
  • FIG. 3 shows an example of processing for updating the system clock while the block micro 300 and the OS 200 are operating.
  • the block micro 300 and the OS 200 execute a process for updating the system clock during operation (referred to as “system clock update process”).
  • system clock update process a process for updating the system clock during operation.
  • the conventional block micro 300 performs system clock update processing as follows.
  • the counter of the first physical CPU 24a issues a clock signal (also referred to as an interrupt signal) to the hypervisor 22 at a constant cycle.
  • the counter of the second physical CPU 24b also issues a clock signal to the hypervisor 22 at a constant cycle.
  • the hypervisor 22 transfers the clock signal issued from the first physical CPU 24a to the block micro 300 as the virtual CPU 52a of the first VM 50a.
  • the hypervisor 22 transfers the clock signal issued from the second physical CPU 24b to the OS 200 as the virtual CPU 52b of the second VM 50b (3).
  • each of the block micro 300 and the OS 200 detects the clock signal, it updates its own system clock.
  • the time synchronization unit 101 of the hypervisor 22 performs, for example, the following processing.
  • the counter 710a of the first physical CPU 24a issues a clock signal to the hypervisor 22 at a constant cycle.
  • the counter 710b of the second physical CPU 24b also issues a clock signal to the hypervisor 22 at a constant cycle.
  • the time synchronization unit 101 of the hypervisor 22 traps the clock signal from the counter 710a of the first physical CPU 24a.
  • the time synchronization unit 101 also traps a clock signal from the counter 710b of the second physical CPU 24b.
  • the time synchronization unit 101 A clock signal issued from a predetermined first physical CPU 24a, which is a kind of physical resource, is transferred to the block micro 300 as the virtual CPU 52a of the first VM 50a, and is also transferred to the OS 200 as the virtual CPU 50b of the second VM 50b.
  • the time synchronization unit 101 does not transfer any clock signal issued from the counter 710b of the second physical CPU 24b.
  • both the block micro 300 and the OS 200 update the system clock according to the clock signal issued from the same first physical CPU 24. Therefore, even if time elapses, the system clock of the block micro 300 and the OS 200 are updated. No deviation from the system clock.
  • FIG. 4 shows an example of processing in which the block micro 300 and the OS 200 acquire TSC.
  • Each of the block micro 300 and the OS 200 may acquire a TSC from the CPU.
  • the time synchronization unit 101 performs the following processing, for example.
  • the block micro 300 issues a TSC request to the virtual clock 54a of the first VM 50a (722a). Further, the OS 200 requests the TSC from the virtual clock 54b of the second VM 50b (722b).
  • the time synchronization unit 101 of the hypervisor 22 traps the TSC request from the block micro 300. Further, the time synchronization unit 101 traps a TSC request from the OS 200.
  • the hypervisor 22 allocates the resource of the first physical CPU 24a to the virtual CPU 52a of the first VM 50a and allocates the resource of the second physical CPU 24b to the virtual CPU 52b of the second VM 50b, the time synchronization unit 101
  • the trapped TSC request is also transferred to the predetermined first HW clock 28a.
  • the time synchronization unit 101 transfers the TSC acquired from the TSC unit 720a of the first HW clock 28a to the TSC request issuer (block micro 300 or OS 200).
  • the block micro 300 uses the TSC acquired from the first HW clock 28a (724a).
  • the OS 200 also uses the TSC acquired from the first HW clock 28a (724b).
  • the administrator of the server system 10 includes the hypervisor 22 operating on the server system 10, the VMs 50 operating on the hypervisor 22, the OS 200 and the block micro 300 operating on the VMs 50, and the like.
  • the trace information collected from the OS 200 and the block micro 300 is set to the collection time given to the trace information. It cannot be simply contrasted based on.
  • FIG. 5 shows a configuration outline of the server system 10 according to the second embodiment.
  • the hypervisor 22 virtualizes computing resources provided by the physical CPUs 24a, 24b, 24c, and 24d to realize virtual CPUs 52a, 52b, 52c, and 52d.
  • the hypervisor 22 allocates one computing resource of the physical CPUs 24a to 24d to one of the virtual CPUs 52a to 52d at a certain time. That is, if the time is different, the physical CPU 24 assigned to the virtual CPU 52 may be different.
  • the first VM 50a has a virtual CPU 52a
  • the second VM 50b has virtual CPUs 52b, 52c and 52d.
  • the block micro 300 that controls the storage unit 40 operates.
  • the first OS 200a operates on the second VM 50b.
  • the first OS 200a virtualizes the computation resources provided by the virtual CPUs 52b, 52c, and 52d, thereby realizing virtual CPUs 52e, 52f, and 52g.
  • the first OS 200a allocates one computing resource of the virtual CPUs 52b to 52d to one of the virtual CPUs 52e to 52g at a certain time.
  • the third VM 50c has virtual CPUs 52e and 52f
  • the fourth VM 50d has a virtual CPU 52g.
  • the second OS 200b is operating on the third VM 50c
  • the third OS 200c is operating on the fourth VM 50d.
  • the first OS 200a, the second OS 200b, the third OS 200c, and the block micro 300 may be collectively referred to as “OS etc.”.
  • the third VM 50c and the second OS 200b (or the fourth VM 50d and the third OS 200c) may be collectively referred to as a “virtual server”.
  • the virtual server may be executed as a process on the first OS 200a.
  • the server system 10 applies the time synchronization method described in the first embodiment so that no time deviation occurs between the system clocks (or TSC) of the OS and the hypervisor 22.
  • each of the OS and the hypervisor 22 refers to its system clock (or TSC) and gives time (collection time described later) to the trace information.
  • the trace information collected by each of the OS and the hypervisor 22 can be accurately compared based on the collection time given to the trace information.
  • the trace information indicating the operating status of the OS 200 is referred to as OS trace information 250
  • the trace information indicating the operating status of the block micro 300 is referred to as storage trace information 350
  • the trace information indicating the operating status of the hypervisor 22 is referred to as mapping trace information 150.
  • the mapping trace information 150 includes, for example, information indicating which virtual CPU 52 is assigned a computation resource of which physical CPU 24 at a certain time. Details of these resource information will be described later.
  • each of the OS and the hypervisor 22 may store the trace information collected by itself in the common buffer area 110. Furthermore, the trace information stored in the buffer area 110 may be output to a predetermined output destination (for example, the file system of the first OS 200a). Details of the present embodiment will be described below.
  • FIG. 6 shows an example of functions of each of the OS 200, the block micro 300, and the hypervisor 22.
  • the OS 200 includes an OS trace unit 204, a kernel 208, and a process scheduler 210 as functions.
  • the OS 200 may further include a trace instruction unit 202 and an analysis unit 206.
  • the OS 200 includes OS disk configuration information 240, IRQ information 230, and OS trace information 250 as information. Details of the information 240, 230, and 250 will be described later.
  • the kernel 208 has various functions that are fundamental to the operation of the OS 200.
  • the kernel 208 performs various resource controls such as CPU resources, memory resources, and network resources, I / O control of commands and data, and process execution control.
  • the process scheduler 210 determines a process to be executed next and an execution time of the process among a plurality of processes, and switches between a process currently being executed and a process to be executed next at a predetermined timing.
  • the process scheduler 210 may exist for each CPU (or for each CPU core).
  • the trace instruction unit 202 instructs the OS trace unit 204 of the own OS and other OS, the storage trace unit 304 of the block micro 300, and the mapping trace unit 104 of the hypervisor 22 to start and end the trace.
  • the trace instruction unit 202 may instruct the start and end of the trace according to an instruction from an administrator of the server system 10 or the like.
  • the OS trace unit 204 collects OS trace information 250 related to the own OS 200. Further, the OS trace unit 204, as necessary, at the collection time of the collected OS trace information 250, the system clock or TSC (hereinafter referred to as “common time”) adjusted by the time synchronization unit 101 as described in the first embodiment. May be given). For example, when the collection time is not given to the collected OS trace information 250, the OS trace unit 204 may assign the common time when the OS trace information 250 is collected to the collection time.
  • the OS trace unit 204 stores the collected OS trace information 250 in the buffer area 110 of the hypervisor 22.
  • the OS trace unit 204 repeats the process of collecting the OS trace information 250 and storing it in the buffer area 110 at a predetermined cycle from the start to the end of the trace. As a result, the OS trace information 250 at each time from the start to the end of the trace is accumulated in the buffer area 110.
  • the OS trace unit 204 may collect OS trace information 250 representing the operation status of the virtual CPU 52, virtual memory, virtual drive, virtual NIC, and the like through the kernel 208.
  • the OS trace unit 204 may collect OS trace information 250 representing the operation status of the process through the process scheduler 210.
  • the analysis unit 206 performs various analyzes on the server system 10 based on the trace information stored in the buffer area 110 of the hypervisor 22. For example, the analysis unit 206 analyzes the performance, bottleneck, and the like in the server system 10 by comparing the OS trace information 250, the storage trace information, and the mapping trace information based on the collection time. For example, the analysis unit 206 may generate and display a GUI that represents the comparison result of the trace information. The administrator can analyze and analyze the performance and bottleneck of the server system 10 by confirming and confirming the displayed GUI.
  • the block micro 300 has a storage trace unit 304 as a function. Further, the block micro 300 has storage configuration information 340 as information. Details of this information 340 will be described later.
  • the storage trace unit 304 collects storage resource information 350 regarding the storage unit 40. Further, similarly to the OS trace unit 204, the storage trace unit 304 may add a common time to the collection time of the collected storage trace information 340 as necessary.
  • the storage trace unit 304 stores the collected storage trace information 340 in the buffer area 110 of the hypervisor 22.
  • the storage trace unit 304 repeats the process of collecting the storage trace information 350 and storing it in the buffer area 110 at a predetermined cycle from the start to the end of the trace. Thereby, the storage trace information 350 at each time from the start to the end of the trace is accumulated in the buffer area 110.
  • the hypervisor 22 includes a resource control unit 102, a time synchronization unit 101, a mapping trace unit 104, a trace output unit 108, a buffer area 110, and a resource scheduler 106 as functions. Further, the hypervisor 22 has mapping trace information 150 as information.
  • the resource control unit 102 has a basic function of the hypervisor 22.
  • the resource control unit 102 controls, for example, physical resources such as the physical CPU 24, the memory 26, and the NIC 21, and configures virtual resources such as the virtual CPU 52, virtual memory, and virtual NIC, and a VM including the virtual resources. .
  • the resource scheduler 106 determines how much physical resources are allocated to which virtual resources. For example, the resource scheduler 106 determines the physical CPU 24 to be allocated to the virtual CPU 52 and its allocation time, and changes the allocation relationship at a predetermined timing.
  • the mapping trace unit 104 collects mapping trace information 150 representing the allocation relationship between physical resources and virtual resources through the resource scheduler 106.
  • the mapping trace information 150 includes, for example, an allocation relationship between the virtual CPU 52 and the physical CPU 24 and a collection time that is in the allocation relationship. Further, the mapping trace unit 104 may add a common time to the collection time of the collected mapping trace information 150 as necessary.
  • the mapping trace unit 104 stores the collected mapping trace information 150 in the buffer area 110 of the hypervisor 22.
  • the mapping trace unit 104 repeats the process of collecting the mapping trace information 150 and storing it in the buffer area 110 at a predetermined cycle from the start to the end of the trace. Thereby, mapping trace information 150 at each time from the start to the end of the trace is accumulated in the buffer area 110.
  • the time synchronization unit 101 causes the system clocks of the OS 200, the block micro 300, and the hypervisor 22 to operate based on a common time. That is, the time synchronization unit 101 assigns a common time to each resource information. As a result, each resource information can be correctly compared based on the common time.
  • the buffer area 110 stores the OS trace information 250, the storage trace information 350, and the mapping trace information 150 at each time from the start to the end of the trace.
  • the trace output unit 108 outputs the trace information accumulated in the buffer area 110 to a predetermined output destination.
  • the predetermined output destination is, for example, a file system of the OS 200 having the analysis unit 206.
  • the analysis unit 206 can analyze the trace information output to the file system or generate a GUI related to the trace information.
  • FIG. 7 shows an example of the OS disk configuration information 240.
  • the OS disk configuration information 240 represents information related to the configuration of a disk (which may be a virtual disk) used by the OS 200.
  • the OS disk configuration information 240 has, as attributes, an OS-ID 241, a partition number 242, a partition name 243, a file LUN (Logical Unit Number) 244, a block LUN 245, and a file system 246.
  • the OS-ID 241 is information for identifying the OS 200 in the server system 10.
  • the partition number 242 is a number for identifying a partition used by the OS 200 corresponding to the OS-ID 241.
  • the partition name 243 is the name of the partition corresponding to the partition number 242.
  • the file LUN 244 is a file level LU (Logical Unit) number in the partitions 242 and 243 used by the OS 200 corresponding to the OS-ID 241.
  • the block LUN 245 is the LU number at the block level in the partitions 242 and 243 provided by the OS 200 corresponding to the OS-ID 241.
  • the file system 246 is information for identifying the file system used by the OS 200 corresponding to the OS-ID 241.
  • the OS disk configuration information 240a and 240b in FIG. 7 indicates that the OS 200 corresponding to the OS-ID 241 “0” has the LUs of the file LUN 244 “1” (block LUN 245 “101”) as “sda1” and “sda2”.
  • the partition 243 (242) is used separately, indicating that the file system 246 of each partition 243 (242) is “fs00”.
  • FIG. 8 shows an example of the storage configuration information 340.
  • the storage configuration information 340 represents information related to the configuration of the storage unit 40 managed by the block micro 300.
  • the storage unit 40 is configured by RAID.
  • the storage configuration information 340 includes a group ID 341, a pool ID 342, a RAID group information 343, a block LUN 344, a tray number 345, and a drive number 346 as attributes.
  • the group ID 341 is information for identifying a RAID group in the server system 10.
  • the pool ID 342 is information for identifying the pool to which the RAID group corresponding to the group ID 341 belongs.
  • the RAID group configuration 343 is information representing the configuration of the RAID group corresponding to the group ID 341.
  • the block LUN 344 is a number for identifying the block level LU provided by the RAID group corresponding to the group ID 341.
  • the tray number 345 is a number for identifying the tray in which the drive corresponding to the drive number 346 is stored.
  • the drive number 346 is a number for identifying a drive constituting the RAID group corresponding to the group ID 341.
  • the RAID group corresponding to the group ID 341 “0” is composed of five drives and one parity drive (5D + 1P) (343), and the block LUN 344 is It represents “101”.
  • This RAID group is composed of three drives with drive numbers 346 “0” to “2” stored in the tray corresponding to the tray number 345 “1”.
  • FIG. 9 shows an example of the IRQ information 230.
  • the IRQ information 230 represents information related to an interrupt from the VM 52 to the OS 200.
  • the IRQ information 230 has an OS-ID 231, an IRQ number 232, and an IRQ name 233 as attributes.
  • the OS-ID 231 is as described in FIG.
  • the IRQ number 232 indicates an IRQ number used for an interrupt (for example, an interrupt of a clock signal).
  • the IRQ name 233 indicates an interrupt name (for example, a clock signal) used in the IRQ number 232.
  • the IRQ information 230a in FIG. 9 indicates that the IRQ number 232 “0” is used for interrupting the IRQ name 233 “timer” in the OS 200 corresponding to the OS-ID 231 “0”.
  • FIG. 10 shows an example of the mapping trace information 150.
  • the mapping trace information 150 represents the allocation status between the virtual CPU 52 and the physical CPU 24 at a certain time.
  • the mapping trace information 150 has a collection time 151, a physical CPU-ID 152, and a virtual CPU-ID 153 as attributes.
  • the collection time 151 represents a common time when the computation resource of the physical CPU 24 corresponding to the physical CPU-ID 152 is allocated to the virtual CPU 52 corresponding to the virtual CPU-ID 153.
  • the collection time 151 may be a common time when the mapping trace unit 104 collects this mapping trace information 150.
  • the physical CPU-ID 152 is information for identifying the physical CPU 24 in the server system 10.
  • the virtual CPU-ID 153 is information for identifying the virtual CPU 52 in the server system 10.
  • the mapping trace information 150a in FIG. 10 includes the computation resource of the physical CPU 24 corresponding to the physical CPU-ID 152 “0” at the collection time 151 “January 1, 2014, 10:10:10, 100 milliseconds”. Is assigned to the virtual CPU 52 corresponding to the virtual CPU-ID 153 “3”.
  • FIGS. 11 to 22 show an example of the OS trace information 250.
  • FIG. 11 shows an example of the OS trace information 250-1 regarding the process.
  • the OS trace information 250-1 regarding a process represents what process was executed at which time in a certain OS 200.
  • the process OS trace information 250-1 has, as attributes, OS-ID 801, collection time 802, virtual CPU-ID 803, PID 804, and command 805.
  • the OS-ID 801 is as described with reference to FIG.
  • the collection time 802 represents the common time when the command 805 is executed.
  • the collection time 802 may be a common time when the OS trace unit 204 collects the OS trace information 250-1.
  • the virtual CPU-ID 803 represents the ID of the virtual CPU 52 used for executing the command 805.
  • a PID 804 represents an ID of a process corresponding to the command 805.
  • a command 805 represents the name of a command (process) executed at the collection time 802.
  • the OS trace information 250-1a related to the process of FIG. 11 is obtained when the OS 200 corresponding to the OS-ID 801 “0” has the collection time 802 “January 1, 2014 10:10:10 seconds 100 milliseconds”. This indicates that the command 805 “flash-8: 0” corresponding to the PID 804 “100” has been executed by the virtual CPU 52 corresponding to the virtual CPU-ID 803 “0”.
  • the OS 200 for example, the first OS 200a
  • the process (PID 804) of this virtual server.
  • OS trace information 250-1 regarding the command 805) can be collected.
  • the OS trace information 250-1 it is possible to know which virtual CPU (VCPU-ID 803) was used to execute the virtual server (PID 804 and command 805) at the collection time 802. it can.
  • the OS trace information 250 collected by the virtual server, the OS trace information 250-1 regarding this process collected by the OS 200 executing this virtual server, and the mapping trace information 150 are obtained based on the collection time. By comparing, the operation status of the virtual server can be analyzed more accurately.
  • FIG. 12 shows an example of the OS trace information 250-2 regarding the system call.
  • the OS trace information 250-2 related to the system call indicates what system call was executed at which time in a certain OS 200.
  • the OS trace information 250-2 related to the system call includes, as attributes, OS-ID 807, collection time 808, PID 809, system call 810, and required time 811.
  • the OS-ID 807 is as described with reference to FIG.
  • the collection time 808 represents a common time (common TSC) when the system call 810 is executed. This collection time 808 may be given by the OS 200 itself or may be given by the OS trace unit 204. The same applies to the following collection times.
  • the PID 809 is as described in FIG.
  • a system call 810 represents the name of the system call executed at the collection time 808.
  • the required time 811 indicates the time required for executing the system call 810.
  • the OS trace information 250-2 required for the system call in FIG. 12 is the system call corresponding to the PID 809 “100” at the collection time 808 “1390523516.549007” in the OS 200 corresponding to the OS-ID 807 “0”. 810 “open” is executed, and the time 811 required for the execution is “0.01 ⁇ s”.
  • FIG. 13 shows an example of the OS trace information 250-3 regarding the block.
  • the OS trace information 250-3 regarding the block indicates which block is in what state at what time in a certain OS 200.
  • the OS trace information 250-3 regarding the block has an OS-ID 813, a collection time 814, an instruction type 815, a sector number 816, an action 817, and an access size 818 as attributes.
  • the OS-ID 813 is as described with reference to FIG.
  • the collection time 814 represents the common time when the instruction type 816 for the sector number 816 is executed.
  • the instruction type 815 represents the type of instruction (such as “write” and “read”).
  • the sector number 816 represents the number of the sector targeted by the instruction corresponding to the instruction type 815.
  • An action 817 represents an action of an instruction corresponding to the instruction type 815.
  • the access size 818 represents the size targeted by the instruction corresponding to the instruction type 815.
  • the OS trace information 250-3a related to the block in FIG. 13 is obtained when the OS 200 corresponding to the OS-ID 813 “0” has a sampling time 814 “January 1, 2014 10:10:10 seconds 100 milliseconds”.
  • the command 815 “write” related to the action 817 “Q” is executed for the block having the access number 818 “512 bytes” from the sector number 816 “2176516288”.
  • FIG. 14 shows an example of the OS trace information 250-4 regarding the communication packet.
  • the OS trace information 250-4 regarding the communication packet represents what communication packet is transmitted and received at which time in a certain OS 200.
  • the OS trace information 205-4 related to the communication packet has an OS-ID 820, a collection time 821, a transmission source 822, a transmission destination 823, a protocol 824, a message 825, and a packet size 826 as attributes.
  • the OS-ID 820 is as described with reference to FIG.
  • the collection time 821 represents a common time when a communication packet is transmitted or received.
  • the transmission source 822 represents the IP address of the transmission source of the communication packet.
  • the transmission destination 823 represents the IP address of the transmission destination of the communication packet.
  • the protocol 824 represents the protocol type of the communication packet.
  • a message 825 represents the message type of the communication packet.
  • the packet size 826 represents the size of the communication packet.
  • the OS trace information 250-4a related to the communication packet in FIG. 14 is obtained when the OS 200 corresponding to the OS-ID 820 “0” has the collection time 821 “January 1, 2014 10:10:10 seconds 100 milliseconds”.
  • a device corresponding to the transmission destination 823 “192.168.0.2” is transmitted from the device corresponding to the transmission source 822 “192.168.0.1” based on the protocol 824 “NFS”. This message indicates that the message 825 “RECV” of “65536 bytes” has been received.
  • FIG. 15 shows an example of OS trace information 250-5 regarding the CPU usage status.
  • the OS trace information 250-5 regarding the CPU usage status represents the usage status of the CPU at a certain time for a certain OS 200.
  • the OS trace information 250-5 relating to the CPU usage status has, as attributes, OS-ID 828, collection time 829, virtual CPU-ID 830, and statistical information (831 to 836) relating to the CPU usage status.
  • the OS-ID 828 is as described in FIG.
  • the collection time 829 represents a common time (common TSC) that is a calculation target of statistical information regarding the usage status of the virtual CPU 52 corresponding to the virtual CPU-ID 830.
  • the virtual CPU-ID 830 is as described with reference to FIG.
  • the statistical information indicating the CPU usage status has the following values, for example.
  • % User (831): CPU usage rate by the user process.
  • % Nice (832): CPU usage rate by the user process whose execution priority has been changed (nice value).
  • % System (833): CPU usage rate by the system process.
  • % Ioowit (834): I / O end waiting time ratio.
  • % Steal (835): Percentage of time that the resource of the physical CPU 24 was not allocated even though the OS 200 requested the resource.
  • % Idle (836): percentage of idle time.
  • the OS trace information 250-5a relating to the CPU usage status in FIG. 15 is the virtual at the sampling time 829 “05/28/2013 01:45:12” in the OS 200 corresponding to the OS-ID 828 “0”. Indicates the usage status (831 to 836) of the virtual CPU 52 corresponding to the CPU-ID 830 “0”.
  • FIG. 16 shows an example of the OS trace information 250-6 regarding the number of IRQs issued.
  • the OS trace information 250-6 related to the number of IRQ issues indicates the status of IRQ issuance at a certain time for a certain OS 200.
  • the OS trace information 250-6 related to the number of IRQs issued includes, as attributes, OS-ID 838, collection time 839, virtual CPU-ID 840, IRQ number 841, and IRQ issuance number 842 per second.
  • the OS-ID 838 is as described with reference to FIG.
  • the collection time 839 represents the common time that is the calculation target of the number of IRQs issued 842 per second.
  • the virtual CPU-ID 840 is as described in FIG.
  • the IRQ number 841 is as described in FIG.
  • the number of IRQs issued 842 in 1 second indicates the number of IRQs issued in 1 second (that is, unit time).
  • the OS trace information 250-6a related to the number of IRQs issued in FIG. 16 is obtained when the OS 200 corresponding to the OS-ID 838 “0” has a collection time 839 “May 28, 2013, 01:45:12”. This indicates that the virtual CPU 52 corresponding to the virtual CPU-ID 840 “0” statistically issued (842) 100 IRQs per second at the IRQ number 841 “10”.
  • FIG. 17 shows an example of the OS trace information 250-7 regarding the block I / O performance.
  • the OS trace information 250-7 regarding the block I / O performance represents the state of reading and writing of a block at a certain time for a certain OS 200.
  • the OS trace information 250-7 related to block I / O performance includes, as attributes, OS-ID 844, collection time 845, and statistical information (846 to 850) related to block I / O performance.
  • the OS-ID 844 is as described with reference to FIG.
  • the collection time 845 represents a common time that is a calculation target of statistical information (846 to 850) regarding block I / O performance.
  • the statistical information regarding the block I / O performance has the following values, for example.
  • tps (846): The number of statistical reads and writes per second.
  • rtps (847): number of statistical reads per second.
  • wtps (848): The number of statistical writes in one second.
  • bread / s (849): number of statistical block reads per second.
  • bwrite / s (850): The number of statistical block writes per second.
  • the OS trace information 250-7a related to the block I / O performance in FIG. 17 is obtained when the collection time 845 of the OS 200 corresponding to the OS-ID 844 “0” is “May 28, 2013 01:45:12”. Indicates the block I / O status (846 to 850).
  • FIG. 18 shows an example of OS trace information 250-8 related to network I / O performance.
  • the OS trace information 250-8 regarding the network I / O performance represents the operation status of the network I / O at a certain time for a certain OS 200.
  • the OS trace information 250-8 related to network I / O performance includes, as attributes, OS-ID 852, collection time 853, IFACE 854, and statistical information (855 to 861) indicating network I / O performance.
  • the OS-ID 852 is as described in FIG.
  • the collection time 853 represents a common time that is the target of calculation of statistical information (855 to 861) related to network I / O performance in IFACE 854.
  • the IFACE 854 is information for identifying a network I / F that is a calculation target of statistical information related to network I / O performance.
  • the statistical information regarding the network I / O performance has the following values, for example.
  • rxpck / s (855): Statistical number of packets received per second.
  • txtck / s (856): Statistical number of packets transmitted per second.
  • rxkB / s (857): Statistical amount of received packet data (kB) per second.
  • txkB / s (858): Statistical transmission packet data amount (kB) per second.
  • rxcmp / s 859): statistical number of compressed received packets per second.
  • txcmp / s (860): Statistical number of compressed packets transmitted per second.
  • txmcst / s (861): Statistical multicast packet number per second.
  • the OS trace information 250-8a regarding the network I / O performance in FIG. 18 is for the OS 200 corresponding to the OS-ID “0” when the collection time 853 “May 28, 2013 01:45:12”. Represents the operation status (855 to 861) of the network I / F 854 “lo”.
  • FIG. 19 shows an example of OS trace information 250-9 related to the disk I / O performance.
  • the OS trace information 250-9 related to the disk I / O performance represents the disk I / O status (866 to 873) at a certain time with respect to a certain OS 200.
  • the OS trace information 250-9 related to the disk I / O performance includes, as attributes, OS-ID 863, collection time 864, DEV 865, and statistical information (866 to 873) related to the disk I / O performance.
  • the OS-ID 863 is as described with reference to FIG.
  • the collection time 864 represents a common time that is a calculation target of statistical information (866 to 873) regarding the disk I / O performance.
  • the DEV 865 is information for identifying a disk device that is a calculation target of statistical information related to the disk I / O.
  • the statistical information related to the disk I / O performance has the following values, for example.
  • tps Number of I / O requests per second (number of transfers).
  • rd_sec / s (867): number of read sectors per second.
  • wr_sec / s (868): number of write sectors per second.
  • avgrq-sz (869): Average sector size of I / O requests to the disk device (1 sector 512 bytes).
  • await (871): Average waiting time (msec) of I / O requests to the disk device.
  • svctm (872): Average processing time (msec) of I / O requests to the disk device.
  • % Util (873): CPU usage rate during an I / O request to the disk device.
  • the OS trace information 250-9a related to the disk I / O performance in FIG. 19 is obtained when the OS 200 corresponding to the OS-ID “0” has the collection time 864 “05/28/2013 01:45:12”. Of the disk I / O corresponding to “dev8-0” (865) (866 to 873).
  • FIG. 20 shows an example of the OS trace information 250-10 regarding the load average.
  • the OS trace information 250-10 relating to the load average represents the situation (877 to 879) relating to the load average of the OS 200 at a certain time with respect to the certain OS 200.
  • the OS trace information 250-10 related to the load average has an OS-ID 875, a collection time 864, and statistical information (877 to 879) related to the load average as attributes.
  • the OS-ID 875 is as described with reference to FIG.
  • the collection time 876 represents the common time that is the calculation target of the statistical information (877 to 879) regarding the road average.
  • the statistical information related to the load average has the following values, for example. runq-sz (877): Length of execution queue (number of processes waiting for execution time). plist-sz (878): number of processes and threads in the process list. ldavg-1 (879): System load average for the past minute.
  • the OS trace information 250-10a related to the load average is the status (related to the load average at the sampling time 876 “May 28, 2013 01:45:12” in the OS 200 corresponding to the OS-ID 875 “0” ( 877-879).
  • FIG. 21 shows an example of the OS trace information 250-11 regarding the inode.
  • the OS trace information 250-11 related to an inode represents the status (882 to 885) related to an inode at a certain time for a certain OS 200.
  • the OS trace information 250-11 related to the inode includes, as attributes, the OS-ID 880, the collection time 864, and statistical information (882 to 885) related to the inode.
  • the OS-ID 880 is as described in FIG.
  • the collection time 881 represents a common time that is a target of calculation of statistical information (882 to 885) related to the inode.
  • the statistical information regarding inode has the following values, for example. dentunousd (882): number of unused cache entries in the directory cache. file-nr (883): number of file handlers in use. inode-nr (884): number of inodes in use. pty-nr (885): Number of pseudo terminals in use.
  • the OS trace information 250-11a related to the inode in FIG. 21 is the status related to the inode at the collection time 881 “May 28, 2013 01:45:12” for the OS 200 corresponding to the OS-ID 880 “0”. (882 to 885).
  • FIG. 22 shows an example of OS trace information 250-12 regarding memory performance.
  • the OS trace information 250-12 related to the memory performance represents the state of the memory (889 to 891) at a certain time with respect to a certain OS 200.
  • the OS trace information 250-12 related to memory performance has, as attributes, OS-ID 887, collection time 888, and statistical information (889 to 891) related to memory performance.
  • the OS-ID 887 is as described with reference to FIG.
  • the collection time 888 represents a common time that is a calculation target of the statistical information (889 to 891) regarding the memory performance.
  • frmpg / s (889): Number of pages of memory released per second.
  • bufpg / s (890): The number of buffer pages allocated per second.
  • campg / s (891): Number of pages cached per second.
  • the OS trace information 250-12a relating to the memory performance in FIG. 22 is stored in the memory at the time of collection time 888 “May 28, 2013 01:45:12” in the OS 200 corresponding to the OS-ID 887 “0”. Indicates the situation (889-891).
  • FIG. 23 shows an example of storage trace information 350-1 regarding storage performance.
  • the storage trace information 350-1 regarding the storage performance represents the status of the storage unit 40 at a certain time (896 to 898) for a certain block micro 300.
  • the storage trace information 350-1 related to storage performance has, as attributes, collection time 893, CTL 894, Disk 895, and statistical information (896 to 898) related to storage performance.
  • the collection time 893 represents a common time that is a calculation target of statistical information (896 to 898) regarding storage performance.
  • the CTL 894 is information for identifying a controller (for example, a RAID controller) related to the storage unit 40.
  • the Disk 895 is information for identifying a disk device controlled by a controller corresponding to the CTL 894.
  • the statistical information regarding the storage performance has the following values, for example. Usage (896): Usage rate of the disk device. Write IOPS (897): Number of writes per second. Response Time (898): Response time to light.
  • the storage trace information 350-1a relating to the storage performance in FIG. 23 is the disk corresponding to CTL “0” and Disk “0” at the collection time 893 “July 12, 2012, 10:27:46”. Indicates the status of the device (896-898).
  • FIG. 24 shows an example of storage trace information 350-2 regarding block micro performance.
  • the storage trace information 350-2 regarding the block micro performance has an operation status (903) of a certain block micro 300 at a certain time.
  • the collection time 900 represents a common time that is a calculation target of statistical information (903) regarding processor performance.
  • the CTL 901 is information for identifying a processor (for example, the virtual CPU 52a in FIG. 5) that operates the block micro 350.
  • the Core 902 is information for identifying the Core in the processor corresponding to the CTL 901.
  • the statistical information regarding the processor performance has the following values, for example. Usage (903): Usage rate of the processor.
  • the storage trace information 350-2a regarding the block micro performance in FIG. 24 is the usage rate of the core “X” of the CTL “0” at the collection time 900 “July 12, 2012, 10:27:46”. 903 represents “80%”.
  • FIGS. 25 to 28 are flowcharts showing an example of a process in which the OS or the like in the second embodiment collects trace information with a common time.
  • FIG. 25 is a flowchart showing an example of the common time issue process.
  • Each OS 200 and block micro 300 (referred to as “OS etc.”) issue a time request (or TSC request) to one virtual clock 54 (or virtual CPU 52) used by itself (S101).
  • the time synchronization unit 101 of the hypervisor 22 traps the time request (or TSC request) to the virtual clock 54 (or virtual CPU 52) and transfers it to a predetermined common HW clock 28 (or common physical CPU 24) ( S102).
  • the time synchronization unit 101 transfers the common time (or common TSC) acquired from the common HW clock 28 (or common physical CPU 24) to the requesting OS or the like (S103).
  • each OS or the like can acquire the common time (or common TSC). Thereby, the collection time based on the common time (or common TSC) is given to each trace information. Therefore, the OS trace information collected by each OS or the like can be accurately compared based on the collection time.
  • FIG. 26 is a flowchart showing an example of a system clock update method selection process.
  • the system clock update method selection process may be executed when the OS or the like is started, or may be executed at a predetermined timing (for example, an instruction from the administrator) while the OS or the like is operating.
  • the OS or the like determines whether NTP (Network Time Protocol) is available (S201).
  • NTP Network Time Protocol
  • the OS or the like When the NTP is available (S201: YES), the OS or the like notifies the time synchronization unit 101 of the hypervisor 22 that the NTP is used (S210). This is because the time synchronization unit 101 does not trap the time request. Then, the OS or the like thereafter sets the system clock to be updated based on NTP (S211), and ends this processing (END).
  • the OS or the like sets the system clock to be updated based on the common time related to the common time issue process shown in FIG. 25 (S203), and ends this process. (END).
  • each OS etc. updates the system clock using the NTP, while when the NTP is unavailable, each OS etc.
  • the system clock is updated based on the issuing process.
  • the system clock between the OSs is synchronized by the common time. That is, according to the above processing, even when NTP cannot be used, the trace information collected by each OS or the like can be accurately compared based on the collection time.
  • FIG. 27 is a flowchart showing an example of update processing of a system clock such as an OS.
  • the system clock of the OS or the like is basically updated based on a clock signal (interrupt signal) issued by the virtual CPU 52 at a constant cycle.
  • a method for updating the system clock of each OS will be described below.
  • a predetermined update physical CPU 24 issues a clock signal (S301).
  • the time synchronization unit 101 of the hypervisor 22 traps the clock signal issued from the updated physical CPU 24 and issues it to each OS as a clock signal from each virtual CPU 52 (S302). As a result, a clock signal is issued to each OS or the like at the same timing.
  • Each OS or the like receives the clock signal issued from the virtual CPU 52 used by itself, and updates the system clock (S303).
  • the time synchronizing unit 101 when the time synchronization unit 101 transfers the clock signal issued from one updated physical CPU 24 among the plurality of physical CPUs 24 to each OS or the like, the time synchronizing unit 101 receives the information from other physical CPUs 24 within the update cycle.
  • the issued clock signal is not transferred to each OS. This is because a clock signal is issued to each OS or the like at a correct update cycle.
  • the updated physical CPU 24 may be different from the common physical CPU 24 described in FIG. Further, the updated physical CPU 24 is not necessarily the same every time.
  • the clock signal is issued to each OS etc. at the same timing, so that the system clock of each OS etc. does not shift even if time elapses. Therefore, the trace information collected by each OS or the like can be accurately compared based on the collection time.
  • FIG. 28 is a flowchart showing an example of the trace information collection process.
  • the trace instruction unit 202 Upon receiving an instruction from the administrator or at a predetermined timing, the trace instruction unit 202 instructs the other OS 200, the block micro 300, and the hypervisor 22 to start collecting trace information (S401). Here, the trace instruction unit 202 may instruct the collection time together with an instruction to start collection.
  • Each of the OS trace unit 204, the storage trace unit 304, and the mapping trace unit 104 that has received an instruction to start collecting trace information collects the trace information and stores it in the buffer area 110 of the hypervisor 22 (S411).
  • the process of S411 is repeatedly executed until the collection time elapses (S402, S411, S420).
  • the trace output unit 108 of the hypervisor 22 outputs the trace information stored in the buffer area 110 to, for example, the file system of the first OS 200a having the analysis unit 206 (S412).
  • the process of S412 may also be repeatedly executed until the collection time elapses (S402, S412, S420).
  • the analysis unit 206 analyzes the trace information output to the file system in S412 (S421). For example, the analysis unit 206 displays the trace information side by side according to the collection time.
  • the analysis unit 206 and the administrator can operate the operating statuses of the OSs 200 and VMs 50 (OS trace information 250), the operating statuses of the block micro 300 and the storage unit 40 (storage trace information 350), physical resources,
  • the status of mapping with virtual resources can be accurately compared based on the collection time.
  • the analysis unit 206 and the administrator can analyze a failure of the server system 10 and a bottleneck.
  • FIG. 29 is a sequence chart showing an example of the overall processing of the server system 10 related to the trace information collection processing.
  • the administrator instructs the trace instruction unit 202 of the first OS 200a to start collecting trace information (1).
  • the trace instruction unit 202 instructs the OS trace unit 204 of the first OS 200a to start collecting the OS trace information 250 (2). Receiving this instruction, the OS trace unit 204 collects the OS trace information 250 until the collection time elapses, and then notifies the trace instruction unit 202 of the completion (3). Details of this processing will be described later with reference to FIGS.
  • the trace instruction unit 202 instructs the storage trace unit 304 of the block micro 300 to start collecting storage trace information (4). Receiving this instruction, the storage trace unit 304 collects the storage trace information 340 until the collection time elapses, and then notifies the completion to the trace instruction unit 202 (5). Details of this processing will be described later with reference to FIG.
  • the trace instruction unit 202 instructs the trace output unit 108 of the hypervisor 22 to output the trace information 250, 340, 150 stored in the buffer area 110 to the file system of the first OS 200a (6, 7). .
  • the trace output unit 108 outputs the trace information accumulated in the buffer area 110 to the file system of the first OS 200 until the collection time elapses (8 to 13). Thereafter, the trace output unit 108 notifies the trace instruction unit 202 of completion (14, 15).
  • the processing (2-3) of the OS trace unit 204, the processing (4-5) of the storage trace unit 304, and the processing (6-15) of the trace output unit 108 in FIG. 29 are executed in parallel. Good. After all these processes are completed, the trace instruction unit 202 notifies the administrator of the completion (16).
  • FIG. 30 is a sequence chart showing details of processing of the OS trace unit 204 of the first OS 200a shown in FIG.
  • the OS trace unit 204 of the first OS 200a instructs the mapping trace unit 104 of the hypervisor 22 to start collecting mapping trace information (1, 2). Upon receiving this instruction, the mapping trace unit 104 repeats the process of collecting the mapping trace information 150 and storing it in the buffer area 110 until the collection time elapses (3 to 7). Thereafter, the mapping trace unit 104 notifies the OS trace unit 204 of completion (8, 9).
  • mapping trace information 150 at each common time is accumulated in the buffer area 110 of the hypervisor 22.
  • the OS trace unit 204 of the first OS 200a collects the OS trace information of its own first OS 200a, and instructs the other OS trace unit 204 of the same layer to collect the OS trace information (10, 11). .
  • this process is not performed because there is no OS 200 in the same layer as the first OS 200a.
  • the processes 1 to 9 and the processes 10 to 11 may be executed in parallel.
  • FIG. 31 is a sequence chart showing the details of the collection process of the OS trace unit 204.
  • the OS trace unit 204 of the first OS 200a (and the OS trace unit 204 that has received an instruction to collect OS trace information) collects the OS trace information 250 (1, 2). Details of this processing will be described later with reference to FIG.
  • the OS trace unit 204 of the first OS 200a instructs the OS trace unit 204 of the second OS 200b and the third OS 200c that are virtually operating on its own first OS 200a to collect OS trace information, and receives this instruction.
  • the OS trace unit 204 of the second OS 200b and the third OS 200c collects the OS trace information 250 (3, 4).
  • the processes 1 and 2 and the processes 3 and 4 may be executed in parallel.
  • FIG. 32 is a sequence chart showing details of the collection processing of the OS trace information 250 in the OS trace units 204 of the first OS 200a, the second OS 200b, and the third OS 200c of FIG.
  • the OS trace unit 204 of each OS 200 accesses the process scheduler 210 or the like used by its own OS 200, collects various OS trace information 250 indicating the operation status of the CPU, and the collected OS trace information 250 is The process of storing in the buffer area 110 of the hypervisor 22 is repeated until the collection time elapses (2 to 8).
  • the OS trace unit 204 accesses the kernel 208 or the like used by its own OS 200, collects various OS trace information 250 indicating the status of the I / O resource, and uses the collected OS trace information 250 as a hypertext. The process of storing in the buffer area 110 of the visor 22 is repeated until the sampling time elapses (11 to 18).
  • the OS trace unit 204 may assign the collection time based on the common time when the OS trace information 250 is collected.
  • the processes 1 to 9 and the processes 10 to 19 may be executed in parallel.
  • the OS trace information 250 for each OS 200 is accumulated in the buffer area 110 of the hypervisor 22.
  • FIG. 33 is a sequence chart showing details of processing of the storage trace unit 304 of FIG.
  • the storage trace unit 304 accesses the storage unit 40 controlled by itself, collects storage trace information 350, and stores the collected storage trace information 350 in the buffer area 110 of the hypervisor 22. Repeat until collection time has elapsed (4-10). Note that when the collection time is not given to the collected storage trace information 350, the storage trace unit 304 may assign the collection time based on the common time when the storage trace information 150 is collected.
  • the storage trace information 350 in each micro block 300 is stored in the buffer area 110 of the hypervisor 22.
  • FIG. 34 is a sequence chart showing processing of the analysis unit 206.
  • the trace information 250, 340, 150 at each time within the collection time is accumulated in the buffer area 110 of the hypervisor 22. Then, the trace information 250, 340, 150 accumulated in the buffer area 110 is output to the file system of the first OS 200a by the trace output unit 108.
  • the analysis unit 206 of the first OS 200 extracts trace information that meets a predetermined condition from the trace information 250, 340, and 150 stored in the file system, and performs various analyzes (1 to 4).
  • This predetermined condition may be input by an administrator.
  • FIG. 35 shows an example of the analysis GUI 1000 generated and displayed by the analysis unit 206.
  • the analysis unit 206 may generate and display a table 1001 in which various attributes included in the OS trace information 250, the storage trace information 340, and the mapping trace information 150 are combined based on the collection time. Thereby, it is possible to easily compare the status of each OS 200, the status of the storage unit 40, and the mapping status of physical resources and virtual resources at a certain collection time.
  • the analysis unit 206 may generate and display a table 1002 including further information regarding the attribute.
  • the administrator can obtain the OS trace information 250 around the certain time collected from the OS 200, the storage unit 40, and the hypervisor 22.
  • the cause of the delay or failure can be easily analyzed and specified.
  • the system clock described above is an example of a common identifier that is an identifier that is different for each operating timing among the block micro 300, the OS 200, and the hypervisor 22.
  • the same effect as the above-described embodiment can be achieved also by the following method.
  • the hypervisor instructs the block micro and OS to initialize a counter (common identifier) at the time of startup. Each of the block micro and the OS sets its own counter to an initial value based on the initialization instruction. At this time, the hypervisor similarly sets its own counter to the initial value.
  • the hypervisor instructs the block micro and the OS to update the counter at a predetermined cycle. Each of the block micro and the OS updates its counter based on the update instruction. At this time, the hypervisor similarly updates its own counter.
  • the block micro, the OS, and the hypervisor may add a counter value when the storage trace information, the OS trace information, and the mapping trace information are collected instead of the collection time.
  • a hypervisor that allocates the plurality of physical resources to a plurality of virtual resources provided in a plurality of virtual computers, The hypervisor makes it possible to use a common identifier unique for each timing in the plurality of virtual computers, A block control unit that is one of the plurality of virtual computers and controls data stored in a predetermined storage area at a block level, block trace information including information representing an operation state of the block level, and Associating the common identifier corresponding to the timing at which the operation status included in the block trace information occurs, A file control unit that is another one of the plurality of virtual computers and controls data stored in the storage area at a file level, file trace information including information representing an operation status of the file level, A storage apparatus that associates the common identifier corresponding to the timing at which the operation status included in the file trace information occurs.
  • the hypervisor includes mapping trace information including information indicating an allocation status of the plurality of physical resources for the plurality of virtual resources, and the common identifier corresponding to a timing at which an allocation status included in the mapping trace information occurs, 2.
  • ⁇ Expression 4> The mapping trace information collected by the hypervisor, the block trace information collected by the block control unit, and the file trace information collected by the file control unit, the common identifier associated with these information 4.
  • the storage apparatus according to any one of expressions 1 to 3, further comprising a display unit that displays in a manner that can be compared based on.
  • the common identifier used in each virtual computer is an identifier related to the system time of each virtual computer, 5.
  • Storage device ⁇ Expression 6>
  • the hypervisor traps a clock signal issued from each of the plurality of physical resources, and from one physical resource of the plurality of physical resources regardless of the allocation relationship between the virtual resource and the physical resource.
  • each of the virtual computers adjusts the system time using the first clock signal issued from the hypervisor.
  • the hypervisor traps the issued time request, obtains time information from one physical resource of the plurality of physical resources, and obtains the obtained time information from a virtual source of the time request issuer.
  • each of the virtual computers adjusts the system time based on the time information returned from the hypervisor.
  • server system 20 controller unit 22: hypervisor 24: physical CPU 28: hardware clock 40: storage unit 52: virtual CPU 101: time synchronization unit 150: mapping trace information 250; OS trace information 350: storage trace information

Abstract

ストレージ装置において、ハイパーバイザは、タイミング毎に一意な共通識別子を、ブロック制御部及びファイル制御部において使用できるようにし、ブロック制御部は、記憶領域に対するブロックレベルの動作状況を表すブロックトレース情報とその動作状況が発生したタイミングに対応する共通識別子とを関連付け、ファイル制御部は、記憶領域に対するファイルレベルの動作状況を表すファイルトレース情報とその動作状況が発生したタイミングに対応する共通識別子と、を関連付ける。

Description

ストレージ装置及びストレージ装置の動作解析方法
 本発明は、概して、ストレージ装置における技術に関し、特にストレージ装置の動作を解析する技術に関する。
 時刻の経過と共に変化するコンピュータの動作状況をトレースし、そのトレース結果を解析することにより、そのコンピュータの性能及びボトルネックなどを解析する方法が知られている(特許文献1、2)。
US2013/0227690 US2006/0190596
 しかし、物理的なコンピュータ上で仮想的なコンピュータが稼働しているコンピュータシステムにおいて、物理コンピュータの動作状況を表すトレース情報と、仮想コンピュータの動作状況を表すトレース情報とは、それぞれ別々に採取され、それぞれ別々に解析が行われていた。そのため、仮想コンピュータ又は物理コンピュータの何れか一方で発生した障害に起因して他方で問題が発生した場合、その関連性を特定することが困難であった。ハイパーバイザ上で複数の仮想コンピュータが稼働し、その仮想コンピュータ上でさらに仮想サーバが稼働するような多重化した仮想化環境では、その関連性を特定することはより困難になると予測される。
 そこで、本発明の目的は、物理コンピュータの有するハイパーバイザ上で複数の仮想コンピュータが稼働しているストレージ装置において、性能及び障害等を容易に解析できるようにすることにある。また、本発明の別の目的は、物理コンピュータの有するハイパーバイザ上で複数の仮想コンピュータが稼働しているストレージ装置において障害等が発生した場合に、その原因を容易に解析できるようにすることにある。ここで、複数の仮想コンピュータの内の1つは、所定の記憶領域に記憶されたデータをブロックレベルで制御するブロック制御部であり、複数の仮想コンピュータの内の別の1つは、その記憶領域に記憶されたデータをファイルレベルで管理するファイル制御部であってもよい。
 本発明の一実施例に係るストレージ装置は、複数の物理リソースと、複数の仮想コンピュータに設けられる複数の仮想リソースに複数の物理リソースを割り当てるハイパーバイザと、を有する。
 ハイパーバイザは、タイミング毎に一意な共通識別子を、複数の仮想コンピュータにおいて使用できるようにする。
 複数の仮想コンピュータの内の1つであり、所定の記憶領域に記憶されたデータをブロックレベルで制御するブロック制御部は、ブロックレベルの動作状況を表す情報を含むブロックトレース情報と、そのブロックトレース情報に含まれる動作状況が発生したタイミングに対応する共通識別子と、を関連付ける。
 複数の仮想コンピュータの内の別の1つであり、前記記憶領域に記憶されたデータをファイルレベルで制御するファイル制御部は、ファイルレベルの動作状況を表す情報を含むファイルトレース情報と、そのファイルトレース情報に含まれる動作状況が発生したタイミングに対応する共通識別子と、を関連付ける。
 本発明によれば、物理コンピュータの有するハイパーバイザ上で複数の仮想コンピュータが稼働しているストレージ装置において、性能及び障害等を容易に解析することができる。また、本発明によれば、物理コンピュータの有するハイパーバイザ上で複数の仮想コンピュータが稼働しているストレージ装置において障害等が発生した場合に、その原因を容易に解析することができる。
実施例1に係るサーバシステムの物理的な構成の一例を示す。 OS(Operating System)及びブロックマイクロが起動時にシステムクロックを同期する処理の一例を示す。 ブロックマイクロ及びOSが稼働中にシステムクロックを更新する処理をの一例を示す。 ブロックマイクロ及びOSがTSC(Time Stamp Counter)を取得する処理の一例を示す。 実施例2に係るサーバシステムの全体構成の一例を示す。 OS、ブロックマイクロ及びハイパーバイザの各々が有する機能の一例を表す。 OSディスク構成情報の一例を示す。 ストレージ構成情報の一例を示す。 IRQ(Interrupt ReQuest)情報の一例を示す。 マッピングトレース情報の一例を示す。 プロセスに関するOSトレース情報の一例を示す。 システムコールに関するOSトレース情報の一例を示す。 ブロックに関するOSトレース情報の一例を示す。 通信パケットに関するOSトレース情報の一例を示す。 CPU(Central Processing Unit)使用状況に関するOSトレース情報の一例を示す。 IRQ発行数に関するOSトレース情報の一例を示す。 ブロックI/O(Input/Output)性能に関するOSトレース情報の一例を表す。 ネットワークI/O性能に関するOSトレース情報の一例を表す。 ディスクI/O性能に関するOSトレース情報の一例を表す。 ロードアベレージに関するOSトレース情報の一例を表す。 inodeに関するOSトレース情報の一例を表す。 メモリ性能に関するOSトレース情報の一例を示す。 ストレージ性能に関するストレージトレース情報の一例を示す。 ブロックマイクロ性能に関するストレージトレース情報の一例を示す。 共通時刻発行処理の一例を表すフローチャートである。 システムクロックの更新方法選択処理の一例を表すフローチャートである。 OS等のシステムクロックの更新処理の一例を表すフローチャートである。 トレース情報収集処理の例を示すフローチャートである。 トレース情報収集処理に係るシステム全体の処理の一例を表すシーケンスチャートである。 図29に示した第1OSのOSトレース部の処理の詳細を表すシーケンスチャートである。 OSトレース部の収集処理の詳細を表すシーケンスチャートである。 図31の第1OS、第2OS及び第3OSのそれぞれのOSトレース部におけるOSトレース情報の収集処理の詳細を表すシーケンスチャートである。 図30のストレージトレース部の処理の詳細を表すシーケンスチャートである。 解析部の処理の一例を表すシーケンスチャートである。 解析部によって生成及び表示される解析用GUIの一例を表す。
 以下、図面を参照しながら実施例を説明する。
 以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU)によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び通信インターフェイスデバイスのうちの少なくとも1つを用いながら行うため、処理の主語が、プロセッサ、そのプロセッサを有する装置とされてもよい。プロセッサが行う処理の一部又は全部が、ハードウェア回路で行われてもよい。コンピュータプログラムは、プログラムソースからインストールされてよい。プログラムソースは、プログラム配布サーバ又は記憶メディア(例えば可搬型の記憶メディア)であってもよい。
 また、以下の説明では、同種の要素を区別しないで説明する場合には、「OSトレース情報250」のように参照符号を使用し、同種の要素を区別して説明する場合には、OSトレース情報250-1及び250-2のように、その要素の参照符号に代えて、その要素に割り振られた識別子(例えば番号)を使用することがある。また、以下の説明では、同種の要素を区別して説明する場合には、「物理CPU24a」、「物理CPU24b」のように、参照符号を使用し、同種の要素を区別しないで説明する場合には、「物理CPU24」のように参照符号のうちの共通番号のみを使用することがある。
 図1は、サーバシステム10の物理的な構成の一例を示す。
 サーバシステム10には、通信ネットワーク12を通じて、クライアント装置が接続されている。サーバシステム10は、クライアント装置14に対して、ファイルサーバとしてのサービスを提供する。クライアント装置14は、サーバシステム10に対してファイルデータのリード及びライトなどを行うことができる。
 サーバシステム10は、コントローラ部20として、第1物理CPU24aと、第2物理CPU24bと、ハイパーバイザ22と、メモリ26と、第1ハードウェア(「HW」という)クロック28aと、第2HWクロック28bと、NIC(Network Interface Card)21とを有する。サーバシステム10は、複数のドライブ装置42から構成されるストレージ部40を有する。コントローラ部20とストレージ部40とは、双方向にデータの送受信が可能な内部バス30で接続されている。コントローラ部20の有する各要素は何れも2以上であってもよい。
 内部バス30の一例としては、PCI Expressバスがある。メモリ26の一例としては、DRAM(Dynamic Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)又はFeRAM(Ferroelectric Random Access Memory)などがある。通信ネットワーク14の一例としては、SAN(Storage Area Network)がある。この場合のNIC21の一例としては、ファイバチャネルプロトコルを制御するI/Fボードがある。ドライブ装置42の一例としては、HDD(Hard Disk Drive)又はSSD(Solid State Drive)などがある。ストレージ部40は、複数のドライブ装置42を用いてRAID(Redundant Arrays of Inexpensive Disks)グループを構成してよい。ストレージ部40には、クライアント装置14からライトされたデータが格納されてよい。
 コントローラ部20は、クライアント装置14からのリード要求及びライト要求などに基づいて、ストレージ部40に対してデータのライト処理及びリード処理などを行う。コントローラ部20は、複数の仮想コンピュータ(「VM」という)を構成し、それぞれのVMが、各クライアント装置14にファイルサーバを提供してもよい。ハイパーバイザ22は、物理的なリソース(24a、24b、26、28a、28b、21)を制御して、複数の仮想コンピュータを実現する機能を有する。例えば、ハイパーバイザ22は、第1物理CPU24a及び第2物理CPU24bの演算リソースを制御して、或るVMに係る仮想的なCPUを実現する。ハイパーバイザ22の機能の詳細については後述する。
 図2は、OS200及びブロックマイクロ300が起動時にシステムクロックを同期する処理の一例を示す。
 図2において、ハイパーバイザ22は、物理的なリソース(24a、24b、28a、28b)を制御して、仮想的なハードウェアクロックである仮想クロック54aと、仮想的なCPUである仮想CPU52aとを有する第1VM50aを実現する。同様に、ハイパーバイザ22は、物理的なリソース(24a、24b、28a、28b)を制御して、仮想クロック54bと、仮想CPU52b、52cとを有する第2VM50bを実現する。
 第1VM50a上では、ストレージ部40を制御するためのコンピュータプログラム又はファームウェアの一種であるブロックマイクロ300が稼働している。ブロックマイクロ300は、ストレージ部40に蓄積されたデータを、ブロックレベルで制御する機能を有する。第2VM50b上では、ストレージ部40を制御するためのコンピュータプログラムの一種であるOS200が稼働している。OS200は、ストレージ部40に蓄積されたデータを、ファイルレベルで制御する機能を有する。OS200は、ファイルサーバとしての機能を有してもよい。OS200は、ストレージ部40に蓄積されたデータを、ブロックマイクロ300の提供するブロックレベルの情報を通じて、ファイルレベルで制御してもよい。
 ブロックマイクロ300及びOS200は、起動時に自己のシステムクロックを同期させる処理(「システムクロック同期処理」という)を実行する。従来のブロックマイクロ300及びOS200は、以下のようにシステムクロック同期処理を行う。
(1)ブロックマイクロ300は仮想クロック54aに時刻要求を発行する。また、OS200は仮想クロック54bに時刻要求を発行する。
(2)ブロックマイクロ300からの時刻要求に対して、ハイパーバイザ22は、仮想クロック54aと第1HWクロック28aとを対応付けている場合、第1HWクロック28aに時刻要求を発行する。また、OS200からの時刻要求に対して、ハイパーバイザ22は、仮想クロック54bと第2HWクロック28bとを対応付けている場合、第2HWクロック28bに時刻要求を発行する。
(3)ハイパーバイザ22は、第1HWクロック28aから取得した時刻を、仮想クロック54aとしてブロックマイクロ300へ転送する。また、ハイパーバイザ22は、第2HWクロック28bから取得した時刻を、仮想クロック54bとしてOS200へ転送する。
(4)ブロックマイクロ300は、第1HWクロック28aから取得した時刻に、システムクロックを同期させる。また、OS200は、第2HWクロック28bから取得した時刻に、システムクロックを同期させる。
 ここで、第1HWクロック28aと第2HWクロック28bとの間にズレが存在する場合、第1VM50a上で稼働するブロックマイクロ300のシステムクロックと、第2VM50b上で稼働するOS200のシステムクロックとの間にズレが生じ得る。ブロックマイクロ300及びOS200の各々は、自己のシステムクロックを参照してトレース情報に時刻(後述する「採取時刻」)を付与するため、システムクロックにズレが存在すると、ブロックマイクロ300に係るトレース情報と、OS200に係るトレース情報とを正確に対比することができない。
 そこで、本実施例に係るハイパーバイザ22は、このようなズレを防止するための時刻同期部101を有する。時刻同期部101は、各VM50が有する仮想クロック54と、所定の1のHWクロック28とを対応付け、各VM50の仮想クロック54からの時刻要求に対して、その所定の1のHWクロック28の時刻を提供する。本実施例に係るサーバシステム10は、例えば以下のように起動時のシステムクロックを同期する。
(1)ブロックマイクロ300は、第1VM50aの仮想クロック54aに時刻要求を発行する(702a)。また、OS200は、第2VM50bの仮想クロック54bに時刻要求を発行する(702b)。
(2)ハイパーバイザ22の時刻同期部101は、ブロックマイクロ300からの時刻要求をトラップする。また、時刻同期部101は、OS200からの時刻要求をトラップする。
(3)ハイパーバイザ22が、第1物理CPU24aのリソースを第1VM50aの仮想CPU52aに割り当て、第2物理CPU24bのリソースを第2VM50bの仮想CPU52bに割り当てていたとしても、時刻同期部101は、何れのトラップした時刻要求も、時刻用物理リソースの一種である所定の第1HWクロック28aに転送する。
(4)時刻同期部101は、第1HWクロック28aから取得した時刻900aを、時刻要求の発行元(ブロックマイクロ300又はOS200)へ転送する。
(5)ブロックマイクロ300は、第1HWクロック28aから取得した時刻900aにシステムクロック704aを同期させる。また、OS200も、第1HWクロック28aから取得した時刻900aにシステムクロック704bを同期させる。
 以上の処理によれば、ブロックマイクロ300及びOS200の両方が、同じ第1HWクロック28aから取得した時刻900aにシステムクロック704a、704bを同期させるので、ブロックマイクロ300のシステムクロックとOS200のシステムクロックとの間でズレが発生しなくなる。
 図3は、ブロックマイクロ300及びOS200が稼働中にシステムクロックを更新する処理をの一例を示す。
 ブロックマイクロ300及びOS200は、稼働中にシステムクロックを更新させる処理(「システムクロック更新処理」という)を実行する。従来のブロックマイクロ300は、以下のようにシステムクロック更新処理を行う。
(1)第1物理CPU24aのカウンタは、一定の周期でハイパーバイザ22にクロック信号(割込信号ともいう)を発行する。また、第2物理CPU24bのカウンタも、一定の周期でハイパーバイザ22にクロック信号を発行する。
(2)ハイパーバイザ22は、第1物理CPU24aのリソースを第1VM50aの仮想CPU52aに割り当てている場合、第1物理CPU24aから発行されたクロック信号を、第1VM50aの仮想CPU52aとしてブロックマイクロ300へ転送する。また、ハイパーバイザ22は、第2物理CPU24bのリソースを第2VM50bの仮想CPU52bに割り当てている場合、第2物理CPU24bから発行されたクロック信号を、第2VM50bの仮想CPU52bとしてOS200へ転送する
(3)ブロックマイクロ300及びOS200の各々は、クロック信号を検知すると、自己のシステムクロックを更新する。
 ここで、第1物理CPU24aがクロック信号を発行する周期と、第2物理CPU24bがクロック信号を発行する周期との間にズレが存在する場合、時間の経過と共に、ブロックマイクロ300のシステムクロックとOS200のシステムクロックとがズレてしまう。そこで、本実施例に係るハイパーバイザ22の時刻同期部101は、例えば、以下のような処理を行う。
(1)第1物理CPU24aのカウンタ710aは、一定の周期でハイパーバイザ22にクロック信号を発行する。また、第2物理CPU24bのカウンタ710bも、一定の周期でハイパーバイザ22にクロック信号を発行する。
(2)ハイパーバイザ22の時刻同期部101は、第1物理CPU24aのカウンタ710aからのクロック信号をトラップする。同様に、時刻同期部101は、第2物理CPU24bのカウンタ710bからのクロック信号もトラップする。
(3)ハイパーバイザ22が、第1物理CPU24aのリソースを第1VM50aの仮想CPU52aに割り当て、第2物理CPU24bのリソースを第2VM50bの仮想CPU52bに割り当てていたとしても、時刻同期部101は、更新用物理リソースの一種である所定の第1物理CPU24aから発行されたクロック信号を、第1VM50aの仮想CPU52aとしてブロックマイクロ300へ転送すると共に、第2VM50bの仮想CPU50bとしてOS200へも転送する。一方、時刻同期部101は、第2物理CPU24bのカウンタ710bから発行されたクロック信号は何れにも転送しない。
 以上の処理によれば、ブロックマイクロ300及びOS200の両方が、同じ第1物理CPU24から発行されたクロック信号に従ってシステムクロックを更新するので、時間が経過しても、ブロックマイクロ300のシステムクロックとOS200のシステムクロックとの間でズレが発生しなくなる。
 図4は、ブロックマイクロ300及びOS200がTSCを取得する処理の一例を示す。
 ブロックマイクロ300及びOS200の各々は、CPUからTSCを取得する場合がある。この場合、本実施例に係る時刻同期部101は、例えば、以下の様な処理を行う。
(1)ブロックマイクロ300は、第1VM50aの仮想クロック54aにTSC要求を発行する(722a)。また、OS200は、第2VM50bの仮想クロック54bにTSCを要求する(722b)。
(2)ハイパーバイザ22の時刻同期部101は、ブロックマイクロ300からのTSC要求をトラップする。また、時刻同期部101は、OS200からのTSC要求をトラップする。
(3)ハイパーバイザ22が、第1物理CPU24aのリソースを第1VM50aの仮想CPU52aに割り当て、第2物理CPU24bのリソースを第2VM50bの仮想CPU52bに割り当てていたとしても、時刻同期部101は、何れのトラップしたTSC要求も所定の第1HWクロック28aに転送する。
(4)時刻同期部101は、第1HWクロック28aのTSC部720aから取得したTSCを、TSC要求の発行元(ブロックマイクロ300又はOS200)へ転送する。
(5)ブロックマイクロ300は、第1HWクロック28aから取得したTSCを使用する(724a)。また、OS200も、第1HWクロック28aから取得したTSCを使用する(724b)。
 以上の処理によれば、ブロックマイクロ300及びOS200の両方が、同じ第1物理CPU24aのTSC部720aから取得したTSCを使用するので、ブロックマイクロ300のTSCとOS200のTSCとの間でズレが発生しなくなる。
 サーバシステム10の管理者は、サーバシステム10上で稼働しているハイパーバイザ22、そのハイパーバイザ22上で稼働している各VM50、及びその各VM50上で稼働しているOS200及びブロックマイクロ300などの動作状況をトレースすることにより、サーバシステム10におけるボトルネック及び不具合などを解析することがある。しかし、従来のように、OS200及びブロックマイクロ300のそれぞれのシステムクロックにズレが存在し得る場合、OS200及びブロックマイクロ300のそれぞれから採取したトレース情報を、そのトレース情報に付与されている採取時刻に基づいて単純に対比することはできない。なぜなら、OS200から採取したトレース情報に係る動作状況と、ブロックマイクロ200から採取したトレース情報に係る動作状況とが現実には同じ時刻に発生していたとしても、それぞれがシステムクロックに基づいて付与したトレース情報の採取時刻がズレていることも考えられるからである。そこで、実施例2では、実施例1で説明した時刻同期の方法を適用したサーバシステム10について説明する。なお、図1に示した要素と同様の要素に対しては同一の符号を付し、説明を省略する場合がある。
 図5は、実施例2に係るサーバシステム10の構成概要を示す。
 図5において、ハイパーバイザ22は、物理CPU24a、24b、24c及び24dが提供する演算リソースを仮想化し、仮想CPU52a、52b、52c及び52dを実現する。ハイパーバイザ22は、或る時間において、物理CPU24a~24dの内の1つの演算リソースを、仮想CPU52a~52dの内の1つに割り当てる。つまり、時間が異なれば、仮想CPU52に割り当てられる物理CPU24は異なり得る。
 第1VM50aは仮想CPU52aを有し、第2VM50bは仮想CPU52b、52c及び52dを有する。第1VM50a上では、ストレージ部40を制御するブロックマイクロ300が稼働する。第2VM50b上では、第1OS200aが稼働する。さらに、第1OS200aは、仮想CPU52b、52c及び52dが提供する演算リソースを仮想化し、仮想CPU52e、52f、52gを実現する。第1OS200aは、或る時間において、仮想CPU52b~52dの内の1つの演算リソースを、仮想CPU52e~52gの内の1つに割り当てる。第3VM50cは仮想CPU52e、52fを有し、第4VM50dは仮想CPU52gを有する。第3VM50c上では第2OS200bが稼働し、第4VM50d上では第3OS200cが稼働している。
 以下、第1OS200a、第2OS200b、第3OS200c及びブロックマイクロ300をまとめて「OS等」という場合がある。また、第3VM50c及び第2OS200b(又は第4VM50d及び第3OS200c)をまとめて「仮想サーバ」といってもよい。仮想サーバは、第1OS200a上のプロセスとして実行されてよい。
 ここで、OS等及びハイパーバイザ22の各々が、自己のトレース情報に採取時刻を付与するにあたり、従来のようにシステムクロックにズレが存在し得ると、上述のとおり、それぞれから採取したトレース情報を正確に対比することができない。
 そこで本実施例に係るサーバシステム10は、実施例1で述べた時刻同期の方法を適用し、OS等及びハイパーバイザ22の各々のシステムクロック(又はTSC)の間に時刻のズレが発生しないようにする。そして、OS等及びハイパーバイザ22の各々は、そのシステムクロック(又はTSC)を参照して、トレース情報に時刻(後述する採取時刻)を付与する。これにより、OS等及びハイパーバイザ22の各々で採取されたトレース情報を、そのトレース情報に付与された採取時刻に基づいて正確に対比することができる。
 なお、OS200の動作状況を表すトレース情報をOSトレース情報250と、ブロックマイクロ300の動作状況を表すトレース情報をストレージトレース情報350と、ハイパーバイザ22の動作状況を表すトレース情報をマッピングトレース情報150という。マッピングトレース情報150は、例えば、或る時刻において、何れの物理CPU24の演算リソースが何れの仮想CPU52に割り当てられているかを表す情報を含む。その他、これらのリソース情報の詳細については後述する。
 また、OS等及びハイパーバイザ22の各々は、自己が採取したトレース情報を共通のバッファ領域110に格納してもよい。さらに、このバッファ領域110に格納されたトレース情報は、所定の出力先(例えば、第1OS200aのファイルシステム)に出力されてもよい。以下、本実施例の詳細について述べる。
 図6は、OS200、ブロックマイクロ300及びハイパーバイザ22の各々が有する機能の一例を表す。
 OS200は、機能として、OSトレース部204と、カーネル208と、プロセススケジューラ210とを有する。OS200は、更に、トレース指示部202と、解析部206とを有してもよい。また、OS200は、情報として、OSディスク構成情報240と、IRQ情報230と、OSトレース情報250とを有する。これらの情報240、230、250の詳細については後述する。
 カーネル208は、OS200の動作の基本となる各種機能を有する。例えば、カーネル208は、CPUリソース、メモリリソース及びネットワークリソースなどの各種リソース制御、コマンド及びデータのI/O制御、並びにプロセスの実行制御などを行う。
 プロセススケジューラ210は、複数のプロセスの内、次に実行するプロセス及びそのプロセスの実行時間などを判定し、所定のタイミングで、現在実行中のプロセスと次に実行するプロセスとを切り替える。プロセススケジューラ210は、CPU毎(又はCPUのコア毎)に存在してよい。
 トレース指示部202は、自OS及び他OSのOSトレース部204、ブロックマイクロ300のストレージトレース部304、並びにハイパーバイザ22のマッピングトレース部104に対して、トレースの開始及び終了を指示する。トレース指示部202は、サーバシステム10の管理者等からの指示に応じて、トレースの開始及び終了を指示してもよい。
 OSトレース部204は、自OS200に関するOSトレース情報250を採取する。また、OSトレース部204は、必要に応じて、その採取したOSトレース情報250の採取時刻に、実施例1で述べたように時刻同期部101によって調整されたシステムクロック又はTSC(以下「共通時刻」という)を付与してもよい。例えば、OSトレース部204は、採取したOSトレース情報250に採取時刻が付与されていない場合、その採取時刻に、そのOSトレース情報250を採取したときの共通時刻を付与してもよい。
 OSトレース部204は、採取したOSトレース情報250を、ハイパーバイザ22のバッファ領域110に格納する。OSトレース部204は、トレースの開始から終了までの間、所定の周期で、OSトレース情報250を採取してバッファ領域110に格納するという処理を繰り返す。これにより、トレースの開始から終了までの間の各時刻におけるOSトレース情報250が、バッファ領域110に蓄積される。
 OSトレース部204は、カーネル208を通じて、仮想CPU52、仮想メモリ、仮想ドライブ及び仮想NICなどの動作状況を表すOSトレース情報250を採取してもよい。OSトレース部204は、プロセススケジューラ210を通じて、プロセスの動作状況を表すOSトレース情報250を採取してもよい。
 解析部206は、ハイパーバイザ22のバッファ領域110に格納されたトレース情報に基づいて、サーバシステム10に関する各種解析を行う。例えば、解析部206は、採取時刻に基づいて、OSトレース情報250、ストレージトレース情報及びマッピングトレース情報を対比して、サーバシステム10における性能及びボトルネックなどを解析する。例えば、解析部206は、トレース情報の対比結果を表すGUIを生成及び表示してもよい。管理者は、この表示されたGUIを総裁及び確認して、サーバシステム10における性能及びボトルネックなどを解析することができる。
 ブロックマイクロ300は、機能として、ストレージトレース部304を有する。また、ブロックマイクロ300は、情報として、ストレージ構成情報340を有する。この情報340の詳細については後述する。
 ストレージトレース部304は、ストレージ部40に関するストレージリソース情報350を採取する。また、ストレージトレース部304は、OSトレース部204と同様、必要に応じて、その採取したストレージトレース情報340の採取時刻に、共通時刻を付与してもよい。
 ストレージトレース部304は、採取したストレージトレース情報340を、ハイパーバイザ22のバッファ領域110に格納する。ストレージトレース部304は、トレースの開始から終了までの間、所定の周期で、ストレージトレース情報350を採取してバッファ領域110に格納するという処理を繰り返す。これにより、トレースの開始から終了までの間の各時刻におけるストレージトレース情報350が、バッファ領域110に蓄積される。
 ハイパーバイザ22は、機能として、リソース制御部102と、時刻同期部101と、マッピングトレース部104と、トレース出力部108と、バッファ領域110と、リソーススケジューラ106とを有する。また、ハイパーバイザ22は、情報として、マッピングトレース情報150を有する。
 リソース制御部102は、ハイパーバイザ22の基本的な機能を有する。リソース制御部102は、例えば、物理CPU24、メモリ26及びNIC21などの物理的なリソースを制御して、仮想CPU52、仮想メモリ及び仮想NICなどの仮想リソースと、その仮想リソースを有するVMとを構成する。
 リソーススケジューラ106は、どの物理リソースをどの仮想リソースにどのくらい割り当てるかを決定する。例えば、リソーススケジューラ106は、仮想CPU52に割り当てる物理CPU24及びその割当時間などを判定し、所定のタイミングで、その割当関係を変更する。
 マッピングトレース部104は、リソーススケジューラ106を通じて、物理リソースと仮想リソースとの割当関係を表すマッピングトレース情報150を採取する。マッピングトレース情報150は、例えば、仮想CPU52と物理CPU24との割当関係と、その割当関係にあった採取時刻と、を有する。また、マッピングトレース部104は、必要に応じて、その採取したマッピングトレース情報150の採取時刻に、共通時刻を付与してもよい。
 マッピングトレース部104は、採取したマッピングトレース情報150を、ハイパーバイザ22のバッファ領域110に格納する。マッピングトレース部104は、トレースの開始から終了までの間、所定の周期で、マッピングトレース情報150を採取してバッファ領域110に格納するという処理を繰り返す。これにより、トレースの開始から終了までの間の各時刻におけるマッピングトレース情報150が、バッファ領域110に蓄積される。
 時刻同期部101は、実施例1で説明したように、OS200、ブロックマイクロ300及びハイパーバイザ22のの各々のシステムクロックが共通時刻に基づいて動作するようにする。すなわち、時刻同期部101は、各リソース情報に共通時刻が付与されるようにする。これにより、各リソース情報を、共通時刻に基づいて正しく対比することができるようになる。
 バッファ領域110には、トレースの開始から終了までの間の各時刻における、OSトレース情報250、ストレージトレース情報350、及びマッピングトレース情報150が蓄積される。
 トレース出力部108は、バッファ領域110に蓄積されたトレース情報を、所定の出力先に出力する。所定の出力先とは、例えば、解析部206を有するOS200のファイルシステムである。これにより、解析部206は、このファイルシステムに出力されたトレース情報を解析したり、トレース情報に関するGUIを生成することができる。
 次に、各構成情報及び各トレース情報の一例について、図面を参照しながら説明する。
 図7は、OSディスク構成情報240の一例を示す。OSディスク構成情報240は、OS200が使用しているディスク(仮想ディスクでもよい)の構成に関する情報を表す。
 OSディスク構成情報240は、属性として、OS-ID241と、パーティション番号242と、パーティション名243と、ファイルLUN(Logical Unit Number)244と、ブロックLUN245と、ファイルシステム246と、を有する。
 OS-ID241は、サーバシステム10内のOS200を識別するための情報である。
 パーティション番号242は、OS-ID241に対応するOS200が使用しているパーティションを識別するための番号である。
 パーティション名243は、パーティション番号242に対応するパーティションの名称である。
 ファイルLUN244は、OS-ID241に対応するOS200が使用するパーティション242、243における、ファイルレベルのLU(Logical Unit)の番号である。
 ブロックLUN245は、OS-ID241に対応するOS200が提供するパーティション242、243における、ブロックレベルのLUの番号である。
 ファイルシステム246は、OS-ID241に対応するOS200が使用しているファイルシステムを識別するための情報である。
 例えば、図7のOSディスク構成情報240a、240bは、OS-ID241「0」に対応するOS200は、ファイルLUN244「1」(ブロックLUN245「101」)のLUを、「sda1」と「sda2」のパーティション243(242)に分けて使用しており、各パーティション243(242)のファイルシステム246は「fs00」であることを表す。
 図8は、ストレージ構成情報340の一例を示す。ストレージ構成情報340は、ブロックマイクロ300が管理するストレージ部40の構成に関する情報を表す。ここでは、ストレージ部40がRAIDで構成されている場合について説明する。
 ストレージ構成情報340は、属性として、グループID341と、プールID342と、RAIDグループ情報343と、ブロックLUN344と、トレイ番号345と、ドライブ番号346と、を有する。
 グループID341は、サーバシステム10内のRAIDグループを識別するための情報である。
 プールID342は、グループID341に対応するRAIDグループが属するプールを識別するための情報である。
 RAIDグループ構成343は、グループID341に対応するRAIDグループの構成を表す情報である。
 ブロックLUN344は、グループID341に対応するRAIDグループによって提供されるブロックレベルのLUを識別するための番号である。
 トレイ番号345は、ドライブ番号346に対応するドライブが格納されているトレイを識別するための番号である。
 ドライブ番号346は、グループID341に対応するRAIDグループを構成するドライブを識別するための番号である。
 例えば、図8のストレージ構成情報340a、340b、340cは、グループID341「0」に対応するRAIDグループは、5つのドライブと1つのパリティドライブ(5D+1P)で構成されており(343)、ブロックLUN344は「101」であることを表す。また、このRAIDグループは、トレイ番号345「1」に対応するトレイに格納されている、ドライブ番号346「0」~「2」の3つのドライブで構成されていることを表す。
 図9は、IRQ情報230の一例を示す。IRQ情報230は、VM52からOS200に対する割込に関する情報を表す。
 IRQ情報230は、属性として、OS-ID231と、IRQ番号232と、IRQ名233と、を有する。
 OS-ID231は、図7において説明したとおりである。
 IRQ番号232は、割込(例えば、クロック信号の割込)に使用するIRQの番号を示す。
 IRQ名233は、IRQ番号232において使用される割込名(例えば、クロック信号である旨)を示す。
 例えば、図9のIRQ情報230aは、OS-ID231「0」に対応するOS200において、IRQ番号232「0」は、IRQ名233「timer」の割込に使用されていることを表す。
 図10は、マッピングトレース情報150の一例を示す。マッピングトレース情報150は、或る時刻における仮想CPU52と物理CPU24との割当状況を表す。
 マッピングトレース情報150は、属性として、採取時刻151と、物理CPU-ID152と、仮想CPU-ID153と、を有する。
 採取時刻151は、物理CPU-ID152に対応する物理CPU24の演算リソースが、仮想CPU-ID153に対応する仮想CPU52に割り当てられていたときの共通時刻を表す。採取時刻151は、マッピングトレース部104がこのマッピングトレース情報150を採取したときの共通時刻であってもよい。
 物理CPU-ID152は、サーバシステム10内の物理CPU24を識別するための情報である。
 仮想CPU-ID153は、サーバシステム10内の仮想CPU52を識別するための情報である。
 例えば、図10のマッピングトレース情報150aは、採取時刻151「2014年1月1日10時10分10秒100ミリ秒」のときに、物理CPU-ID152「0」に対応する物理CPU24の演算リソースが仮想CPU-ID153「3」に対応する仮想CPU52に割り当てられていたことを表す。
 次の図11~図22は、OSトレース情報250の一例を示す。
 図11は、プロセスに関するOSトレース情報250-1の一例を示す。プロセスに関するOSトレース情報250-1は、或るOS200において、どの時刻にどのようなプロセスが実行されていたのかを表す。
 プロセスに関するOSトレース情報250-1は、属性として、OS-ID801と、採取時刻802と、仮想CPU-ID803と、PID804と、コマンド805と、をを有する。
 OS-ID801は、図5で説明したとおりである。
 採取時刻802は、コマンド805が実行されたときの共通時刻を表す。この採取時刻802は、OSトレース部204がこのOSトレース情報250-1を採取したときの共通時刻であってもよい。
 仮想CPU-ID803は、コマンド805の実行に使用された仮想CPU52のIDを表す。
 PID804は、コマンド805に対応するプロセスのIDを表す。
 コマンド805は、採取時刻802に実行されたコマンド(プロセス)の名称を表す。
 例えば、図11のプロセスに関するOSトレース情報250-1aは、OS-ID801「0」に対応するOS200において、採取時刻802「2014年1月1日10時10分10秒100ミリ秒」のときに、仮想CPU-ID803「0」に対応する仮想CPU52によって、PID804「100」に対応するコマンド805「flush-8:0」が実行されていたことを表す。
 ここで、OSーID801に対応するOS200(例えば、第1OS200a)は、仮想サーバ(例えば、第3VM50c及び第2OS200b、若しくは第4VM50d及び第3OS200c)を実行している場合、この仮想サーバのプロセス(PID804及びコマンド805)に関するOSトレース情報250-1を採取することができる。この採取したOSトレース情報250-1を参照することにより、仮想サーバ(PID804及びコマンド805)が、採取時刻802において、何れの仮想CPU(VCPU-ID803)を用いて実行されていたかを知ることができる。これにより、仮想サーバで採取したOSトレース情報250と、この仮想サーバを実行しているOS200で採取されたこのプロセスに関するOSトレース情報250-1と、マッピングトレース情報150と、を採取時刻に基づいて対比することにより、仮想サーバの動作状況をより正確に解析することができる。
 図12は、システムコールに関するOSトレース情報250-2の一例を示す。システムコールに関するOSトレース情報250-2は、或るOS200においてどの時刻にどのようなシステムコールが実行されていたのかを表す。
 システムコールに関するOSトレース情報250-2は、属性として、OS-ID807と、採取時刻808と、PID809と、システムコール810と、所要時間811と、を有する。
 OS-ID807は、図5で説明したとおりである。
 採取時刻808は、システムコール810が実行されたときの共通時刻(共通TSC))を表す。この採取時刻808は、OS200自身が付与したものであってもよいし、OSトレース部204が付与したものであっても良い。以下の採取時刻においても同様である。
 PID809は、図11で説明したとおりである。
 システムコール810は、採取時刻808に実行されたシステムコールの名称を表す。
 所要時間811は、システムコール810の実行に要した時間を示す。
 例えば、図12のシステムコールに要するOSトレース情報250-2は、OS-ID807「0」に対応するOS200において、採取時刻808「1390523516.549007」のときに、PID809「100」に対応するシステムコール810「open」が実行され、この実行に要した時間811が「0.01μs」であったことを表す。
 図13は、ブロックに関するOSトレース情報250-3の一例を示す。ブロックに関するOSトレース情報250-3は、或るOS200において、どの時刻にどのブロックがどのような状況であったかを表す。
 ブロックに関するOSトレース情報250-3は、属性として、OS-ID813と、採取時刻814と、命令種別815と、セクタ番号816と、アクション817と、アクセスサイズ818と、を有する。
 OS-ID813は、図5で説明したとおりである。
 採取時刻814は、セクタ番号816に対する命令種別816が実行されたときの共通時刻を表す。
 命令種別815は、命令の種別(「write」及び「read」など)を表す。
 セクタ番号816は、命令種別815に対応する命令が対象とするセクタの番号を表す。
 アクション817は、命令種別815に対応する命令のアクションを表す。
 アクセスサイズ818は、命令種別815に対応する命令が対象とするサイズを表す。
 例えば、図13のブロックに関するOSトレース情報250-3aは、OS-ID813「0」に対応するOS200において、採取時刻814「2014年1月1日10時10分10秒100ミリ秒」のときに、セクタ番号816「2176516288」からアクセスサイズ818「512byte」のブロックに対して、アクション817「Q」に係る命令815「write」が実行されたことを表す。
 図14は、通信パケットに関するOSトレース情報250-4の一例を示す。通信パケットに関するOSトレース情報250-4は、或るOS200において、どの時刻にどのような通信パケットが送受信されたかを表す。
 通信パケットに関するOSトレース情報205-4は、属性として、OS-ID820と、採取時刻821と、送信元822と、送信先823と、プロトコル824と、メッセージ825と、パケットサイズ826と、を有する。
 OS-ID820は、図5で説明したとおりである。
 採取時刻821は、通信パケットが送信又は受信されたときの共通時刻を表す。
 送信元822は、通信パケットの送信元のIPアドレスを表す。
 送信先823は、通信パケットの送信先のIPアドレスを表す。
 プロトコル824は、通信パケットのプロトコルの種別を表す。
 メッセージ825は、通信パケットのメッセージの種別を表す。
 パケットサイズ826は、通信パケットのサイズを表す。
 例えば、図14の通信パケットに関するOSトレース情報250-4aは、OS-ID820「0」に対応するOS200において、採取時刻821「2014年1月1日10時10分10秒100ミリ秒」のときに、送信先823「192.168.0.2」に対応する装置が、送信元822「192.168.0.1」に対応する装置から、プロトコル824「NFS」に基づき、パケットサイズ826「65536byte」のメッセージ825「RECV」を受信したことを表す。
 図15は、CPU使用状況に関するOSトレース情報250-5の一例を示す。CPU使用状況に関するOSトレース情報250-5は、或るOS200について、或る時刻におけるCPUの使用状況を表す。
 CPU使用状況に関するOSトレース情報250-5は、属性として、OS-ID828と、採取時刻829と、仮想CPU-ID830と、CPU使用状況に関する統計情報(831~836)と、を有する。
 OS-ID828は、図5で説明したとおりである。
 採取時刻829は、仮想CPU-ID830に対応する仮想CPU52の使用状況に関する統計情報の算出対象とされた共通時刻(共通TSC)を表す。
 仮想CPU-ID830は、図11で説明したとおりである。
 CPU使用状況を表す統計情報は、例えば、以下の値を有する。
%user(831):ユーザプロセスによるCPUの使用率。
%nice(832):実行優先度を変更した(nice値)ユーザプロセスによるCPUの使用率。
%system(833):システムプロセスによるCPUの使用率。
%iowait(834):I/O終了待ち時間の割合。
%steal(835):OS200がリソース要求を行ったにもかかわらず物理CPU24のリソースを割り当ててもらえなかった時間の割合。
%idle(836):アイドル時間の割合。
 例えば、図15のCPU使用状況に関するOSトレース情報250-5aは、OS-ID828「0」に対応するOS200において、採取時刻829「2013年05月28日01時45分12秒」のときの仮想CPU-ID830「0」に対応する仮想CPU52の使用状況(831~836)を表す。
 図16は、IRQ発行数に関するOSトレース情報250-6の一例を示す。IRQ発行数に関するOSトレース情報250-6は、或るOS200について、或る時刻におけるIRQの発行状況を表す。
 IRQ発行数に関するOSトレース情報250-6は、属性として、OS-ID838と、採取時刻839と、仮想CPU-ID840と、IRQ番号841と、1秒間におけるIRQ発行数842と、を有する。
 OS-ID838は、図5で説明したとおりである。
 採取時刻839は、1秒間におけるIRQ発行数842の算出対象とされた共通時刻を表す。
 仮想CPU-ID840は、図11で説明したとおりである。
 IRQ番号841は、図9で説明したとおりである。
 1秒間におけるIRQ発行数842は、1秒間(つまり、単位時間)において発行されたIRQの数を示す。
 例えば、図16のIRQ発行数に関するOSトレース情報250-6aは、OS-ID838「0」に対応するOS200において、採取時刻839「2013年05月28日01時45分12秒」のときに、仮想CPU-ID840「0」に対応する仮想CPU52が、IRQ番号841「10」において、統計的に毎秒100回のIRQを発行(842)していたことを表す。
 図17は、ブロックI/O性能に関するOSトレース情報250-7の一例を表す。ブロックI/O性能に関するOSトレース情報250-7は、或るOS200について、或る時刻におけるブロックのリード及びライトの状況を表す。
 ブロックI/O性能に関するOSトレース情報250-7は、属性として、OS-ID844と、採取時刻845と、ブロックI/O性能に関する統計情報(846~850)とを有する。
 OS-ID844は、図5で説明したとおりである。
 採取時刻845は、ブロックI/O性能に関する統計情報(846~850)の算出対象とされた共通時刻を表す。
 ブロックI/O性能に関する統計情報は、例えば、以下の値を有する。
tps(846):1秒間の統計的なリード及びライトの回数。
rtps(847):1秒間の統計的なリードの回数。
wtps(848):1秒間の統計的なライトの回数。
bread/s(849):1秒間の統計的なブロックリードの回数。
bwrite/s(850):1秒間の統計的なブロックライトの回数。
 例えば、図17のブロックI/O性能に関するOSトレース情報250-7aは、OS-ID844「0」に対応するOS200の採取時刻845「2013年05月28日01時45分12秒」のときのブロックI/Oの状況(846~850)を表す。
 図18は、ネットワークI/O性能に関するOSトレース情報250-8の一例を表す。ネットワークI/O性能に関するOSトレース情報250-8は、或るOS200について、或る時刻におけるネットワークI/Oの動作状況を表す。
 ネットワークI/O性能に関するOSトレース情報250-8は、属性として、OS-ID852と、採取時刻853と、IFACE854と、ネットワークI/O性能を表す統計情報(855~861)とを有する。
 OS-ID852は、図5で説明したとおりである。
 採取時刻853は、IFACE854における、ネットワークI/O性能に関する統計情報(855~861)の算出対象とされた共通時刻を表す。
 IFACE854は、ネットワークI/O性能に関する統計情報の算出対象とされたネットワークI/Fを識別するための情報である。
 ネットワークI/O性能に関する統計情報は、例えば、以下の値を有する。
rxpck/s(855):1秒間の統計的な受信パケット数。
txpck/s(856):1秒間の統計的な送信パケット数。
rxkB/s(857):1秒間の統計的な受信パケットのデータ量(kB)。
txkB/s(858):1秒間の統計的な送信パケットのデータ量(kB)。
rxcmp/s(859):1秒間の統計的な圧縮受信パケット数。
txcmp/s(860):1秒間の統計的な圧縮送信パケット数。
txmcst/s(861):1秒間の統計的なマルチキャストパケット数。
 例えば、図18のネットワークI/O性能に関するOSトレース情報250-8aは、OS-ID「0」に対応するOS200について、採取時刻853「2013年05月28日01時45分12秒」のときのネットワークI/F854「lo」の動作状況(855~861)を表す。
 図19は、ディスクI/O性能に関するOSトレース情報250-9の一例を表す。ディスクI/O性能に関するOSトレース情報250-9は、或るOS200について、或る時刻におけるディスクI/Oの状況(866~873)を表す。
 ディスクI/O性能に関するOSトレース情報250-9は、属性として、OS-ID863と、採取時刻864と、DEV865と、ディスクI/O性能に関する統計情報(866~873)とを有する。
 OS-ID863は、図5で説明したとおりである。
 採取時刻864は、ディスクI/O性能に関する統計情報(866~873)の算出対象とされた共通時刻を表す。
 DEV865は、ディスクI/Oに関する統計情報の算出対象とされたディスク装置を識別するための情報である。
 ディスクI/O性能に関する統計情報は、例えば、以下の値を有する。
tps(866):1秒間のI/Oリクエスト数(転送回数)。
rd_sec/s(867):1秒間のリードセクタ数。
wr_sec/s(868):1秒間のライトセクタ数。
avgrq-sz(869):ディスク装置へのI/Oリクエストの平均セクタサイズ(1セクタ512byte)。
avgqu-sz(870):ディスク装置へのI/Oリクエストの待ち行列(キュー)の平均セクタサイズ(1セクタ512byte)。
await(871):ディスク装置へのI/Oリクエストの平均待ち時間(msec)。
svctm(872):ディスク装置へのI/Oリクエストの平均処理時間(msec)。
%util(873):ディスク装置へのI/Oリクエスト中のCPU使用率。
 例えば、図19のディスクI/O性能に関するOSトレース情報250-9aは、OS-ID「0」に対応するOS200において、採取時刻864「2013年05月28日01時45分12秒」のときの、「dev8-0」(865)に対応するディスクI/Oの状況(866~873)を表す。
 図20は、ロードアベレージに関するOSトレース情報250-10の一例を表す。ロードアベレージに関するOSトレース情報250-10は、或るOS200について、或る時刻におけるOS200のロードアベレージに関する状況(877~879)を表す。
 ロードアベレージに関するOSトレース情報250-10は、属性として、OS-ID875と、採取時刻864と、ロードアベレージに関する統計情報(877~879)とを有する。
 OS-ID875は、図5で説明したとおりである。
 採取時刻876は、ロードアベレージに関する統計情報(877~879)の算出対象とされた共通時刻を表す。
 ロードアベレージに関する統計情報は、例えば、以下の値を有する。
runq-sz(877):実行キューの長さ(実行時間を待っているプロセス数)。
plist-sz(878):プロセスリスト中のプロセスとスレッド数。
ldavg-1(879):過去1分間のシステムロードアベレージ。
 例えば、ロードアベレージに関するOSトレース情報250-10aは、OS-ID875「0」に対応するOS200において、採取時刻876「2013年05月28日01時45分12秒」のときのロードアベレージに関する状況(877~879)を表す。
 図21は、inodeに関するOSトレース情報250-11の一例を表す。inodeに関するOSトレース情報250-11は、或るOS200について、或る時刻におけるinodeに関する状況(882~885)を表す。
 inodeに関するOSトレース情報250-11は、属性として、OS-ID880と、採取時刻864と、inodeに関する統計情報(882~885)とを有する。
 OS-ID880は、図5で説明したとおりである。
 採取時刻881は、inodeに関する統計情報(882~885)の算出対象とされた共通時刻を表す。
 inodeに関する統計情報は、例えば、以下の値を有する。
dentunusd(882):ディレクトリキャッシュ内の未使用キャッシュエントリの数。
file-nr(883):使用中のファイルハンドラの数。
inode-nr(884):使用中のinodeの数。
pty-nr(885):使用中の疑似端末の数。
 例えば、図21のinodeに関するOSトレース情報250-11aは、OS-ID880「0」に対応するOS200について、採取時刻881「2013年05月28日01時45分12秒」のときのinodeに関する状況(882~885)を表す。
 図22は、メモリ性能に関するOSトレース情報250-12の一例を示す。メモリ性能に関するOSトレース情報250-12は、或るOS200について、或る時刻におけるメモリの状況(889~891)を表す。
 メモリ性能に関するOSトレース情報250-12は、属性として、OS-ID887と、採取時刻888と、メモリ性能に関する統計情報(889~891)とを有する。
 OS-ID887は、図5で説明したとおりである。
 採取時刻888は、メモリ性能に関する統計情報(889~891)の算出対象とされた共通時刻を表す。
 メモリ性能に関する統計情報は、例えば、以下の値を有する。
frmpg/s(889):1秒間に解放されたメモリのページ数。
bufpg/s(890):1秒間に割り当てられたバッファのページ数。
campg/s(891):1秒間にキャッシュしたページ数。
 例えば、図22のメモリ性能に関するOSトレース情報250-12aは、OS-ID887「0」に対応するOS200において、採取時刻888「2013年05月28日01時45分12秒」のときのメモリの状況(889~891)を表す。
 図23は、ストレージ性能に関するストレージトレース情報350-1の一例を示す。ストレージ性能に関するストレージトレース情報350-1は、或るブロックマイクロ300について、或る時刻におけるストレージ部40の状況統(896~898)を表す。
 ストレージ性能に関するストレージトレース情報350-1は、属性として、採取時刻893と、CTL894と、Disk895と、ストレージ性能に関する統計情報(896~898)とを有する。
 採取時刻893は、ストレージ性能に関する統計情報(896~898)の算出対象とされた共通時刻を表す。
 CTL894は、ストレージ部40に係るコントローラ(例えば、RAIDコントローラ)を識別するための情報である。
 Disk895は、CTL894に対応するコントローラによって制御されるディスク装置を識別するための情報である。
 ストレージ性能に関する統計情報は、例えば、以下の値を有する。
Usage(896):ディスク装置の使用率。
Write IOPS(897):1秒間のライト数。
Response Time(898):ライトに対する応答時間。
 例えば、図23のストレージ性能に関するストレージトレース情報350-1aは、採取時刻893「2012年07月12日10時27分46秒」のときの、CTL「0」及びDisk「0」に対応するディスク装置の状況(896~898)を表す。
 図24は、ブロックマイクロ性能に関するストレージトレース情報350-2の一例を示す。ブロックマイクロ性能に関するストレージトレース情報350-2は、或るブロックマイクロ300の或る時刻における動作状況(903)を有する。
 採取時刻900は、プロセッサ性能に関する統計情報(903)の算出対象とされた共通時刻を表す。
 CTL901は、ブロックマイクロ350を動作させるプロセッサ(例えば、図5における仮想CPU52a)を識別するための情報である。
 Core902は、CTL901に対応するプロセッサにおけるCoreを識別するための情報である。
 プロセッサ性能に関する統計情報は、例えば、以下の値を有する。
Usage(903):プロセッサの使用率。
 例えば、図24のブロックマイクロ性能に関するストレージトレース情報350-2aは、採取時刻900「2012年07月12日10時27分46秒」のときの、CTL「0」のCore「X」の使用率903が「80%」であったことを表す。
 次の図25~図28は、実施例2におけるOS等が、共通時刻を付与したトレース情報を採取する処理の一例を示すフローチャートである。
 図25は、共通時刻発行処理の一例を示すフローチャートである。
 各OS200及びブロックマイクロ300(「OS等」という)は、自己が使用している1の仮想クロック54(又は仮想CPU52)へ時刻要求(又はTSC要求)を発行する(S101)。
 ハイパーバイザ22の時刻同期部101は、この仮想クロック54(又は仮想CPU52)への時刻要求(又はTSC要求)をトラップし、所定の1の共通HWクロック28(又は共通物理CPU24)へ転送する(S102)。
 そして、時刻同期部101は、共通HWクロック28(又は共通物理CPU24)から取得した共通時刻(又は共通TSC)を、要求元のOS等へ転送する(S103)。
 以上の処理により、各OS等は共通時刻(又は共通TSC)を取得することができる。これにより、各トレース情報には、共通時刻(又は共通TSC)に基づく採取時刻が付与される。よって、各OS等で採取されたOSトレース情報を、採取時刻に基づいて正確に対比することができる。
 図26は、システムクロックの更新方法選択処理の一例を示すフローチャートである。
 このシステムクロックの更新方法選択処理は、OS等の起動時に実行されてもよいし、OS等の稼働中に所定のタイミング(例えば、管理者からの指示)で実行されてもよい。
 OS等は、NTP(Network Time Protocol)が利用可能であるか否かを判定する(S201)。
 NTPが利用可能である場合(S201:YES)、OS等は、NTPを利用する旨をハイパーバイザ22の時刻同期部101に通知する(S210)。時刻同期部101が、時刻要求をトラップしないようにするためである。そして、OS等は、以後、NTPに基づきシステムクロックを更新するように設定し(S211)、本処理を終了する(END)。
 NTPが利用不可である場合(S201:NO)、OS等は、図25に示した共通時刻発行処理に係る共通時刻に基づきシステムクロックを更新するように設定し(S203)、本処理を終了する(END)。
 上記の処理によれば、NTPが利用可能な場合、各OS等は、NTPを利用してシステムクロックを更新するようになる、一方、NTPが利用不可能な場合、各OS等は、共通時刻発行処理に基づいてシステムクロックを更新するようになる。何れの場合であっても、各OS等の間のシステムクロックは共通時刻により同期される。すなわち、上記の処理によれば、NTPが使用できない場合であっても、各OS等で採取されたトレース情報を、採取時刻に基づいて正確に対比することができる。
 図27は、OS等のシステムクロックの更新処理の一例を示すのフローチャートである。
 OS等のシステムクロックは、基本的に、仮想CPU52が一定の周期で発行するクロック信号(割込信号)に基づいて更新される。以下、各OS等のシステムクロックを更新する方法を述べる。
 所定の1の更新物理CPU24がクロック信号を発行する(S301)。
 ハイパーバイザ22の時刻同期部101は、この更新物理CPU24から発行されたクロック信号をトラップし、各仮想CPU52からのクロック信号として各OS等に発行する(S302)。これにより、各OS等に対して、同じタイミングでクロック信号が発行される。
 各OS等は、自己が使用している仮想CPU52から発行されたクロック信号を受けて、システムクロックを更新する(S303)。
 なお、上記の処理において、時刻同期部101は、複数の物理CPU24の内の1の更新物理CPU24から発行されたクロック信号を各OS等に転送した場合、その更新周期内における他の物理CPU24から発行されたクロック信号は各OS等に転送しない。各OS等に正しい更新周期でクロック信号を発行するためである。また、更新物理CPU24は、図25で述べた共通物理CPU24とは異なってもよい。また、更新物理CPU24は、必ずしも毎回同じである必要はない。
 以上の処理により、各OS等には同じタイミングでクロック信号が発行されるので、各OS等のシステムクロックは、時間が経過してもズレない。よって、各OS等で採取されたトレース情報を、採取時刻に基づいて正確に対比することができる。
 図28は、トレース情報収集処理の例を示すフローチャートである。
 管理者からの指示を受けて又は所定のタイミングでトレース指示部202は、自他のOS200、ブロックマイクロ300及びハイパーバイザ22に、トレース情報の収集開始を指示する(S401)。ここで、トレース指示部202は、収集開始の指示と共に収集時間を指示してもよい。
 トレース情報の収集開始の指示を受けたOSトレース部204、ストレージトレース部304及びマッピングトレース部104の各々は、トレース情報を採取し、ハイパーバイザ22のバッファ領域110に格納する(S411)。このS411の処理は、収集時間が経過するまで繰り返し実行される(S402、S411、S420)。
 一方、ハイパーバイザ22のトレース出力部108は、バッファ領域110に蓄積されたトレース情報を、例えば、解析部206を有する第1OS200aのファイルシステムに出力する(S412)。このS412の処理も、収集時間が経過するまで繰り返し実行されてよい(S402、S412、S420)。
 そして、収集時間が経過した後、解析部206は、S412によってファイルシステムに出力されたトレース情報を解析する(S421)。例えば、解析部206は、トレース情報を採取時刻に従って並べて表示する。
 以上の処理により、解析部206及び管理者は、各OS200及び各VM50の動作状況(OSトレース情報250)と、ブロックマイクロ300及びストレージ部40の動作状況(ストレージトレース情報350)と、物理リソースと仮想リソースとのマッピングの状況(マッピングトレース情報150)とを、採取時刻に基づき正確に対比することができる。これにより、解析部206及び管理者は、サーバシステム10の不具合の解析及びボトルネックの解析などを行うことができる。
 次に、トレース情報収集処理の詳細を、図29~図30のシーケンスチャートを参照しながら説明する。ここでは、図5に示したサーバシステム10を一例として説明する。
 図29は、トレース情報収集処理に係るサーバシステム10の全体処理の一例を表すシーケンスチャートである。
 管理者が、第1OS200aのトレース指示部202に、トレース情報の採取開始を指示する(1)。
 トレース指示部202は、第1OS200aのOSトレース部204に、OSトレース情報250の採取開始を指示する(2)。この指示を受けたOSトレース部204は、採取時間が経過するまでOSトレース情報250を採取し、その後、トレース指示部202に完了を通知する(3)。この処理の詳細については、図30~図32に後述する。
 また、トレース指示部202は、ブロックマイクロ300のストレージトレース部304に、ストレージトレース情報の採取開始を指示する(4)。この指示を受けたストレージトレース部304は、採取時間が経過するまでストレージトレース情報340を採取し、その後、トレース指示部202に完了を通知する(5)。この処理の詳細については図33に後述する。
 また、トレース指示部202は、ハイパーバイザ22のトレース出力部108に、バッファ領域110に蓄積されたトレース情報250、340、150を、第1OS200aのファイルシステムに出力するよう指示する(6、7)。トレース出力部108は、収集時間が経過するまで、バッファ領域110に蓄積されたトレース情報を、第1OS200のファイルシステムに出力する(8~13)。その後、トレース出力部108は、トレース指示部202に完了を通知する(14、15)。
 なお、図29のOSトレース部204の処理(2~3)と、ストレージトレース部304の処理(4~5)と、トレース出力部108の処理(6~15)とは、パラレルに実行されてよい。トレース指示部202は、これらの処理が全て完了した後、管理者に完了を通知する(16)。
 図30は、図29に示した第1OS200aのOSトレース部204の処理の詳細を表すのシーケンスチャートである。
 第1OS200aのOSトレース部204は、ハイパーバイザ22のマッピングトレース部104に、マッピングトレース情報の採取開始を指示する(1、2)。この指示を受けたマッピングトレース部104は、採取時間が経過するまで、マッピングトレース情報150を採取し、バッファ領域110に格納する処理を繰り返す(3~7)。その後、マッピングトレース部104は、OSトレース部204に完了を通知する(8、9)。
 以上の処理により、ハイパーバイザ22のバッファ領域110に、各共通時刻におけるマッピングトレース情報150が蓄積される。
 また、第1OS200aのOSトレース部204は、自分の第1OS200aのOSトレース情報の採取を実行すると共に、同じレイヤーの他のOSトレース部204に、OSトレース情報の採取を指示する(10、11)。図5のサーバシステム10では、第1OS200aと同じレイヤーのOS200が存在しないので、この処理は行われない。なお、図30において、1~9の処理と10~11の処理とは、パラレルに実行されてよい。
 図31は、OSトレース部204の採取処理の詳細を表すのシーケンスチャートである。
 第1OS200aのOSトレース部204(及びOSトレース情報の採取の指示を受けたOSトレース部204)は、OSトレース情報250を採取する(1、2)。この処理の詳細については、図32に後述する。
 また、第1OS200aのOSトレース部204は、自己の第1OS200a上で仮想的に稼働している第2OS200b及び第3OS200cのOSトレース部204に、OSトレース情報の採取を指示し、この指示を受けた第2OS200b及び第3OS200cのOSトレース部204は、OSトレース情報250を採取する(3、4)。なお、図31において、1~2の処理と、3~4の処理とは、パラレルに実行されてよい。
 図32は、図31の第1OS200a、第2OS200b及び第3OS200cのそれぞれのOSトレース部204におけるOSトレース情報250の採取処理の詳細を表すのシーケンスチャートである。
 各OS200のOSトレース部204は、自己のOS200が使用しているプロセススケジューラ210などにアクセスし、CPUの動作状況などを表す各種OSトレース情報250を採取し、その採取したOSトレース情報250を、ハイパーバイザ22のバッファ領域110に格納するという処理を、採取時間が経過するまで繰り返す(2~8)。
 また、OSトレース部204は、自己のOS200が使用しているカーネル208などにアクセスし、I/Oリソースの状況を表す各種OSトレース情報250を採取し、その採取したOSトレース情報250を、ハイパーバイザ22のバッファ領域110に格納するというという処理を、採取時間が経過するまで繰り返す(11~18)。
 なお、採取したOSトレース情報250に採取時刻が付与されていない場合、OSトレース部204が、そのOSトレース情報250を採取したときの共通時刻に基づいて採取時刻を付与してもよい。また、図32において、1~9の処理と、10~19の処理とは、パラレルに実行されてもよい。
 以上の図30~図32の処理により、ハイパーバイザ22のバッファ領域110に、各OS200におけるOSトレース情報250が蓄積される。
 図33は、図30のストレージトレース部304の処理の詳細を示すシーケンスチャートである。
 ストレージトレース部304は、自己が制御しているストレージ部40などにアクセスし、ストレージトレース情報350を採取し、その採取したストレージトレース情報350をハイパーバイザ22のバッファ領域110に格納するという処理を、採取時間が経過するまで繰り返す(4~10)。なお、採取したストレージトレース情報350に採取時刻が付与されていない場合、ストレージトレース部304が、そのストレージトレース情報150を採取したときの共通時刻に基づいて採取時刻を付与してもよい。
 以上の図33の処理により、ハイパーバイザ22のバッファ領域110には、各マイクロブロック300におけるストレージトレース情報350が格納される。
 図34は、解析部206の処理を示すシーケンスチャートである。
 図29~図33の処理により、採取時間内における各時刻のトレース情報250、340、150が、ハイパーバイザ22のバッファ領域110に蓄積される。そして、このバッファ領域110に蓄積されたトレース情報250、340、150が、トレース出力部108によって第1OS200aのファイルシステムに出力される。
 第1OS200の解析部206は、そのファイルシステムに格納されたトレース情報250、340、150の中から、所定の条件に適合するトレース情報を抽出し、様々な解析を行う(1~4)。この所定の条件は、管理者によって入力されてもよい。
 図35は、解析部206によって生成及び表示される解析用GUI1000の一例を表す。
 例えば、解析部206は、採取時刻に基づいて、OSトレース情報250、ストレージトレース情報340及びマッピングトレース情報150に含まれる各種属性を結合したテーブル1001を生成及び表示してもよい。これにより、或る採取時刻における、各OS200の状況と、ストレージ部40の状況と、物理リソースと仮想リソースとのマッピングの状況とを容易に対比することができる。
 さらに、管理者が、或る採取時刻における或る属性を選択すると、解析部206は、その属性に関する更なる情報を含むテーブル1002を生成及び表示してもよい。
 これにより、例えば、或る時刻においてサーバシステム10に遅延又は障害などが発生した場合、管理者は、OS200、ストレージ部40及びハイパーバイザ22のそれぞれから採取された或る時刻付近のOSトレース情報250、ストレージトレース情報350及びマッピングトレース情報150を対比することにより、その遅延又は障害などの原因を容易に解析及び特定することができる。
 上述した実施例は、本発明の説明のための例示であり、本発明の範囲をそれらの実施例にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
 例えば、上記のシステムクロックは、ブロックマイクロ300とOS200とハイパーバイザ22との間において、稼働中のタイミング毎に異なる識別子である共通識別子の一例である。例えば、次のような方法によっても、上述の実施例と同様の作用効果を達成できる。
(1)ハイパーバイザは、図2に対応する処理として、起動時、ブロックマイクロ及びOSに、カウンタ(共通識別子)の初期化を指示する。ブロックマイクロ及びOSの各々は、その初期化の指示に基づいて自己のカウンタを初期値にセットする。このとき、ハイパーバイザも同じように自己のカウンタを初期値にセットする。
(2)ハイパーバイザは、図3に対応する処理として、所定の周期で、ブロックマイクロ及びOSに、カウンタの更新を指示する。ブロックマイクロ及びOSの各々は、その更新の指示に基づいて自己のカウンタを更新する。このとき、ハイパーバイザも同じように自己のカウンタを更新する。
(3)そして、ブロックマイクロ、OS及びハイパーバイザはそれぞれストレージトレース情報、OSトレース情報及びマッピングトレース情報に対して、それを採取したときのカウンタ値を採取時刻の代わりに付与してもよい。
 これまでに説明した実施例を基に、例えば以下の様な表現をすることができる。
<表現1>
 複数の物理リソースと、
 複数の仮想コンピュータに設けられる複数の仮想リソースに前記複数の物理リソースを割り当てるハイパーバイザと、を有し、
 前記ハイパーバイザは、タイミング毎に一意な共通識別子を、前記複数の仮想コンピュータにおいて使用できるようにし、
 前記複数の仮想コンピュータの内の1つであり、所定の記憶領域に記憶されたデータをブロックレベルで制御するブロック制御部は、前記ブロックレベルの動作状況を表す情報を含むブロックトレース情報と、そのブロックトレース情報に含まれる動作状況が発生したタイミングに対応する前記共通識別子と、を関連付け、
 前記複数の仮想コンピュータの内の別の1つであり、前記記憶領域に記憶されたデータをファイルレベルで制御するファイル制御部は、前記ファイルレベルの動作状況を表す情報を含むファイルトレース情報と、そのファイルトレース情報に含まれる動作状況が発生したタイミングに対応する前記共通識別子と、を関連付ける
ストレージ装置。
<表現2>
 前記ハイパーバイザは、前記複数の仮想リソースに対する前記複数の物理リソースの割当状況を表す情報を含むマッピングトレース情報と、そのマッピングトレース情報に含まれる割当状況が発生したタイミングに対応する前記共通識別子と、を関連付ける
表現1に記載のストレージ装置。
<表現3>
 前記ファイル制御部によって制御されているデータにアクセス可能な仮想サーバが実行されており、
 前記ファイル制御部の採取する前記ファイルトレース情報には、前記仮想サーバに対する前記仮想リソースの割当状況を表す情報が含まれる
表現1又は2に記載のストレージ装置。
<表現4>
 前記ハイパーバイザが採取した前記マッピングトレース情報と、前記ブロック制御部が採取した前記ブロックトレース情報と、前記ファイル制御部が採取した前記ファイルトレース情報とを、それらの情報に関連付けられている前記共通識別子に基づいて対比可能な態様で表示する表示部、をさらに有する
表現1乃至3の何れか1に記載のストレージ装置。
<表現5>
 各仮想コンピュータで使用される前記共通識別子は、前記各仮想コンピュータのシステム時刻に関連する識別子であり、
 前記各仮想コンピュータのシステム時刻は、前記複数の物理リソースの内の1の物理リソースが提供する時刻情報を前記各仮想コンピュータに提供することによって調整される
表現1乃至4の何れか1に記載のストレージ装置。
<表現6>
 前記ハイパーバイザは、前記複数の物理リソースの各々から発行されるクロック信号をトラップし、前記仮想リソースと前記物理リソースとの割り当て関係に関わらず、前記複数の物理リソースの内の1の物理リソースから発行されたクロック信号である第1のクロック信号のみを前記各仮想コンピュータに発行し、それ以外の物理リソースから発行されたクロック信号は何れにも発行せず、
 前記各仮想コンピュータは、前記ハイパーバイザから発行された前記第1のクロック信号を用いて、前記システム時刻を調整する
表現5に記載のストレージ装置。
<表現7>
 前記各仮想コンピュータは、前記複数の仮想リソースの内の1の仮想リソースに対して時刻要求を発行し、
 前記ハイパーバイザは、その発行された前記時刻要求をトラップし、前記複数の物理リソースの内の1の物理リソースから時刻情報を取得し、その取得した前記時刻情報を前記時刻要求の発行元の仮想コンピュータへ返し、
 前記各仮想コンピュータは、前記ハイパーバイザから返された前記時刻情報に基づいて前記システム時刻を調整する
表現5又は6に記載のストレージ装置。
<表現8>
 前記各仮想コンピュータが所定の通信ネットワークを通じて前記システム時刻を調整できる場合、前記ハイパーバイザは前記時刻要求のトラップを行わない
表現7に記載のストレージ装置。
<表現9>
 複数の物理リソースと、
 複数の仮想コンピュータに設けられる複数の仮想リソースに前記複数の物理リソースを割り当てるハイパーバイザと、を有するストレージ装置の動作状況を解析する方法であって、
 前記ハイパーバイザは、タイミング毎に一意な共通識別子を、前記複数の仮想コンピュータにおいて使用できるようにし、
 前記複数の仮想コンピュータの内の1つであり、所定の記憶領域に記憶されたデータをブロックレベルで制御するブロック制御部は、前記ブロックレベルの動作状況を表す情報を含むブロックトレース情報と、そのブロックトレース情報に含まれる動作状況が発生したタイミングに対応する前記共通識別子と、を関連付け、
 前記複数の仮想コンピュータの内の別の1つであり、前記記憶領域に記憶されたデータをファイルレベルで制御するファイル制御部は、前記ファイルレベルの動作状況を表す情報を含むファイルトレース情報と、そのファイルトレース情報に含まれる動作状況が発生したタイミングに対応する前記共通識別子と、を関連付ける
ストレージ装置の動作解析方法。
 10:サーバシステム 20:コントローラ部 22:ハイパーバイザ 24:物理CPU 28:ハードウェアクロック 40:ストレージ部 52:仮想CPU 101:時刻同期部 150:マッピングトレース情報 250;OSトレース情報 350:ストレージトレース情報

 

Claims (12)

  1.  複数の物理リソースと、
     複数の仮想コンピュータに設けられる複数の仮想リソースに前記複数の物理リソースを割り当てるハイパーバイザと、を有し、
     前記ハイパーバイザは、タイミング毎に一意な共通識別子を、前記複数の仮想コンピュータにおいて使用できるようにし、
     前記複数の仮想コンピュータの内の1つであり、所定の記憶領域に記憶されたデータをブロックレベルで制御するブロック制御部は、前記ブロックレベルの動作状況を表す情報を含むブロックトレース情報と、そのブロックトレース情報に含まれる動作状況が発生したタイミングに対応する前記共通識別子と、を関連付け、
     前記複数の仮想コンピュータの内の別の1つであり、前記記憶領域に記憶されたデータをファイルレベルで制御するファイル制御部は、前記ファイルレベルの動作状況を表す情報を含むファイルトレース情報と、そのファイルトレース情報に含まれる動作状況が発生したタイミングに対応する前記共通識別子と、を関連付ける
    ストレージ装置。
     
  2.  前記ハイパーバイザは、前記複数の仮想リソースに対する前記複数の物理リソースの割当状況を表す情報を含むマッピングトレース情報と、そのマッピングトレース情報に含まれる割当状況が発生したタイミングに対応する前記共通識別子と、を関連付ける
    請求項1に記載のストレージ装置。
     
  3.  前記ファイル制御部によって制御されているデータにアクセス可能な仮想サーバが実行されており、
     前記ファイル制御部の採取する前記ファイルトレース情報には、前記仮想サーバに対する前記仮想リソースの割当状況を表す情報が含まれる
    請求項2に記載のストレージ装置。
     
  4.  前記ハイパーバイザが採取した前記マッピングトレース情報と、前記ブロック制御部が採取した前記ブロックトレース情報と、前記ファイル制御部が採取した前記ファイルトレース情報とを、それらの情報に関連付けられている前記共通識別子に基づいて対比可能な態様で表示する表示部、をさらに有する
    請求項3に記載のストレージ装置。
     
  5.  各仮想コンピュータで使用される前記共通識別子は、前記各仮想コンピュータのシステム時刻に関連する識別子であり、
     前記各仮想コンピュータのシステム時刻は、前記複数の物理リソースの内の1の物理リソースが提供する時刻情報を前記ハイパーバイザが前記各仮想コンピュータに提供するすることによって調整される
    請求項2に記載のストレージ装置。
     
  6.  前記ハイパーバイザは、前記複数の物理リソースの各々から発行されるクロック信号をトラップし、前記仮想リソースと前記物理リソースとの割り当て関係に関わらず、前記複数の物理リソースの内の1の物理リソースから発行されたクロック信号である第1のクロック信号のみを前記各仮想コンピュータに発行し、それ以外の物理リソースから発行されたクロック信号は何れにも発行せず、
     前記各仮想コンピュータは、前記ハイパーバイザから発行された前記第1のクロック信号を用いて、前記システム時刻を調整する
    請求項5に記載のストレージ装置。
     
  7.  前記各仮想コンピュータは、前記複数の仮想リソースの内の1の仮想リソースに対して時刻要求を発行し、
     前記ハイパーバイザは、その発行された前記時刻要求をトラップし、前記複数の物理リソースの内の1の物理リソースから時刻情報を取得し、その取得した前記時刻情報を前記時刻要求の発行元の仮想コンピュータへ返し、
     前記各仮想コンピュータは、前記ハイパーバイザから返された前記時刻情報に基づいて前記システム時刻を調整する
    請求項6に記載のストレージ装置。
     
  8.  前記各仮想コンピュータが所定の通信ネットワークを通じて前記システム時刻を調整できる場合、前記ハイパーバイザは前記時刻要求のトラップを行わない
    請求項7に記載のストレージ装置。
     
  9.  各仮想コンピュータで使用される前記共通識別子は、前記各仮想コンピュータのシステム時刻に関連する識別子であり、
     前記各仮想コンピュータのシステム時刻は、前記複数の物理リソースの内の1の物理リソースが提供する時刻情報を前記ハイパーバイザが前記各仮想コンピュータに提供することによって調整される
    請求項1に記載のストレージ装置。
     
  10.  前記ハイパーバイザは、前記複数の物理リソースの各々から発行されるクロック信号をトラップし、前記仮想リソースと前記物理リソースとの割り当て関係に関わらず、前記複数の物理リソースの内の1の物理リソースから発行されたクロック信号である第1のクロック信号のみを前記各仮想コンピュータに発行し、それ以外の物理リソースから発行されたクロック信号は何れにも発行せず、
     前記各仮想コンピュータは、前記ハイパーバイザから発行された前記第1のクロック信号を用いて、前記システム時刻を調整する
    請求項9に記載のストレージ装置。
     
  11.  前記各仮想コンピュータは、前記複数の仮想リソースの内の1の仮想リソースに対して時刻要求を発行し、
     前記ハイパーバイザは、その発行された前記時刻要求をトラップし、前記複数の物理リソースの内の1の物理リソースから時刻情報を取得し、その取得した前記時刻情報を、前記時刻要求の発行元の仮想コンピュータへ返し、
     前記各仮想コンピュータは、前記ハイパーバイザから返された前記時刻情報に基づいて前記システム時刻を調整する
    請求項9に記載のストレージ装置。
     
  12.  複数の物理リソースと、
     複数の仮想コンピュータに設けられる複数の仮想リソースに前記複数の物理リソースを割り当てるハイパーバイザと、を有するストレージ装置の動作状況を解析する方法であって、
     前記ハイパーバイザは、タイミング毎に一意な共通識別子を、前記複数の仮想コンピュータにおいて使用できるようにし、
     前記複数の仮想コンピュータの内の1つであり、所定の記憶領域に記憶されたデータをブロックレベルで制御するブロック制御部は、前記ブロックレベルの動作状況を表す情報を含むブロックトレース情報と、そのブロックトレース情報に含まれる動作状況が発生したタイミングに対応する前記共通識別子と、を関連付け、
     前記複数の仮想コンピュータの内の別の1つであり、前記記憶領域に記憶されたデータをファイルレベルで制御するファイル制御部は、前記ファイルレベルの動作状況を表す情報を含むファイルトレース情報と、そのファイルトレース情報に含まれる動作状況が発生したタイミングに対応する前記共通識別子と、を関連付ける
    ストレージ装置の動作解析方法。
     

     
PCT/JP2014/064935 2014-06-05 2014-06-05 ストレージ装置及びストレージ装置の動作解析方法 WO2015186220A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/064935 WO2015186220A1 (ja) 2014-06-05 2014-06-05 ストレージ装置及びストレージ装置の動作解析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/064935 WO2015186220A1 (ja) 2014-06-05 2014-06-05 ストレージ装置及びストレージ装置の動作解析方法

Publications (1)

Publication Number Publication Date
WO2015186220A1 true WO2015186220A1 (ja) 2015-12-10

Family

ID=54766316

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/064935 WO2015186220A1 (ja) 2014-06-05 2014-06-05 ストレージ装置及びストレージ装置の動作解析方法

Country Status (1)

Country Link
WO (1) WO2015186220A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020158319A1 (ja) * 2019-02-01 2020-08-06 株式会社デンソー 車両用装置、車両用装置の時刻同期方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001020456A1 (fr) * 1999-09-10 2001-03-22 Hitachi, Ltd. Systeme de gestion et procede pour systeme d'exploitation
JP2006285875A (ja) * 2005-04-04 2006-10-19 Hitachi Ltd 計算機システム、ログ収集方法、及びコンピュータプログラム
US20100058335A1 (en) * 2008-08-28 2010-03-04 Weber Bret S Methods and systems for integrated storage and data management using a hypervisor
WO2014174594A1 (ja) * 2013-04-23 2014-10-30 株式会社日立製作所 ストレージシステムおよびストレージシステムの障害管理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001020456A1 (fr) * 1999-09-10 2001-03-22 Hitachi, Ltd. Systeme de gestion et procede pour systeme d'exploitation
JP2006285875A (ja) * 2005-04-04 2006-10-19 Hitachi Ltd 計算機システム、ログ収集方法、及びコンピュータプログラム
US20100058335A1 (en) * 2008-08-28 2010-03-04 Weber Bret S Methods and systems for integrated storage and data management using a hypervisor
WO2014174594A1 (ja) * 2013-04-23 2014-10-30 株式会社日立製作所 ストレージシステムおよびストレージシステムの障害管理方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020158319A1 (ja) * 2019-02-01 2020-08-06 株式会社デンソー 車両用装置、車両用装置の時刻同期方法
JP2020126317A (ja) * 2019-02-01 2020-08-20 株式会社デンソー 車両用装置、車両用装置の時刻同期方法
JP7135903B2 (ja) 2019-02-01 2022-09-13 株式会社デンソー 車両用装置、車両用装置の時刻同期方法

Similar Documents

Publication Publication Date Title
US10379967B2 (en) Live rollback for a computing environment
US7882136B2 (en) Foresight data transfer type hierarchical storage system
TWI478063B (zh) 於虛擬機器提供應用程式之系統以及方法以及儲存其之電腦可讀取記錄媒體
US20190235904A1 (en) Cloning services in virtualized computing systems
US20150095597A1 (en) High performance intelligent virtual desktop infrastructure using volatile memory arrays
US20120023233A1 (en) Method for executing migration between virtual servers and server system used for the same
US10067695B2 (en) Management server, computer system, and method
US20170132040A1 (en) Methods to apply iops and mbps limits independently using cross charging and global cost synchronization
WO2015049742A1 (ja) ストレージシステムおよびストレージシステム制御方法
JP2003345525A (ja) 計算機システム及びレプリケーション方法
US20140298333A1 (en) Migration processing program, migration method, and cloud computing system
US20190065078A1 (en) Acquisition of iops and mbps limits independently at a scheduler in a scheduler hierarchy
US11675611B2 (en) Software service intervention in a computing system
WO2016103471A1 (ja) 計算機システムおよび管理プログラム
Conley et al. Achieving cost-efficient, data-intensive computing in the cloud
US10754368B1 (en) Method and system for load balancing backup resources
CN107528871B (zh) 存储系统中的数据分析
US11513849B2 (en) Weighted resource cost matrix scheduler
JP5439435B2 (ja) 計算機システムおよびその計算機システムにおけるディスク共有方法
JP5158576B2 (ja) 入出力制御システム、入出力制御方法、及び、入出力制御プログラム
WO2015186220A1 (ja) ストレージ装置及びストレージ装置の動作解析方法
JP6114683B2 (ja) 処理要求読込転送装置、及び処理要求転送方法
JP6653786B2 (ja) I/o制御方法およびi/o制御システム
JP5250368B2 (ja) 計算機システムおよび計算機システムにおける容量管理方法
EP4109255A1 (en) Scheduling in a container orchestration system utilizing hardware topology hints

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

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP