This invention relates to computer network communication, and more particularly, to a trending engine for a virtual desktop architecture.
Various computer systems may use a thin-client or a virtual desktop display in conjunction with a centralized server computer system or mainframe. Virtualization is a logical representation of a computer in software. By decoupling the physical hardware from aspects of operation, virtualization may provide more operational flexibility and increase the utilization rate of the underlying physical hardware. Although virtualization is implemented primarily in software, many modern microprocessors now include hardware features explicitly designed to improve the efficiency of the virtualization process.
A virtual desktop display can be served to client devices from a central or distributed server computer system. The server may receive input and output over a network or other communication medium established between the device and the server. In some examples, a thin-client device may run web browsers or remote desktop software, such that significant processing may occur on the server.
In many instances, users may be delayed as they transition to new applications (e.g., when they move to new locations). This wait time can significantly impact productivity and efficiency. Thus, there may be a need in the art to reduce wait periods as users transition in and out of different workflows.
Methods, systems, devices, and computer program products are described to address trending in a virtual computing environment. Sessions may be monitored based on a type of user involved, a type of computer or application accessed, and movement to or between specific locations. The workflow of a user (e.g., use or inactivation of an application) within a session may be monitored as well. Certain correlations between past and future actions are identified. Future events may be anticipated or predicted based on an association between events, types of users, types of computers and applications, and/or specific locations. Using this trending information, workflow can be anticipated and sessions can be adapted proactively. Rules may be generated tying triggering event and resultant actions. Triggering events may be detected, and rules may be applied based of the detected triggering events.
In a first set of embodiments, a method for session management in a virtual computing environment includes monitoring workflow for a series of user sessions and detecting a triggering event in the monitored workflow that indicates a change in user interaction state of a user of the virtual computing environment. The method further includes identifying a trending action associated with the triggering event according to a trending rule that is based on a correlation between the triggering event and the trending action in previous user sessions, applying the trending action to a user session, the trending action modifying the user session, and serving the modified user session to a computer of the virtual computing environment associated with the user session.
According to aspects consistent with various embodiments, the method includes identifying a correlation between the triggering event and the trending action for users of a first user type in the monitored workflow and generating the trending rule associating the trending action with the triggering event according to the first user type. Detecting the triggering event may include receiving a user log-in to a client device of the virtual computing environment. Upon receiving the user log-in, the system may determine a location transition of the user based on the client device and information related to a previous log-in of the user to the virtual computing environment and/or determine a user type associated with the user. The method may further include identifying a triggering event associated with the location transition and/or the user type. The method may include initiating the user session in response to the user log-in. In various embodiments, a workflow event may be received that indicates a change in workflow information and detecting the triggering event in the monitored workflow may be based at least in part on the workflow event.
In a second set of embodiments, a computer system for managing sessions in a virtual computing environment includes a monitoring module that monitors workflow for a series of user sessions, a rules detection module that detects a triggering event in the monitored workflow that indicates a change in user interaction state of a user of the virtual computing environment, a rules data store that stores a trending rule that associates a trending action with the triggering event based on a correlation between the triggering event and the trending action in previous user sessions, a rule application module that applies the trending action to a user session, the trending action modifying the user session before the user session is served to a client device of the virtual computing environment.
According to yet other aspects consistent with various embodiments, the computer system includes a monitoring module that monitors workflow for a series of user sessions, a trending engine that identifies the correlation between the triggering event and the trending action for users of a first user type in the monitored workflow, and a rules generator that generates the trending rule associating the trending action with the triggering event according to the first user type. The rules detection module may detect the triggering event according to a location transition that is determined based on a user log-in to a client device of the virtual computing environment and information related to a previous log-in of the user to the virtual computing environment. The rules detection module may receive a user log-in to a client device of the virtual computing environment and identify the triggering event based at least in part on the user type associated with the user based on user log-in information. The computer system may initiate the user session in response to the user log-in. In embodiments, the monitoring module receives a workflow event indicating a change in workflow information and the rules detection module detects the triggering event in the monitored workflow at least in part on the workflow event.
A further understanding of the nature and advantages of the present invention may be realized by reference to the following drawings. In the appended figures, similar components or features may have the same reference label. Further, various components of the same type may be distinguished by following the reference label by a dash and a second label that distinguishes among the similar components. If only the first reference label is used in the specification, the description is applicable to any one of the similar components having the same first reference label irrespective of the second reference label.
Methods, systems, devices, and computer program products are described to monitor trends in workflow in a virtual desktop infrastructure, and adapt a session according to these monitored trends. Sessions in a virtual computing environment may be monitored based on a type of user involved, a type of client device or application accessed, specific locations, time of day, security levels, and/or other parameters. The workflow of a user within a session may be monitored as well. Certain correlations between past and future actions are identified. Future events may be anticipated or predicted based on an association between events, types of users, types of computers and applications, and/or specific locations. Using this trending information, workflow can be anticipated and sessions can be adapted proactively.
This description provides examples only, and is not intended to limit the scope, applicability, or configuration of the invention. Rather, the ensuing description of the embodiments will provide those skilled in the art with an enabling description for implementing embodiments of the invention. Various changes may be made in the function and arrangement of elements without departing from the spirit and scope of the invention.
Thus, various embodiments may omit, substitute, or add various procedures or components as appropriate. For instance, it should be appreciated that in alternative embodiments the methods may be performed in an order different from that described, and that various steps may be added, omitted, or combined. Also, features described with respect to certain embodiments may be combined in various other embodiments. Different aspects and elements of the embodiments may be combined in a similar manner.
It should also be appreciated that the following systems, methods, devices, and software may individually or collectively be components of a larger system, wherein other procedures may take precedence over or otherwise modify their application. Also, a number of steps may be required before, after, or concurrently with the following embodiments.
Systems, devices, methods, and software are described for a virtual computing environment. In one set of embodiments, shown in
The central server computer system 105 may be configured to run sessions of a virtual computing environment for one or more users, and the session may be allowed to roam with a user as he or she moves between client devices 120. As used herein, the term “session” or “user session” refers to a hosted session of a virtual computing environment that may be accessed from one or more client devices of the virtual computing environment. For example, a session may include a thin client session, a virtual application session, a virtual machine session, a virtual operating system session, and/or the like. In some embodiments, some of the functions of the central server computer system 105 in this process may be distributed to or among computers. The central server computer system 105 may serve a session to specific client devices 120 in the network. As used herein, a virtual computing environment includes any network whereby KVM (keyboard, video, and mouse) functionality is decoupled from the computer serving the session through techniques of virtualization.
The central server computer system 105 may include a session manager and rules engine to allocate and manage sessions within the network. The central server computer system 105 may be made up of one or more server computers, workstations, web servers, or other suitable computing devices. The central server computer system 105 may be fully located within a single facility or distributed geographically, in which case a network may be used to integrate different components. Although the illustrated embodiment shows that a central server computer system 105 performs the allocation and management, in other examples these functions may be performed by a virtual server, resident in whole or in part on one of the client devices 120, or distributed among client devices 120. A client device 120 may be a personal computer, laptop, tablet, personal digital assistant (PDA), thin client, mobile device, cellular telephone, medical equipment or device, or any other computing device, and may have wired or wireless connections.
The rules for allocating sessions, monitoring sessions, generating trending rules, and applying trending rules may be stored locally by the central server computer system 105, or may be stored (in whole or in part) at data store 110. Data store 110 may be a single database, or may be made up of any number of separate and distinct databases. The data store 110 may include one, or more, relational databases or components of relational databases (e.g., tables), object databases, or components of object databases, spreadsheets, text files, internal software lists, or any other type of data structure suitable for storing data. Thus, it should be appreciated that a data store 110 may each be multiple data storages (of the same or different type), or may share a common data storage with other data stores. Although in some embodiments the data store 110 may be distinct from a central server computer system 105, in other embodiments it may be integrated therein to varying degrees.
In some examples, a central server computer system 105 monitors user sessions (e.g., via direct monitoring or via reports from client devices 120). To initiate a session, a user may log on to a client device 120 (e.g., with a user name and/or password, a key card, key fob, biometric sign-in, etc.), and the client device 120 may transmit this information to the central server computer system 105. The central server computer system 105 may direct a session to be started. When a user logs out, the session may be maintained (e.g., for a system specified time period, a user-specified time period, a user specific time period, or indefinitely). Subsequently, the user may log on to a client device 120 (the same, or different client device, from the previous log on), and the client device 120 may query the central server computer system 105 about the user and retrieve information about the session, and the session may then be served.
The central server computer system 105 may monitor the session, and evaluate the opening, closing, and use of applications and other programs as events and movement between client devices 120 occur. By way of example, any or all of the following actions may be monitored (e.g., for an application): create, hide, close, minimize, maximize, normalize, reorder, draw, paint, line, text, color, fill, clear, move, keyboard input, direct i/o, delete, open, execute, and/or kill. The central server computer system 105 may monitor and categorize monitored user actions according to user profile properties, session profile properties, location profile properties, and/or device profile properties.
User profile properties include individual users and/or types of users. Session profile properties include types of sessions and/or applications opened, closed, and/or used during the session. Device profile properties include client devices and/or types of client devices. Location profile properties include specific locations, types of locations, and/or transitions between certain locations. The central server computer system 105 may identify certain correlations between past and future actions according to user profile properties, session profile properties, device profile properties, and/or location profile properties.
Events monitored by central server computer system 105 may include workflow information and/or other information related to the user sessions. For example, information related to tasks or task status of other users, data input to the system, availability of products, and/or other information may be evaluated by the central server computer system 105. For example, when a user logs in to a client device 120 where the user may typically perform one of several tasks, the availability of information related to one of the tasks may indicate that the user session should be adapted to evaluate the information or perform the task related to the available information.
Future events may be anticipated or predicted based on an association between changes in user interaction state of users relative to the system, other information, and various trending actions that are correlated with the user interaction state changes and/or system information. A user interaction state is defined by a set of properties that indicate how and where the user is interacting with the virtual computing environment. That is, the user interaction state for a particular user is defined by the user profile properties, session profile properties, device profile properties, and/or location profile properties associated with the particular user. System information includes information related to actions that the user may perform in a given workflow.
Changes in user interaction state and/or updates to system information may be associated with trending actions that modify a session to adapt the session to the anticipated or predicted use of the session based on the change in user interaction state. Rules may be generated based on these associations. For example, the rules may specify that when particular types of users do certain things (e.g., moving between locations, moving between types of computers, using certain applications or programs, etc.), or particular types of system information have been updated (e.g., product or data availability, etc.), follow-on actions shall be initiated. The rules may include triggering events that indicate a change in user interaction state and/or system information updates, and resultant or trending actions (e.g., create, hide, close, minimize, maximize, normalize, reorder, draw, paint, line, text, color, fill, clear, move, keyboard input, direct i/o, delete, open, execute, query, and/or kill). Changes to user interaction state include changes to user profile properties, session profile properties, device profile properties, and/or location profile properties. System information updates include particular information or updates to information that may be relevant based on the change in user interaction state. The central server computer system 105 may store these rules in data store 110.
The central server computer system 105 may monitor individual sessions of the virtual computing environment, and detect changes to user interaction states. A change in user interaction state identified as a triggering event associated with a trending rule causes the system to apply the trending rule to a user session. The central server computer system 105 may call up the resultant or trending action based on the trending rule, and either modify the session or transmit modification information accordingly. Using this trending information, workflow can be anticipated and sessions can be adapted proactively.
The components of the system 100 may be directly connected, or may be connected via a network 115 which may be any combination of the following: the Internet, an IP network, an intranet, a wide-area network (“WAN”), a local-area network (“LAN”), a virtual private network, the Public Switched Telephone Network (“PSTN”), or any other type of network supporting data communication between devices described herein, in different embodiments. A network may include both wired and wireless connections, including optical links. Many other examples are possible and apparent to those skilled in the art in light of this disclosure. In the discussion herein, a network may or may not be noted specifically. If no specific means of connection is noted, it may be assumed that the link, communication, or other connection between devices may be via a network.
In the example illustrated in
Assume that a user logs on at a client device 120 (e.g., with a user name, password, key card, key fob, and/or biometric sign-in, etc.), and that the client device 120 sends a query to the central server computer system 105-a. The central server computer system 105-a may perform authentication procedures to authenticate the user logging on, and initiate a session for the user or activate KVM functionality for a currently active session. That is, the central server computer system 105-a serves the session to the client device 120 such that the user interacts with the session through the KVM functionality of the client device 120.
The monitoring module 205 may monitor workflow from one or more user sessions (e.g., via direct monitoring or via reports from client devices 120). The monitoring module 205 may monitor some or all user sessions of the virtual computing environment over a period of time. By way of example, any or all of the following actions with respect to an application, process, folder, file, peripheral device, or user interface of a session may be monitored: create, hide, close, minimize, maximize, normalize, reorder, draw, paint, line, text, color, fill, clear, move, keyboard input, direct i/o, delete, open, execute, query, and/or kill. The monitoring module 205 may associate monitored actions with a component to which the action is directed (e.g., an application or process of the session). The monitoring module 205 may monitor individual users, types of users, sessions, types of sessions, applications, types of applications, computers, types of computers, locations, types of locations, and transitions between certain locations.
Trending engine 210 may receive data from the monitoring, and identify certain correlations between past and future actions. Trending engine 210 may search for correlations between user interaction state changes and associated user workflow actions. That is, trending engine 210 identifies changes in user interaction state that tend to be associated with a subsequent user action. For example, certain users or types of users may consistently use various types of client devices according to a workflow. Movement between specific client devices or to particular client devices may indicate a particular use or part of the workflow. For example, trending engine 210 may determine that when a certain type of user logs off a first client device and subsequently logs on to a second client device, the user is likely to open and use a particular application in a particular manner. Trending engine 210 may anticipate or predict one or more resultant or trending actions based on an association between changes in user interaction states and the predicted or anticipated actions in the workflow.
Trending engine 210 may also receive other system information or workflow information. Workflow information may be user data or other information that is related to user workflow. For example, workflow information may be information related to various tasks in a workflow such as product availability or location, completion or status of workflow tasks by other users, information input by other users, and the like. Workflow information may be stored on central server computer system 105-a or may be received from a source external to central server computer system 105-a.
The trending engine 210 may apply time weighting to information received from monitoring module 205 and/or workflow information. That is, the trending engine 210 may weight user actions in recent sessions more heavily than user actions in earlier or older sessions. The trending engine 210 may also weight system information received more recently and/or that has been updated since a predetermined time (e.g., when the user last interacted with the information, etc.) more heavily than older information or older user session activity. Time weighting of information may provide a more accurate prediction of desired trending actions and provides the user with the most relevant information at stages of the workflow. Additionally, when a user or certain types of users change workflow, time weighting of monitored sessions may allow the system to adapt more quickly to the modified workflow.
Rules generation module 215 may generate rules based on these associations. For example, the rules may associate user interaction state changes and/or information updates with follow-on actions. For example, the rules may specify that when particular types of users do certain things (e.g., moving between locations, moving between types of computers, using certain applications or programs, etc.) at certain times of day or week, follow-on actions shall be initiated. The rules may also specify that when particular types of information are available, an action relevant to that information is initiated. The rules may include triggering events that indicate a change in user interaction state and/or an update to workflow information, and trending or resultant actions associated with the triggering event. That is, a triggering event includes one or more actions by a user that indicate that the user has changed how or where the user is interacting with the system and/or one or more updates to information relevant to the users workflow. Triggering events may be defined by changes in user profile properties, session profile properties, device profile properties, and/or location profile properties. For example, a triggering event for a rule generated by rules generation module 215 may be defined by a certain type of user logging off a first client device 120 and subsequently logging on to a second client device 120. The rule may associate the triggering event with a trending action, for example that a first application running in an active user session for the user should be closed and a second application should be launched within the session. Rules generation module 215 may store these rules in data store 110-a.
In the example illustrated in
As described above, monitoring module 205 monitors workflow from one or more user sessions of the virtual computing environment. The monitoring module 205 provides information related to the user interaction state of users of the system to rule detection module 220.
Rule detection module 305 receives the information related to user interaction state changes of users of the system from monitoring module 205 and/or workflow information, and detects triggering events in the information received from monitoring module 205 and workflow information. Rule detection module 305 detects when a triggering event occurs (e.g., a certain type of user using application A in region Y on machine type 2 moves to region Z and logs on to machine type 1). Rule detection module 305 may access the resultant action from rules data store 110-a, and notify rule application module 310 of the triggering event and resultant or trending action. Rule detection module 305 may access trending actions for trending rules according to a rule priority. That is, if multiple triggering events occur at the same time (e.g., as a result of change in user interaction state), rule detection module may select the trending action according to rule priority. Rule priority may be defined according to time-based criteria, task status criteria, task importance criteria, and/or other rule priority criteria.
Rule application module 310 may either modify the session or transmit modification information accordingly. For example, rule application module 310 may transmit trending action information to the session and/or an application within the session, causing the session state to be updated by the trending action information. Trending action information may include one or more of the following actions: create, hide, close, minimize, maximize, normalize, reorder, draw, paint, line, text, color, fill, clear, move, keyboard input, direct i/o, delete, open, execute, query, and/or kill. This may be done in an automated fashion, anticipating user action in a proactive manner, which may reduce wait times for applications and/or information to be loaded within the session and/or the number of user actions (e.g., “clicks,” etc.) necessary for the user during particular stages of the workflow.
The monitoring module 205-c may monitor user sessions. Session monitoring sub-module 505 may monitor sessions and session types; user monitoring sub-module 510 may monitor specific users; user type monitoring sub-module 515 may monitor types of users; application monitoring sub-module 520 may monitor use of applications and other programs, computer monitoring sub-module 525 may monitor computers and computer types; and location monitoring sub-module 530 may monitor locations, types of locations, and movement between locations. Trending engine 210-b may receive data from the monitoring, and identify certain correlations between past events and future user actions. Trending engine 210-b may search for correlations between user interaction state changes and trending actions. Trending engine may search for correlations in user interaction state changes based on types of users, their use of different computers and applications, and how movement between specific computers or to a particular computer results in consistent workflow changes.
Rules generation module 215-b may generate rules based on these associations. For example, the rules may specify that when particular types of users perform an action X, follow-on action Y shall be initiated. The rule may include triggering events (defined by user type, application/computer type, location, location transition, or session type), and resultant actions. Rules generation module 215-b may store these rules in data store 110-d.
Turning next to
Referring first to
In system 600, user 2 was previously logged in to client device 120-a-n, and therefore also had a session 605-b running, with KVM functionality on client device 120-a-n, but has logged out, and thus the KVM functions are deactivated. Session 605-b may be maintained on central server computer system 105-e, although it is not presently served to a client device 120.
The user 1 may interact with the session 605-a while logged in to client device 120-a-1. For example, the user may open or close applications, modify the desktop appearance, enter information to various applications, and/or retrieve information using applications and/or other components of session 605-a, among other interactions. Modifications and actions performed by user 1 in session 605-a result in a current session state for user 1. For example, user 1 may open application A 645-a within session 605-a while logged in to client device 120-a-1.
As described above, a user interaction state for user 1 in
After interacting with session 605-a using client device 120-a-1 for a period of time, user 1 logs off of client device 120-a-1. Central server computer system 105-e may maintain session 605-a after user 1 logs off of client device 120-a-1. That is, the current session state of session 605-a may be maintained by central server computer system 105-b while user 1 is logged out of system 600 such that the session 605-a is ready to be served to the same or another client device 120 when user 1 logs back in to the system 600. Central server computer system 105-e also stores information related to the last user interaction state of user 1. In this example, the central server computer system 105-e maintains the information that user 1 has logged off of client device 120-a-1.
Referring next to
Central server computer system 105-e stores trending rules 610 that associate triggering events with trending actions based on changes in user interaction state with system 600. Trending rules 610 may be generated by trending engine 210 and stored in a rules data store (e.g., data store 110 of
In the example, the movement between client devices 120-a-1 and 120-a-4 for the applicable type of user is a triggering event. That is, user 1 may be associated with a particular user type (e.g., user type M, etc.), and the movement of a user of that particular user type from a client device 120-a-1 to client device 120-a-4 may be a triggering event. As indicated in
The central server computer system 105-e calls up rule 612-a and identifies certain resultant or trending actions associated with the triggering event. As described above, the trending actions may modify the current state of the session 605-a. For example, certain applications that were running in session 605-a when the user was at client device 120-a-1 may be shut down or hidden, while new applications may be opened. In the example shown in
As described above, user 2 also has a session 605-b running. In
In this example, the rule 612-c may be generated by central server computer system 105-e by identifying trends associated with user sessions and/or data or information that is relevant to the user sessions. That is, central server computer system 105-e may identify a particular stage in the workflow associated with the log in of user 2 to client device 120-a-2, and generate rule 612-c based on the relevance of updated data associated with that stage in the workflow. For example, in
Turning next to
Referring first to
The user 3 may interact with the session 705-a while logged in to client device 120-a-5 in location region X 750. For example, the user may open or close applications, modify the desktop appearance, enter information to various applications, and/or retrieve information using applications and/or other components of session 705-a, among other interactions. Modifications and actions performed by user 3 in session 705-a result in a current session state of session 705-a. In the example illustrated in
Referring next to
Central server computer system 105-f receives information about the movement of users and client devices 120. For example, client device 120-a-5 may track its location using a location sensing device (e.g., GPS, etc.) and relay its location to central server computer system 105-f. Based on the movement of a client device 120 from a first location to a second location, central server computer system 105-f may detect a triggering event based on the change in user interaction state. For example, when user 3 moves client device 120-a-5 from location region X 750 to location region Z 754 with application D open, rule 612-b may be triggered. The central server computer system 105-f calls up rule 612-b and identifies certain resultant or trending actions associated with the triggering event according to the rule. As described above, the trending actions of rule 612-b may modify the current state of the session 705-c. For example, the trending actions may modify the session 705-c such that it is set up for use in location region Z 754. In the example shown in
Referring next to
At block 805 of method 800, workflow for series of sessions is monitored. At block 810, trends in use of applications and/or processes within each session are identified. That is, correlations between changes in user interaction state of users to the system and subsequent user actions are identified. At block 815, rules for triggering events and resultant actions within a session are generated, based on identified trends. At block 820, a rule triggering event in a session is detected. At block 825, the session is controlled to initiate the action based on the detected event.
Referring next to
At blocks 905-a through 905-e, sessions, users, user types, machines, applications, and locations are monitored. At block 910, trends in use of applications and/or processes are identified for users/types of users during a session, the trends based on a change in location. At block 915, rules for actions are generated within a session based on identified trends regarding a change in location. At block 920, a rule triggering event in a session is detected. At block 925, a session is controlled to initiate action based on the detected event.
Referring next to
At block 1010 of method 1000, workflow is monitored for one or more user sessions of the virtual computing environment. At block 1015, a triggering event is detected that indicates a change in user interaction state of a user of a virtual computing environment. The triggering event may indicate a change in user interaction state related to one or more user profile properties, session profile properties, device properties, and/or location properties. In certain embodiments, a workflow event is received at block 1035 that indicates a change in workflow information and detection of the triggering event may also be based on the received workflow event.
At block 1020 of method 1000, a trending action is identified that is associated with the triggering event according to a trending rule. The trending rule is based on a correlation between the triggering event and the trending action is previous user sessions. At block 1025, the trending action is applied to a user session and modifies the user session. In embodiments, the user session is initiated at block 1040 in method 1000, The user session may be initiated at block 1040 in response to a log-in of the user to a client device of the virtual computing environment. For example, the user session may be initiated if no user session is currently active for the user when the user logs in to the system.
Referring next to
At block 1110 of method 1100, workflow is monitored for one or more user sessions of the virtual computing environment. At block 1115, a correlation is identified between a first user action and a second user action in the monitored workflow. For example, the correlation may indicate that specific users or users of a particular type have a high likelihood of performing the second user action subsequently to the first user action. Identifying the correlation may take into account time-weighting of actions in the monitored workflow at block 1140. At block 1120, a trending rule is generated that associates a triggering event corresponding to the first user action with a trending action that corresponds to the second user action.
The method may further include proactively adapting a user session according to blocks 1125, 1130, and 1135 of the method 1100. For example, the triggering event may be detected at block 1125. The associated trending action is determined at block 1130 according to the trending rule. At block 1135, the trending action is applied to the user session. The user session is modified by the trending action to be proactively adapted for the predicted workflow of the user.
The functionality of the central server computer system 105 of
A device structure 1200 that may be used for one or more components of central server computer system 105 of
The structure 1200 may also include additional software elements, shown as being currently located within working memory 1230, including an operating system 1235 and other code 1240, such as programs or applications designed to implement methods of the invention. It will be apparent to those skilled in the art that substantial variations may be used in accordance with specific requirements. For example, customized hardware might also be used, or particular elements might be implemented in hardware, software (including portable software, such as applets), or both.
It should be noted that the methods, systems, and devices discussed above are intended merely to be examples. It must be stressed that various embodiments may omit, substitute, or add various procedures or components as appropriate. For instance, it should be appreciated that, in alternative embodiments, the methods may be performed in an order different from that described, and that various steps may be added, omitted, or combined. Also, features described with respect to certain embodiments may be combined in various other embodiments. Different aspects and elements of the embodiments may be combined in a similar manner. Also, it should be emphasized that technology evolves and, thus, many of the elements are examples and should not be interpreted to limit the scope of the invention.
Specific details are given in the description to provide a thorough understanding of the embodiments. However, it will be understood by one of ordinary skill in the art that the embodiments may be practiced without these specific details. For example, well-known circuits, processes, algorithms, structures, and techniques have been shown without unnecessary detail in order to avoid obscuring the embodiments.
Also, it is noted that the embodiments may be described as a process which is depicted as a flow diagram or block diagram. Although each may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be rearranged. A process may have additional steps not included in the figure.
Moreover, as disclosed herein, the term “memory” or “memory unit” may represent one or more devices for storing data, including read-only memory (ROM), random access memory (RAM), magnetic RAM, core memory, magnetic disk storage mediums, optical storage mediums, flash memory devices, or other computer-readable mediums for storing information. The term “computer-readable medium” includes, but is not limited to, portable or fixed storage devices, optical storage devices, wireless channels, a sim card, other smart cards, and various other mediums capable of storing, containing, or carrying instructions or data.
Furthermore, embodiments may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware, or microcode, the program code or code segments to perform the necessary tasks may be stored in a computer-readable medium such as a storage medium. Processors may perform the necessary tasks.
A group of items linked with the conjunction “and” should not be read as requiring that each and every one of those items be present in the grouping, but rather should be read as “and/or” unless expressly stated otherwise. Similarly, a group of items linked with the conjunction “or” should not be read as requiring mutual exclusivity among that group, but rather should also be read as “and/or” unless expressly stated otherwise.
Having described several embodiments, it will be recognized by those of skill in the art that various modifications, alternative constructions, and equivalents may be used without departing from the spirit of the invention. For example, the above elements may merely be a component of a larger system, wherein other rules may take precedence over or otherwise modify the application of the invention. Also, a number of steps may be undertaken before, during, or after the above elements are considered. Accordingly, the above description should not be taken as limiting the scope of the invention.
The present application claims the benefit of priority to U.S. Provisional Patent Application No. 61/440,719, filed Feb. 8, 2011, entitled “TRENDING ENGINE FOR VIRTUAL COMPUTING ENVIRONMENT,” which is incorporated by reference in its entirety for all purposes.
Number | Date | Country | |
---|---|---|---|
61440719 | Feb 2011 | US |