Virtual-machine dynamic allocation system and server

A slave server with an optimal response time with respect to a program can be selected from slave servers located near a client. A virtual-machine dynamic allocation system according to the present invention in which a master server dynamically allocates a virtual machine that is to execute a requested program to any one of slave servers, includes: a response-measurement-time-information measuring unit configured to measure response-time information about a period between transmission of a request signal from each slave server to each of programs operating in the master server and reception of a response signal from each program in the master server; a response-time-information storage unit configured to store the measured response-time information of each program for each slave server; and a slave-server determining unit configured to refer to the response-time-information storage unit so as to determine a slave server that is to execute the requested program.

CROSS REFERENCE TO RELATED APPLICATION(S)

This application is based upon and claims benefit of priority from Japanese Patent Application No. 2015-230663, filed on Nov. 26, 2015, the entire contents of which are incorporated herein by reference.

BACKGROUND

The present invention relates to virtual-machine dynamic allocation systems and servers, and is applicable to, for example, a dynamic allocation system for a virtual machine that operates a program (e.g., application program) in a distributed network.

With recent developments in network technologies and computer technologies, there has been advancement in a so-called cloud computing technology.

Cloud computing involves setting general computer servers (referred to as “servers” hereinafter) in various stations, causing a server in the cloud to acquire input data from a client, causing the server to operate an application to be used by the client, and causing the server to return output data to the client via a communication environment.

A cloud environment is used by many users. Since the scale of a cloud environment is large, identical servers are set at many locations around the world. Therefore, which of the servers is to be used for performing application operation requested by a client varies depending on the situation. For example, a situation where a request from a client in Japan is transmitted to a server in Brazil, which is on the other side of the globe, and the server in Brazil sends back data to the client in Japan may possibly occur.

The internet-of-things (IoT) service is attracting attention today.

In the IoT service, many devices or things have a communication function and are connected to a network. When the IoT service is provided, applications have to have real-time properties and the amount of traffic in the network has to be increased. Also, a method of accumulating so-called big data is demanded.

For example, there is a service in which a server instantaneously performs an analysis based on detailed data from a sensor of a device provided in a factory. In this case, there is the problem that the service is not suitable for this use since the response time of an application is slow.

Furthermore, in the case of an application in which real-time properties are strongly desired, for example, in traffic control, such as a traffic light, or in a vehicle driving system, it is conceivable that a processing delay of about several hundreds of milliseconds could become fatal.

As a countermeasure against the problems described above, JP 2013-90277A proposes an edge computing technology in which small-scale slave servers (also called edge servers) are set at locations physically near users to shorten communication delays so that real-time properties of applications are achieved.

Edge computing is a type of a distributed network in which a slave server (edge server) intervening between a master server in the cloud and a client performs, for example, data storage and arithmetic processing.

SUMMARY

However, in an environment in which a client is connectable to slave servers located physically near the client, it is a problem which slave server is made to execute application operation. This is because, for example, even in a case where a slave server located physically near the client is to execute the application operation, it does not necessarily mean a fast response from that slave server from the standpoint of real-time properties.

Accordingly, there is a demand for a virtual-machine dynamic allocation system and a server in which a slave server with an optimal response time with respect to an application can be selected from slave servers located near a client.

A virtual-machine dynamic allocation system which is provided to solve the problem, and in which a master server dynamically allocates a virtual machine that is to execute a requested program to any one of slave servers, includes: (1) a response-measurement-time-information measuring unit configured to measure response-time information about a period between transmission of a request signal from each slave server to each of programs operating in the master server and reception of a response signal from each program in the master server; (2) a response-time-information storage unit configured to store the measured response-time information of each program for each slave server; and (3) a slave-server determining unit configured to refer to the response-time-information storage unit so as to determine a slave server that is to execute the requested program.

A slave server that is provided from another aspect and executes a program requested by an activated virtual machine in accordance with a command of a master server, includes: a response-measurement-time-information measuring unit configured to measure response-time information about a period between transmission of a request signal to each of programs operating in the master server and reception of a response signal from each program in the master server.

A master server that is provided from another aspect and commands any one of slave servers to serve as a virtual machine that is to execute a requested program, includes: (1) an acquiring unit configured to acquire, from each slave server, response-time information about a period between transmission of a request signal from each slave server to each of programs operating in the master server and reception of a response signal from each program in the master server; (2) a response-time-information storage unit configured to store the measured response-time information of each program for each slave server; and (3) a slave-server determining unit configured to refer to at least the response-time-information storage unit so as to determine a slave server that is to execute the requested program.

