The present disclosure generally relates to data processing systems and, more particularly, to systems and methods for configuring data processing systems.
Electronic equipment typically generates heat. Indoor areas that house multiple pieces of electronic equipment (such as server rooms, data centers, etc.) can generate significant amounts of heat such that the indoor areas require climate control, such as cooling. Air conditioning and other kinds of cooling measures, such as ventilation, fans, etc., are often used to ensure that the equipment does not overheat.
In some cases, applications and/or virtual machines that communicate with one another in the same data center may be hosted on different host servers. This means that all communication between such applications/virtual machines must pass through one or more physical or virtual security components, such as physical or virtual firewalls. This reduces efficiency and/or speed of the communication and data processing, and may also generate additional heat as compared to communications between applications/virtual machines hosted on the same host server.
In addition, applications/virtual machines having commonalities are often hosted on different host servers. Further, in some cases, applications/virtual machines may be hosted on the same host server with other applications virtual machines with which there are no commonalities. This also reduces efficiency and/or speed of the communication and data processing, and may also generate additional heat as compared to hosting applications/virtual machines on the same host server.
Also, server clusters are typically operated to spread out the processing duties substantially evenly among all servers in the cluster. However, during times when minimal processing is required, large amounts of energy may be used by keeping all servers in the cluster operating at full power. Further, operating all servers in the cluster operating at full power may generate additional heat.
There is a need in the art for a system and method that addresses the shortcomings discussed above. In particular, there is a need in the art for a disaster condition monitoring system.
In one aspect, the present disclosure is directed to a data processing system. The system may include a plurality of host servers, each host server including a device processor and a non-transitory computer readable medium including instructions stored thereon and executable by the processor. The computer readable medium of each server includes instructions for running one or more application, wherein the plurality of host servers are networked in communication with one another. The system further includes a system controller networked with the plurality of host servers and including a device processor and a non-transitory computer readable medium including instructions stored thereon and executable by the processor, wherein the computer readable medium of the system controller includes instructions for performing the following steps: receiving commands to run two or more applications on the plurality of host servers; making a determination as to which of the two or more applications communicate with one another during operation; and based on the determination, providing instructions to the plurality of host servers to run running applications determined to communicate with one another on the same host server.
In another aspect, the present disclosure is directed to a data processing system. The system may include a plurality of machines, each machine including a device processor and a non-transitory computer readable medium including instructions stored thereon and executable by the processor, wherein the computer readable medium of each machine includes instructions for running one or more application, and wherein the plurality of machines are networked in communication with one another. The system may also include a system controller networked with the plurality of machines and including a device processor and a non-transitory computer readable medium including instructions stored thereon and executable by the processor, wherein the computer readable medium of the system controller includes instructions for performing the following steps: receiving commands to run two or more applications on the plurality of machines; making a determination as to which of the two or more applications communicate with one another during operation; and based on the determination, providing instructions to the plurality of machines to run applications determined to communicate with one another on the same machine.
In another aspect, the present disclosure is directed to a method of configuring a data processing system. The method may include receiving commands, with a system controller networked with a plurality of machines, to run two or more applications on a plurality of machines networked in communication with one another, each machine including a device processor and a non-transitory computer readable medium including instructions stored thereon and executable by the processor. The method may also include determining, with the system controller, which of the two or more applications communicate with one another during operation; and the system controller providing instructions to the plurality of machines to run applications determined to communicate with one another on the same machine.
In another aspect, the present disclosure is directed to a data processing system. The system may include a plurality of host servers, each server including a device processor and a non-transitory computer readable medium including instructions stored thereon and executable by the processor, wherein the computer readable medium of each server includes instructions for running one or more virtual machines, and wherein the plurality of host servers are networked in communication with one another. In addition, the system may include a system controller networked with the plurality of host servers and including a device processor and a non-transitory computer readable medium including instructions stored thereon and executable by the processor, wherein the computer readable medium of the system controller includes instructions for performing the following steps: receiving commands to host two or more virtual machines on the plurality of host servers; making a determination as to which of the two or more virtual machines share commonalities with one another; and based on the determination, providing instructions to the plurality of host servers to host virtual machines determined to share one or more commonalities with one another on the same host server.
In another aspect, the present disclosure is directed to a data processing system. The system may include a plurality of machines, each machine including a device processor and a non-transitory computer readable medium including instructions stored thereon and executable by the processor, wherein the computer readable medium of each machine includes instructions for running one or more virtual machines, and wherein the plurality of machines are networked in communication with one another. The system may also include a system controller networked with the plurality of host servers and including a device processor and a non-transitory computer readable medium including instructions stored thereon and executable by the processor, wherein the computer readable medium of the system controller includes instructions for performing the following steps: receiving commands to host two or more virtual machines on the plurality of machines; making a determination as to which of the two or more virtual machines share commonalities with one another; and based on the determination, providing instructions to the plurality of machines to host virtual machines determined to share one or more commonalities with one another on the same machine.
In another aspect, the present disclosure is directed to a method of configuring a data processing system. The method may include receiving commands, with a system controller, to host two or more virtual machines on a plurality of machines networked in communication with one another, each machine including a device processor and a non-transitory computer readable medium including instructions stored thereon and executable by the processor. In addition, the method may include making a determination, with the system controller, as to which of the two or more virtual machines share commonalities with one another and, based on the determination, the system controller providing instructions to the plurality of machines to host virtual machines determined to share one or more commonalities with one another on the same machine.
In another aspect, the present disclosure is directed to a data processing system. The system may include a plurality of host servers, each host server including a device processor and a non-transitory computer readable medium including instructions stored thereon and executable by the processor, wherein the computer readable medium of each server includes instructions for running one or more virtual machines, and wherein the plurality of host servers are networked in communication with one another. The system may also include a system controller networked with the plurality of host servers and including a device processor and a non-transitory computer readable medium including instructions stored thereon and executable by the processor, wherein the computer readable media of the system controller includes instructions for performing the following steps: receiving commands to terminate a hosting session of one or more virtual machines hosted on the plurality of host servers; making a determination as to how much processing capacity is required of each of the plurality of host servers to host the remaining virtual machines following the termination of one or more virtual machines; and if hosting the remaining virtual machines requires less than a predetermined amount of processing capacity from one or more host servers of the plurality of host servers, moving all other processes from the one or more host servers to other host servers and changing the one or more host servers from which processes have been moved from an online mode in which the one or more host servers are fully powered up to an offline mode in which the one or more host servers utilize a reduced amount of electrical power.
In another aspect, the present disclosure is directed to a data processing system. The system may include a plurality of host servers, each host server including a device processor and a non-transitory computer readable medium including instructions stored thereon and executable by the processor, wherein the computer readable medium of each server includes instructions for running one or more virtual machines, and wherein the plurality of host servers are networked in communication with one another. The system may also include a system controller networked with the plurality of host servers and including a device processor and a non-transitory computer readable medium including instructions stored thereon and executable by the processor, wherein the computer readable media of the system controller includes instructions for performing the following steps: receiving commands to activate a hosting session of one or more virtual machines to be hosted on the plurality of host servers; making a determination as to how much processing capacity is required of each of the plurality of host servers to host the active virtual machines following the activation of the hosting session of the one or more virtual machines; and if hosting the active virtual machines requires more than a predetermined amount of processing capacity from one or more host servers of the plurality of host servers, powering up an additional host server from an offline mode in which the one or more host servers utilize a reduced amount of electrical power to an online mode in which the additional host server is fully powered up.
In another aspect, the present disclosure is directed to a method of operating a data processing system. The method may include receiving commands, with a system controller networked with a plurality of host servers, to terminate a hosting session of one or more virtual machines hosted on the plurality of host servers, each host server including a device processor and a non-transitory computer readable medium including instructions stored thereon and executable by the processor. The method may also include determining, with the system controller, as to how much processing capacity is required of each of the plurality of host servers to host the remaining virtual machines following the termination of one or more virtual machines and, if hosting the remaining virtual machines requires less than a predetermined amount of processing capacity from one or more host servers of the plurality of host servers, the system controller moving all other processes from the one or more host servers to other host servers and changing the one or more host servers from which processes have been moved from an online mode in which the one or more host servers are fully powered up to an offline mode in which the one or more host servers utilize a reduced amount of electrical power.
In another aspect, the present disclosure is directed to a method of operating a data processing system. The method may include receiving commands, with a system controller networked with a plurality of host servers, to activate a hosting session of one or more virtual machines to be hosted on the plurality of host servers, each host server including a device processor and a non-transitory computer readable medium including instructions stored thereon and executable by the processor. The method may also include determining, with the system controller, as to how much processing capacity is required of each of the plurality of host servers to host the virtual machines following the activation of the hosting session of the one or more virtual machines and, if hosting the virtual machines, including the virtual machine to be activated, requires more than a predetermined amount of processing capacity from one or more host servers of the plurality of host servers, the system controller powering up an additional host server from an offline mode in which the additional host server utilizes a reduced amount of electrical power to an online mode in which the additional host server is fully powered up.
Other systems, methods, features, and advantages of the disclosure will be, or will become, apparent to one of ordinary skill in the art upon examination of the following figures and detailed description. It is intended that all such additional systems, methods, features, and advantages be included within this description and this summary, be within the scope of the disclosure, and be protected by the following claims.
The invention can be better understood with reference to the following drawings and description. The components in the figures are not necessarily to scale, emphasis instead being placed upon illustrating the principles of the invention. Moreover, in the figures, like reference numerals designate corresponding parts throughout the different views.
The present disclosure is directed to data processing systems. The disclosed systems may include features for configuring the system to improve efficiency, increase processing speed, improve security, and/or reduce heat production. In particular, the disclosed systems may include provisions for hosting applications and/or virtual machines on the same host server in order to provide one or more of the benefits noted above.
Grouping Apps on Servers Based on Communication
A data center may include two or more different servers that host applications that communicate with one another as a matter of standard operations. In some cases, two such servers may be separated from one another, physically and/or virtually. For example, in some cases, the servers may be located across the server room from one another. Physical separation typically means there are multiple connections, components, firewalls, etc. along the path of communication between the two servers. This limits the speed and efficiency with which communication between applications hosted on these separate servers can take place. In other cases, the servers may be located within relatively close physical proximity to one another, but virtually far apart, as multiple connections, components, firewalls, etc., may be disposed along the path of communication between the two servers even if the servers are located physically right next to one another. Such physical or virtual separation between servers hosting applications or virtual machines that communicate with one another may occur for any number of reasons. In some cases it may occur as data centers are updated to include new pieces of equipment and reconfigured to add services and functionality. Instead of overhauling the entire processing configuration of the data center, the new equipment and services are added in a piecemeal fashion or on an ad hoc basis. This can lead to inefficient configurations in which applications or virtual machines that communicate with one another are hosted on servers that are separated from one another physically or virtually.
In order to improve communication between two applications or virtual machines that regularly communicate with one another, the disclosed system may include provisions to configure itself to host the two applications or virtual machines on the same host server if the two applications or virtual machines are determined to communicate with one another.
In some embodiments, each stack of servers may function together in a so-called server “cluster.” In some embodiments, a server cluster may include multiple stacks of servers. Further, in some embodiments, servers from more than one stack may function together as a cluster. For example, a cluster may include all servers from a first stack, and only some of the servers in a second stack. It will be understood that the clustering of servers may be configured in various ways, with cluster servers controlling the collective function of the collection of servers in each cluster, regardless of which physical stack the servers are disposed in.
As shown in
Clustered or otherwise, multiple servers, particularly servers housed in the same facility, are controlled collectively. In order to effectuate such control, a system controller may be provided in the system. The system controller may come in various forms. For example, the system controller may include one or more components, such as a provisioning services server (PVS), cluster server, vCenter server (i.e., a virtual machine control component), etc. In some embodiments, one of these devices may serve as the system controller having various functions described below. In other embodiments, the system controller may include more than one of these devices. For example, in some cases, the system controller may include both a vCenter server and a provisioning services server. In some embodiments, the system controller may include a top rack switch, which is provided at the top of each server stack and controls certain operations of the servers in the stack. In other embodiments, the system controller may be provided within one or more of the host servers in the system. In some cases, the functions below may be stored on computer readable media of the host servers themselves, and controlled by the processors therein as well. Accordingly, when using the term “system controller” herein, the present disclosure refers to any of the system controller configurations discussed above. In any of these configurations, the system controller has at least two components, namely a device processor and a computer readable medium including instructions stored thereon that are executable by the processor.
The non-transitory computer readable medium may include any suitable computer readable medium, such as a memory, e.g., RAM, ROM, flash memory, or any other type of memory known in the art. In some embodiments, the non-transitory computer readable medium may include, for example, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of such devices. More specific examples of the non-transitory computer readable medium may include a portable computer diskette, a floppy disk, a hard disk, a read-only memory (ROM), a random access memory (RAM), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), an erasable programmable read-only memory (EPROM or Flash memory), a digital versatile disk (DVD), a memory stick, and any suitable combination of these exemplary media. A non-transitory computer readable medium, as used herein, is not to be construed as being transitory signals, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.
Instructions stored on the non-transitory computer readable medium for carrying out operations of the present invention may be instruction-set-architecture (ISA) instructions, assembler instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, configuration data for integrated circuitry, state-setting data, or source code or object code written in any of one or more programming languages, including an object oriented programming language such as Smalltalk, C++, or suitable language, and procedural programming languages, such as the “C” programming language or similar programming languages.
Aspects of the present disclosure are described in association with figures illustrating flowcharts and/or block diagrams of methods, apparatus (systems), and computing products. It will be understood that each block of the flowcharts and/or block diagrams can be implemented by computer readable instructions. The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of various disclosed embodiments. Accordingly, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions. In some implementations, the functions set forth in the figures and claims may occur in an alternative order than listed and/or illustrated.
Controller 200 may include networking hardware configured to interface with other nodes of a network, such as a LAN, WLAN, or other networks. In Further, controller 200 may be configured to receive data from a plurality of sources and communicate information to one or more external destinations. Accordingly, controller 200 may include a receiver 220 and a transmitter 225. (It will be appreciated that, in some embodiments, the receiver and transmitter may be combined in a transceiver.) In some cases, communications between components may be made via the Internet, a cellular network, WIFI, or other suitable communications network.
Any suitable communication platforms and/or protocols may be utilized for communication between controller 200 and other components of the system. Since the various sources of information may each have their own platform and/or protocol, the system may be configured to interface with each platform and/or protocol to receive the data.
In some embodiments, the disclosed data processing system may include a plurality of host servers networked in communication with one another, each host server including a device processor and a non-transitory computer readable medium including instructions stored thereon and executable by the processor. The computer readable medium of each server may include instructions for running one or more application. In some embodiments, the system may include machines other than host servers. For example, the system may include a plurality of networked personal computers (e.g., desktop computers, laptops, tablets, etc.) or other personal electronic devices (e.g., smart phones, smart watches, etc.) configured to run one or more applications.
As shown in
While only two host servers from each stack will be discussed herein, it will be understood that each server stack may include more than two host servers. Further, the disclosed concept may be applicable across more than two server stacks. In some embodiments, the plurality of host servers described above are all disposed at the same facility. In some such embodiments, the plurality of host servers may all be disposed in the same room. In other such embodiments, two or more of the plurality of host servers may be disposed in different rooms of the facility from one another. In other embodiments, two or more of the plurality of host servers may be disposed at different facilities from one another.
Each of these host servers may include a device processor and a non-transitory computer readable medium including instructions stored thereon and executable by the processor. The computer readable medium of each server includes instructions for running one or more applications. For example, as shown in
The plurality of host servers discussed above may be networked in communication with one another. For example, system 300 may include a system controller networked with the plurality of host servers and including a device processor and a non-transitory computer readable medium including instructions stored thereon and executable by the processor. As discussed above, the system controller may include a vCenter server 350 and/or a provisioning services server (PVS) 355. One or both of these servers may include a computer readable medium with instructions for controlling operations of the host servers in the network. For example, the computer readable medium may include instructions for receiving commands to run two or more applications on the plurality of host servers.
The computer readable medium of the system controller may further include instructions for making a determination as to which of the two or more applications communicate with one another during operation. Further, the computer readable medium may include instructions for, based on the determination, providing instructions to the plurality of host servers to run running applications determined to communicate with one another on the same host server.
System 300 may be configured to execute the migration of sixth application 346 to second host server 330, or simply provide recommendations for how to configure hardware and virtual modules for efficiency based on the assessment of which apps are communicating with each other. This optimization (or recommended optimization) may be facilitated at one or more of three different stages, namely at application development, at application deployment/installation, and/or post-installation of the applications.
For example, in some cases, the optimization may be coordinated at the stage of application development. Since the application developer will know the other applications with which the given application will communicate, they can build in recommendations or procedures to be executed in order to group communicating applications with one another on the same host server. Accordingly, the determination as to which applications communicate with one another may be performed based on a listing, stored on one or more of the two or more applications, of other applications with which each application communicates during operation. This may be applicable at deployment, for example, during installation of the applications, and/or as part of ongoing operation of fully installed applications.
In some cases, data may be collected post-installation as to the applications with which the given application communicates. Accordingly, in some embodiments, the determination as to which applications communicate with one another is performed based on data, collected during operation of the two or more applications, regarding which other applications each application communicates.
In addition, as discussed above, in some embodiments, the step of determining of which applications communicate with one another may be performed based on a listing, stored on one or more of the two or more applications, of other applications with which each application communicates during operation. Alternatively, or additionally, as also discussed above, the step of determining which applications communicate with one another may be performed based on data collected during operation of the two or more applications regarding which other applications each application communicates.
It will be understood that these method steps are performed by a device processor in one or more of the physical system components discussed above by execution of instructions stored on a non-transitory computer readable medium of one or more of the physical system components discussed above.
Collecting VM's on Servers Based on Commonalities
For similar reasons to those discussed above, applications or virtual machines that have commonalities may end up hosted on servers that are separated from one another physically and/or virtually. For example, in some cases, a data center may be configured to host multiple staff virtual machines for the same organization. Some of these staff virtual machines may be hosted on different servers. Further, in some cases, the same data center may also host one or more virtual machines that are used for regular communication with outside clients and/or multiple users. For example, the Payment Card Industry (PCI) utilizes equipment, such as Automated Teller Machines (ATM), that is networked. Accordingly, the processing for each ATM may run as a virtual machine hosted at a data center. In some cases ATM virtual machines may be run on the same host server as staff virtual machines. However, because the PCI virtual machines involve interaction from multiple users, and because the PCI virtual machine handles the transfer of sensitive data (e.g., financial data), the processing, communication, and security considerations for PCI virtual machines are significantly different compared to staff machines.
In order to address these considerations, the disclosed system may be configured to host applications/virtual machines on the same host server if the applications/virtual machines share commonalities with one another. For example, the system may be configured to run all staff virtual machines for a given organization on the same host server or servers and run all PCI virtual machines on one or more host servers that are separate from the server(s) hosting the staff virtual machines.
As shown in
In some embodiments, the system controller may include instructions for making a determination as to which of the two or more virtual machines share commonalities with one another and, based on the determination, providing instructions to the plurality of host servers to host virtual machines determined to share one or more commonalities with one another on the same host server.
In addition, system 600 may include provisions to not only group similar virtual machines together on the same host server, but also prevent different virtual machines from being hosted on the same host server. Accordingly, the computer readable medium of the system controller may further include instructions for making a determination as to whether the two or more virtual machines have one or more predetermined differences and preventing virtual machines having one or more predetermined differences from running on the same host server.
The predetermined differences may be of any nature that affects processing. For example, in some embodiments, the predetermined differences may include different levels of public interaction. For instance, virtual machines that are accessible by many users (e.g., PCI virtual machines associated with an ATM) have a significantly different level of public interaction as compared to virtual machines accessed by a single user. Another example of a predetermined difference upon which grouping of virtual machines may be performed may be different levels of security restrictions. A virtual machine configured for access by a secretarial staff manager may have minimal security restrictions, whereas a virtual machine configured for access by personnel working on a classified government contract may have a relatively high level of security associated with it. Similarly, another exemplary predetermined difference may be different levels of sensitivity with respect to data processed by the virtual machines. Examples of highly sensitive data may include financial data and medical records data.
As discussed above, optimization based on inter-application communication may be facilitated at one or more of three different stages, namely at application development, at application deployment/installation, and/or post-installation of the applications. Similarly, optimization based on commonalities between virtual machines may also be facilitated at these three stages. Accordingly, the determination as to which virtual machines share commonalities with one another may be performed based on a listing, stored on one or more of the two or more virtual machines (e.g., at the stage of application development or deployment), of other virtual machines with which each virtual machine shares commonalities. Alternatively, or additionally, the determination as to which virtual machines share commonalities with one another is performed based on data collected during operation of the two or more virtual machines (i.e., post-deployment) regarding which other virtual machines each virtual machine communicates.
In addition, the method may include making a determination as to whether the two or more virtual machines have one or more predetermined differences and preventing virtual machines having one or more predetermined differences from running on the same host server. The predetermined differences may be selected from the group including different levels of public interaction, different levels of security restrictions, and different levels of sensitivity with respect to data processed by the virtual machines. The data having different levels of sensitivity may include highly sensitive data and less sensitive data. In some embodiments, the highly sensitive data may include at least one of financial data and medical records data.
As discussed above, the step of determining which virtual machines share commonalities with one another may be performed based on a listing, stored on one or more of the two or more virtual machines, of other virtual machines with which each virtual machine shares commonalities. Alternatively, or additionally, the step of determining which virtual machines share commonalities with one another may be performed based on data collected during operation of the two or more virtual machines regarding which other virtual machines each virtual machine communicates.
Virtual Desktop Infrastructure (VDI) Management
Typical data centers are configured to spread out data processing across all available servers in order to minimize the load on any given server. However, during periods of low usage, evenly spreading data processing across all servers leaves each server running at such a low capacity that keeping all servers running is particularly inefficient from both energy usage and data processing standpoints.
Accordingly, in order to address this issue, in some embodiments, the disclosed system may be configured to consolidate applications/virtual machines on the same host server(s) and placing unused servers in an offline mode requiring a reduced amount of electrical power in order to conserve energy. The offline mode may be any condition in which the server requires a reduced amount of power. In some cases, in the offline mode the server may be completely off (i.e., fully powered down). In some cases, in the offline mode the server may be in a standby or maintenance mode in which the server requires only a minimal amount of power. The server may be powered up to a fully online mode from a standby or maintenance mode much more quickly than it can be powered up from being fully powered down (i.e., off). Accordingly, when additional virtual machines are requested, host servers may be brought online very quickly in order to host the additional virtual machines if the host servers that are currently online are already operating at a predetermined processing capacity. For example, if hosting the additional requested virtual machine will require greater than 90% of the processing capacity of each of the currently online host servers, another host server may be brought online to accommodate the additional processing.
In some embodiments, the computer readable medium of the system controller may include instructions for substantially evenly distributing processes to all host servers that are in the online mode. Accordingly, although the disclosed system may be configured to (unconventionally) consolidate virtual machines onto less than all of the available servers and power down unused servers, once the number of online servers has been reduced, the system may evenly distribute processing among the online servers.
An example to illustrate the difference from a conventional system is as follows. Utilizing round numbers for purposes of explanation, an exemplary system may include 10 host servers, each capable of handling 10 processing tasks at a time, for a total capacity of 100 processing tasks. If a total of 50 processing tasks are required to be run at a given time, a conventional system would operate all 10 servers at 50% processing capacity (i.e., using 5/10ths capacity for each server). In contrast, the system disclosed herein may consolidate the 50 processing tasks onto only 6 servers, all running at approximately 83% capacity, and power down 4 of the 10 servers. That is, the 6 online servers would have the capacity to run 60 processing tasks total, but only 50 total processing tasks are required at the time in question. Spreading these 50 processing tasks across the 6 online servers results in each online server running approximately 8.3 tasks on average. Accordingly, 8.3 tasks is 83% of the 10 processing tasks that each hypothetical server is capable of executing.
In reality, the individual processing tasks may not be able to be split up. For example, considering a virtual machine as a processing task, each virtual machine must be hosted completely on a single host server. Accordingly, the online servers may host uneven numbers of virtual machines. For example, if the hypothetical 50 processing tasks are 50 virtual machines, the 6 online servers may include 4 servers each hosting 8 virtual machines, and 2 servers each hosting 9 virtual machines. That is, 8+8+8+8+9+9=50. This represents the most even distribution of processing achievable while minimizing the number of host servers being used and without overburdening any of the host servers. Accordingly, the disclosed system may be configured to optimize hosting of virtual machines in a similar manner.
As shown in
In some embodiments, the computer readable media of the system controller includes instructions for receiving commands to terminate a hosting session of one or more virtual machines hosted on the plurality of host servers. Further, the computer readable media of the system controller may include instructions for making a determination as to how much processing capacity is required of each of the plurality of host servers to host the remaining virtual machines following the termination of one or more virtual machines and, if hosting the remaining virtual machines requires less than a predetermined amount of processing capacity from one or more host servers of the plurality of host servers, moving all other processes from the one or more host servers to other host servers and changing the one or more host servers from which processes have been moved from an online mode in which the one or more host servers are fully powered up to an offline mode in which the one or more host servers utilize a reduced amount of electrical power.
While the system originally had three online servers hosting three, two, and two virtual machines, respectively, terminating one of the virtual machine sessions meant that the three online servers were hosting three, two, and one virtual machines, respectively. Accordingly, the system moved sixth virtual machine 970 from the third host server 930 to second host server 925 and powered down third host server. Accordingly,
When additional virtual machines are requested to be hosted, the system may power up one or more host servers to accommodate the additional processing. Accordingly, the computer readable medium of the system controller includes instructions for powering up an additional host server to the online mode if hosting all requested virtual machines requires more than a predetermined amount of processing capacity from one or more host servers of the plurality of host servers.
Accordingly, the opposite of the process illustrated in
For example, if the starting condition of the system is as shown in
The system may evaluate the available capacity of the host servers individually and/or collectively. Accordingly, in some embodiments, the determination as to how much processing capacity is required includes an evaluation of the collective processing capacity of all host servers in the online mode. This evaluation enables the system to determine how much total capacity will be available once a virtual machine session is terminated. If a large amount of total capacity will be available, the system may power down one or more host servers. In addition, this evaluation also enables the system to determine whether the currently online servers can handle the additional processing being requested. If not, the system may power up an additional server.
In some embodiments, the method may also include the system controller substantially evenly distributing processes to all host servers that are in the online mode. In addition, the method may include receiving a request to begin an additional virtual machine session on the plurality of host servers and powering up an additional host server to the online mode if hosting the virtual machines requires more than a predetermined amount of processing capacity from one or more host servers of the plurality of host servers.
In some embodiments, the step of determining how much processing capacity is required may include evaluating the collective processing capacity of all host servers in the online mode.
The present disclosure describes three general concepts of configuring a data processing system, namely grouping applications on servers based on inter-application communication, collecting virtual machines on servers based on commonalities between the virtual machines, and virtual desktop management (e.g., powering up or powering down servers based on processing demands). It will be understood that, in some embodiments, an exemplary data processing system may implement more than one of these three general concepts and, in some cases, an exemplary system may implement all three of these general concepts.
The embodiments discussed herein may make use of methods and systems in artificial intelligence to improve efficiency and effectiveness of the disclosed systems. As used herein, “artificial intelligence” may include any known methods in machine learning and related fields. As examples, artificial intelligence may include systems and methods used in deep learning and machine vision.
While various embodiments have been described, the description is intended to be exemplary, rather than limiting, and it will be apparent to those of ordinary skill in the art that many more embodiments and implementations are possible that are within the scope of the embodiments. Although many possible combinations of features are shown in the accompanying figures and discussed in this detailed description, many other combinations of the disclosed features are possible. Any feature of any embodiment may be used in combination with, or substituted for, any other feature or element in any other embodiment unless specifically restricted. Therefore, it will be understood that any of the features shown and/or discussed in the present disclosure may be implemented together in any suitable combination. Accordingly, the embodiments are not to be restricted except in light of the attached claims and their equivalents. Also, various modifications and changes may be made within the scope of the attached claims.
This application claims priority to U.S. Provisional Patent Application No. 62/786,898, filed Dec. 31, 2018, the entire disclosure of which is hereby incorporated by reference.
Number | Name | Date | Kind |
---|---|---|---|
5682507 | Phillips et al. | Oct 1997 | A |
9116803 | Agrawal | Aug 2015 | B1 |
9197489 | Vincent | Nov 2015 | B1 |
9304797 | Umezawa | Apr 2016 | B2 |
10628194 | Ryu | Apr 2020 | B2 |
11226773 | Patel | Jan 2022 | B1 |
20020129176 | Bolmarcich et al. | Sep 2002 | A1 |
20070121631 | Krikorian | May 2007 | A1 |
20090249472 | Litvin et al. | Oct 2009 | A1 |
20110055602 | Kamay et al. | Mar 2011 | A1 |
20110072293 | Mazzaferri et al. | Mar 2011 | A1 |
20110142053 | Van Der Merwe | Jun 2011 | A1 |
20110197039 | Green et al. | Aug 2011 | A1 |
20110225459 | Fahrig | Sep 2011 | A1 |
20120084262 | Dwarampudi et al. | Apr 2012 | A1 |
20120304170 | Morgan | Nov 2012 | A1 |
20130263208 | Challa | Oct 2013 | A1 |
20130275592 | Xu et al. | Oct 2013 | A1 |
20130275973 | Greenfield | Oct 2013 | A1 |
20130290513 | Shikari et al. | Oct 2013 | A1 |
20140189685 | Kripalani | Jul 2014 | A1 |
20140282522 | Daly | Sep 2014 | A1 |
20150007176 | Kotani | Jan 2015 | A1 |
20160048408 | Madhu | Feb 2016 | A1 |
20160125059 | Jain et al. | May 2016 | A1 |
20160179184 | Shah et al. | Jun 2016 | A1 |
20160323245 | Shieh et al. | Nov 2016 | A1 |
20170063801 | Faynberg | Mar 2017 | A1 |
20190025903 | Mehta et al. | Jan 2019 | A1 |
20190050046 | Gupta et al. | Feb 2019 | A1 |
20190272016 | Frias et al. | Sep 2019 | A1 |
20200034173 | Rosenberg | Jan 2020 | A1 |
20200183725 | Grehan | Jun 2020 | A1 |
Entry |
---|
Office Action dated Oct. 9, 2020 in U.S. Appl. No. 16/593,877. |
Office Action dated Mar. 8, 2021 in U.S. Appl. No. 16/593,877. |
Office Action dated Jun. 22, 2020 in U.S. Appl. No. 16/593,877. |
Office Action dated Oct. 4, 2021 in U.S. Appl. No. 16/593,554. |
Number | Date | Country | |
---|---|---|---|
62786898 | Dec 2018 | US |