According to the present invention, a slave server with an optimal response time with respect to an application can be selected from slave servers located near a client.

DETAILED DESCRIPTION OF THE EMBODIMENTS

Hereinafter, referring to the appended drawings, preferred embodiments of the present invention will be described in detail. It should be noted that, in this specification and the appended drawings, structural elements that have substantially the same function and structure are denoted with the same reference numerals, and repeated explanation thereof is omitted.

Embodiments of a virtual-machine dynamic allocation system and a server according to the present invention will be described in detail below with reference to the drawings.

A.1. Configuration of Embodiment

FIG. 1illustrates the overall configuration of a network system according to an embodiment.

InFIG. 1, a network system1according to an embodiment has a master server10, slave servers20-1and20-2, clients30-1to30-4, and a network40.

When identical components in the slave servers20-1and20-2and in the clients30-1to30-4are to be described below, the expressions slave servers20and clients30will be used. Furthermore, the number of master servers10, slave servers20, and clients30is not particularly limited.

InFIG. 1, the network system1according to the embodiment is assumed to be a distributed network system in which slave servers (edge servers)20disposed at locations physically near the clients30virtually execute application operation in a cloud environment.

In the network system1, the master server10and the slave servers20each include a virtualization environment for establishing a cloud environment. Specifically, the master server10and the slave servers20each have a virtualization environment that activates a virtual machine (VM) in an operating system (OS) so that the virtual machine executes application operation.

An application (i.e., application program) is a software program for executing information processing requested by a user. An application collects data from a client and performs, for example, data statistical processing and data analysis processing. It is assumed that real-time properties are demanded in an application.

Although an application is not particularly limited as long as real-time properties are demanded therein. Examples include those used in energy management systems, such as traffic control, a vehicle driving system, a business system, various types of management systems, a home energy management system (HEMS), a building energy management system (BEMS), and a factory energy management system (FEMS).

A client30makes a request for desired application operation to a server (i.e., the master server10or a slave server20) in the cloud.

Although the hardware configuration of each client30is not illustrated in the drawings, each client30has arithmetic processors, such as a communication device (e.g., near-field wireless communication, wireless communication, or wired communication), a CPU, a ROM, a RAM, and an input-output interface. A client provides input data (e.g., various types of data, such as sensor data) with respect to an application to a server in the cloud and acquires data obtained in accordance with application operation from the server.

InFIG. 1, the master server10has a slave-server selecting unit11, an application-information forwarding unit12, a slave-server switching unit13, an application-response-measurement-information generating unit14, virtual machines (VMs)1to4, a network interface unit15, and a storage unit16.

The hardware configuration of the master server10is not illustrated, but is similar to that of a general-purpose server in having, for example, a CPU, a ROM, a RAM, an EEPROM, an input-output interface unit, and a communication device. The various functions of the master server10are realized by the CPU executing processing programs stored in the ROM. Alternatively, the various functions of the master server10may be established by installing the processing programs. Even in that case, the processing programs can be expressed with the configuration blocks illustrated inFIG. 1.

The master server10has all applications that can be provided via a cloud service, and a VM activated in the OS executes an application (expressed as “APL” hereinafter) requested by a client30.

FIG. 1illustrates that a VM is executing an APL in the master server10. However, a slave server20selected by the master server10substantially executes an application requested by a client30. Therefore, the master server10has a function of responding to requests from the clients30and the slave servers20.

The master server10selects a slave server20disposed physically near a client30, which is a user, and dynamically allocates an application to that slave server20.

The network interface unit15exchanges information with the network40, for example, in accordance with TCP/IP.

The VM1to VM4are virtual machines that are to be activated in the OS of the master server10. The VM1to VM4respectively execute an APL1to an APL4requested by the clients30. The VM1to VM4have data required for executing the APL1to APL4stored in the storage unit16such as an HDD, and respectively execute the APL1to APL4by using data acquired from the clients30.

FIG. 1illustrates a case where four APLs1to4are respectively executed by the VM1to VM4. Needless to say, the number of APLs is not limited, or the number of VMs activated for executing the APLs is not limited.

The slave-server selecting unit11selects a slave server that is to execute an application requested by a client30from among the distributively-arranged slave servers20.

Specifically, when the slave-server selecting unit11receives a server selection inquiry from a slave server20that has acquired a request (i.e., usage request) for an application from a client30, the slave-server selecting unit11selects an optimal slave server20for executing the requested application in accordance with a predetermined server selecting method. Furthermore, the slave-server selecting unit11commands the selected slave server20to execute the application. Consequently, an optimal slave server20for virtually executing the application requested by the client30can be selected. The server selecting method used by the slave-server selecting unit11will be described later in detail in the section describing the operation.

The application-information forwarding unit12forwards information required for executing the application requested by the client30to the slave server20selected by the slave-server selecting unit11or to a switching-destination slave server20selected by the slave-server switching unit13.

In this case, the application-information forwarding unit12performs virtual-machine dynamic allocation by, for example, forwarding information related to the client30, which is the application requesting source, designating the type of application requested by the client30, and forwarding data required for executing the application (e.g., data stored in the HDD). The method of forwarding the information required for executing the application for the virtual-machine dynamic allocation is not particularly limited, but various types of methods may be widely employed.

The slave-server switching unit13monitors the application response statuses with respect to slave servers20including the slave server20executing the application requested by the client30, and switches to a slave server20with a fast response based on the monitor result.

Based on measurement information about the response times of APLs acquired from the slave servers20, the application-response-measurement-information generating unit14generates application-response measurement information161, which will be described later.

The storage unit16is a storage region that stores therein, for example, processing programs, applications, and data required for the applications. Moreover, the storage unit16also stores therein, for example, the application-response measurement information161, a CPU performance list162, and slave server information163.

The application-response measurement information161contains, for each slave server20, measurement information (i.e., a measurement value) obtained by measuring the response time with respect to a request made for each APL of the master server10by each APL of each slave server20.

FIG. 2illustrates the configuration of the application-response measurement information161according to the embodiment.

As illustrated inFIG. 2, the application-response measurement information161has “server identification information” and “application-response measurement value” items. Items are not limited thereto.

The application-response measurement information161indicates the response time with respect to each application. In a case where the response times of applications are to be measured, the application-response measurement information161is generated for each application.

FIG. 2illustrates a case where one application-response measurement value is listed for each slave server20. However, because the slave-server selecting unit11and the slave-server switching unit13periodically measures the response time, the application-response measurement information161may contain a temporal response time for each slave server20.

InFIG. 2, the “server identification information” is an area indicating the identification information of each slave server20, in which the name of the slave server20and the IP address of the slave server20are, for example, described.

The “application-response measurement value” indicates a response time (i.e., outward-and-return delay time of an application response) taken until each APL of each slave server20receives a response to a request transmitted from the APL of the slave server20to each APL of the master server10. The application-response measurement value is measured by each slave server20, and the application-response measurement information161contains this value acquired from the slave server20.

The application-response measurement value is not intended for an outward-and-return delay time on a network of a lower layer (such as a physical layer or a network layer), but is intended for a response time of a layer including an application layer.

The quickness of a response demanded by each client30corresponds to the shortness of a response time with respect to operation for executing an application. When measuring the outward-and-return delay time of a lower layer, it is not possible in some cases to sufficiently secure the real-time properties of an application. Moreover, even in a case where a slave server20located physically near a client30is to perform application operation, the response of an application is not always fast.

In this embodiment, in order to select a slave server20with a fast response to an application, the response time of the application (i.e., outward-and-return delay time of the application) is measured.

The CPU performance list162contains, for each slave server20, the performance of the CPU with which the slave server20is equipped.

FIG. 3illustrates the configuration of the CPU performance list162according to the embodiment.

InFIG. 3, the CPU performance list162has “server identification information” and “CPU performance” items. These items are not limited thereto.

The “CPU performance” indicates the performance information of the CPU with which each slave server20is equipped. InFIG. 3, for example, “aaaa xxx-3000 (2.6 GHz)” indicates the CPU model number. Specifically, “aaaa” indicates the CPU manufacturer's name, “xxx” indicates the CPU name, “3000” indicates the model number, and “2.6 GHz” indicates the clock number. In this way, the CPU performance may be information about the CPU model number or a relative evaluation value obtained by relatively evaluating the CPU performance in accordance with the grade of the CPU (e.g., a relative evaluation value of the CPU performance evaluated based on five grades).

The information related to the CPU performance of each slave server20may be information acquired by packet-switching between the master server10and the slave server20or may be preset information if the CPU performance of the slave server20can be recognized in advance.

The slave server information163contains information such as address information (e.g., an IP address) and positional information (e.g., the latitude and longitude and physically-set positional information) of each slave server20. Moreover, the slave server information163contains information in which each slave server20and the type of application executed by the slave server20are associated with each other.

InFIG. 1, each slave server20has a slave-server-selection requesting unit21, a slave-server switching unit22, an application-response measuring unit23, VMs, a network interface unit25, and a storage unit26.

The hardware configuration of each slave server20is not illustrated but is similar to that of a general-purpose server in having, for example, a CPU, a ROM, a RAM, an EEPROM, an input-output interface unit, and a communication device. The various functions of the slave server20are realized by the CPU executing processing programs stored in the ROM. Alternatively, the various functions of the slave server20may be established by installing the processing programs. Even in that case, the processing programs can be expressed with the configuration blocks illustrated inFIG. 1

Each slave server20is a server disposed at a location physically near a client30. Each slave server20executes an application designated by the master server10and requested by a client30, and performs application operation by acquiring data from the client30.

For example, in the slave server20-1, the VM1executes the APL1and the VM2executes the APL2. In the slave server20-2, the VM3executes the APL3and the VM4executes the APL4.

The network interface unit25exchanges information with a client30and also exchanges information with the master server10.

For example, the network interface unit25may exchange information with a client30through near-field wireless communication. Furthermore, the network interface unit25may exchange information with the master server10in accordance with TCP/IP.

The VM1to VM4are virtual machines that respectively execute the APL1to APL4, which are designated by the master server10and requested by the clients30, in the OS.

When the slave-server-selection requesting unit21acquires a request for using an application from a client30, the slave-server-selection requesting unit21makes a request for selecting a slave server20that is to execute the application to the master server10.

The slave-server switching unit22regularly inquires the master server10whether or not it is necessary to switch to another slave server20.

The application-response measuring unit23measures the response time with respect to a request including dummy information transmitted by each APL to each APL of the master server10. The application-response measuring unit23regularly measures the response time of each APL. Furthermore, the application-response measuring unit23transmits the measured response time of each APL to the master server10.

The storage unit26is a storage region that stores therein, for example, processing programs, applications, and data required for the applications.

A.2. Operation of Embodiment

Next, the operation of the method of dynamically allocating the applications in the network system1according to the embodiment will be described in detail with reference to the drawings.

A.2.1. Operation for Generating Application-Response-Measurement-Information List

FIG. 4is a sequence diagram illustrating a process for generating an application-response-measurement-information list in accordance with the embodiment.

For example, it is assumed that there are APL1to APL4as applications executable by the master server10in the cloud.

In order to provide information about the types of executable applications, the master server10constantly informs each slave server20that the master server10is operating the APL1to APL4(S11).

Although the informing method is not particularly limited, but, for example, the master server10can inform each slave server20of a packet containing list information indicating the APL1to APL4indicating the types of executable applications.

In each slave server20, the application-response measuring unit23regularly transmits a request including dummy information to each of the APL1to APL4of the master server10(S12).

The contents of the dummy information may vary depending on the type of application.

For example, if an application is SIP, an application of each slave server20may use an invite message of SIP to transmit dummy information with blank message contents (e.g., all zeros).

Furthermore, for example, an application of each slave server20may transmit dummy information containing data to which the applications of the master server10are not to respond (i.e., data with no meanings).

More specifically, information to be used when a printed circuit board is installed into each slave server20may be set in advance, and this information may be used as the dummy information. For example, when the printed circuit board to be installed in each slave server20is assembled, bar-code information read from a printed-circuit-board assembly machine may be used as the dummy information. The bar-code information used when the printed circuit board is assembled includes, for example, a bar-code number as well as a process start flag and a process end flag for assembling the printed circuit board. Each slave server20transmits, for example, the read bar-code information (i.e., information containing a bar-code number and a process start flag) as the dummy information to the APLs of the master server10. In this case, since the information is non-registered information in the APLs of the master server10, the APLs of the master server10perform an error response.

When receiving the request including the dummy information from each slave server20, each of the APL1to APL4in the master server10sends back response information with respect to that request (S13). Specifically, in the master server10, an error occurs in each of the APL1to APL4that have received the request including the dummy information. Therefore, an error response is sent back to the APLs of each slave server20.

In each slave server20, the application-response measuring unit23manages the transmission time of the request including the dummy information and the reception time of the error response, and measures application-response measurement information from the difference between the transmission time and the reception time (S14).

Furthermore, each slave server20transmits, to the master server10, information containing the application-response measurement information and information related to the CPU performance thereof (S15). In a case where the information related to the CPU performance has already been transmitted to the master server10, each slave server20may be configured not to transmit the information related to the CPU performance to the master server10thereafter.

In the master server10, the application-response-measurement-information generating unit14stores the application-response measurement information, which is received from each slave server20, into the application-response measurement information161. Moreover, in the master server10, the application-response-measurement-information generating unit14stores the information related to the CPU performance of each slave server20, which is received from the slave server20, into the CPU performance list162(S16).

The slave servers20and the master server10regularly perform the process from S12to S16.

A.2.2. Selection Process of Slave Server20

First, a selection process of a slave server20when a client30makes a request for using an application will be described with reference toFIG. 5.

FIG. 5is a sequence diagram illustrating the selection process of a slave server20in accordance with the embodiment.

A client30makes a request for using the APL1to the slave server20-1(S101).

The slave server20-1transmits, to the master server10, a selection request for a slave server20that is to execute the APL1requested by the client30(S102).

In the master server10, the slave-server selecting unit11measures the response times of the applications in the respective slave servers20and selects a slave server20that is to execute the APL1requested by the client30based on the measurement result (S103).

FIG. 6is a flowchart illustrating a selection process of a slave server that is to execute an application requested by a client30in accordance with the embodiment.

First, in the master server10, the slave-server selecting unit11refers to the application-response measurement information161to compare response measurement values of the APL1to APL4in the slave servers20(S201).

In this case, the application-response measurement information161contains application-response measurement values of the slave servers20for each APL. Therefore, the slave-server selecting unit11compares the application-response measurement values of the slave servers20with respect to the APL requested by the client30.

If there are no other application-response measurement values whose difference with a minimum application-response measurement value is within a predetermined time, the slave-server selecting unit11selects the minimum application-response measurement value and selects the slave server20corresponding to the minimum application-response measurement value (S203).

A situation where the selection of an optimal slave server20is not sufficient may occur due to a small difference between the minimum application-response measurement value and other values. In the embodiment, the application-response measurement values are arranged in ascending order, and if there are other application-response measurement values whose difference with the minimum application-response measurement value is within the predetermined time, the process proceeds to step S204.

The slave-server selecting unit11refers to the CPU performance list162, and if there are other application-response measurement values whose difference with the minimum application-response measurement value is within the predetermined time, the slave-server selecting unit11compares the CPU performance between slave servers20corresponding to the minimum response measurement value and the other application-response measurement values (S204).

Then, if there is a difference in the CPU performance between the slave servers20(S204), the slave server20with the highest CPU performance is selected from among the slave servers20corresponding to the minimum response measurement value and the other application-response measurement values (S205).

The reason for preferentially selecting the slave server20with the high CPU performance will now be described. A slave server20equipped with a CPU having high CPU performance has high throughput and thus achieves fast response to an application. For example, it is also conceivable to select a slave server20in view of the current CPU processing load.

However, the recent advancement in the CPU technology has made the CPU throughput significantly higher. Therefore, even if, for example, the CPU processing load is large at present, high CPU performance tends to shorten the application response time over time.

In this embodiment, if there are slave servers20with identical application-response measurement values (i.e., within a predetermined range), the slave-server selecting unit11selects the slave server20with the high CPU performance.

In step S204, if there is no difference in the CPU performance between the slave servers20, the slave server20with the newest application ID is selected (S206). Specifically, a slave server20that is previously (i.e., already) allocated is selected as the slave server20that is to execute the APL requested by the client30.

The selection process of a slave server20will be described with reference to step S103inFIG. 5again.

In step S103, the slave-server selecting unit11selects the slave server20-1as a server that is to execute the APL1requested by the client30. Then, the master server10transmits a slave-server selection indication to the slave server20-1(S104).

The master server10forwards, for example, the APL1requested by the client30and data required for executing the application to the slave server20-1.

In order to inform the client30that the server that is to execute the APL1is a slave server, the slave server20-1transmits a slave-server selection indication thereto (S105).

Subsequently, the client30transmits data required for the operation of the APL1to the slave server20-1and starts using the APL1(S106).

A.2.3. Switching Method (1) of Slave Servers20

Next, a process of a slave-server-20switching method initiatively performed by each slave server20will be described with reference toFIG. 7.

FIG. 7is a sequence diagram illustrating a switching process of the slave servers20in accordance with the embodiment.

In this case, it is assumed that the slave server20-1is executing an application requested by a client30.

The client30transmits a message required for executing an application (i.e., a message containing data) to the slave server20-1(S301).

In the slave server20-1, the slave-server switching unit22measures the number of times the message is received from the client30. Then, when the number of times the message is received from the client30reaches a predetermined number of times (e.g.,10times), the slave-server switching unit22transmits, to the master server10, a slave-server selection request for inquiring about an optimal slave server20(S302and S303).

In the master server10, the slave-server selecting unit11refers to the application-response measurement information161to select the slave server20-2that is to execute the APL1requested by the client30(S304). In step S304inFIG. 7, the selection process of a slave server20described with reference toFIG. 6is performed. A detailed description of the selection process of a slave server20inFIG. 6will be omitted.

Subsequently, the slave-server selecting unit11selects the slave server20-2as a server that is to execute the APL1requested by the client30. Then, the master server10transmits a slave-server selection indication to the slave server20-1(S305). Specifically, the master server10transmits, to the slave server20-1, a slave-server selection indication including an indication that the switching destination that is to execute the APL1requested by the client30is the “slave server20-2”.

Furthermore, in the master server10, the application-information forwarding unit12forwards, for example, the APL1requested by the client30and data required for executing the application to the slave server20-2(S306).

In order to inform the client30that the server that is to execute the APL1is the slave server20-2, the slave server20-1transmits a slave-server selection indication thereto (S307).

Subsequently, the client30transmits data required for the operation of the APL1to the slave server20-2and starts using the APL1(S308).

A.2.4. Switching Method (2) of Slave Servers20

Next, a process of a slave-server-20switching method initiatively performed by the master server10will be described with reference toFIG. 8.

FIG. 8is a sequence diagram illustrating a switching process of the slave servers20in accordance with the embodiment.

In this case, it is assumed that the slave server20-1is executing an application requested by a client30.

In the master server10, the slave-server switching unit13inquires the slave servers20-1and20-2about the application-response measurement information on a regular basis (e.g., every minute or several minutes). In the slave servers20-1and20-2, each of the APL1to APL4transmits a request including dummy information to each APL of the master server10. The slave servers20-1and20-2then measure the response time taken to receive a response, and transmit the response measurement information to the master server10(S401to S404).

In the master server10, the slave-server selecting unit11refers to the application-response measurement information161to select the slave server20-2that is to execute the APL1requested by the client30(S405). In step S405inFIG. 8, the selection process of a slave server20described with reference toFIG. 6is performed. A detailed description of the selection process of a slave server20inFIG. 6will be omitted.

Until the switching of slave servers20is performed, the client30transmits a message required for executing an application (i.e., a message containing data) to the slave server20-1(S406).

Subsequently, the slave-server selecting unit11selects the slave server20-2as a server that is to execute the APL1requested by the client30. Then, the master server10transmits a slave-server selection indication to the slave server20-1(S407). Specifically, the master server10transmits, to the slave server20-1, a slave-server selection indication including an indication that the switching destination that is to execute the APL1requested by the client30is the “slave server20-2”.

Furthermore, in the master server10, the application-information forwarding unit12forwards, for example, the APL1requested by the client30and data required for executing the application to the slave server20-2(S408).

In order to inform the client30that the server that is to execute the APL1is the slave server20-2, the slave server20-1transmits a slave-server selection indication thereto (S409).

Subsequently, the client30transmits data required for the operation of the APL1to the slave server20-2and starts using the APL1(S410).

A.3. Advantageous Effects of Embodiment

As described above, according to this embodiment, even when there are slave servers located physically near a client, the position of a virtual machine that is to execute an application requested by the client can be dynamically allocated. As a result, the response time of the application operation can be significantly improved.

Heretofore, preferred embodiments of the present invention have been described in detail with reference to the appended drawings, but the present invention is not limited thereto. It should be understood by those skilled in the art that various changes and alterations may be made without departing from the spirit and scope of the appended claims.