Flow monitoring and control during thermal migration
By monitoring the migration status of the virtual machine and notifying relevant nodes, and adjusting the timeout parameters, the problem of client misjudging the connection inactive during hot migration is solved, and the network recovery speed, availability and performance is improved.
Patent Information
- Application Number
- CN202411444695.2
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2024-04-03
- Filing Date
- 2024-10-16
- Publication Date
- 2025-04-18
AI Technical Summary
During the hot migration of virtual machines (VMs), clients may record timeout events because they cannot receive a response, resulting in incorrectly determining that the connection is inactive, affecting network recovery, availability, and performance.
By monitoring the migration status of the VM and actively or passively notifying the relevant nodes, the timeout parameters are adjusted to avoid misjudging the connection inactive. Specific methods include sending status messages before and after migration, adjusting the timeout timer and threshold to ensure that the connection is maintained during migration.
Effectively reduce timeout events caused by thermal migration, reduce the risk of misjudgment of inactive connections, and thus improve the recovery speed, availability and performance of the network.
Smart Images

Figure CN119854353A_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application claims priority to and the benefit of U.S. Provisional Patent Application No. 63 / 590,635, filed on October 16, 2023, the entire contents of which are incorporated herein by reference. Technical Field
[0003] At least one embodiment relates to traffic monitoring and control during application migration to notify relevant nodes of potential timeout events. Background Art
[0004] A virtual machine (VM) can be migrated between different underlying physical components (e.g., servers). During a live migration event, a client or application associated with the VM can maintain its connection to the VM and continue to operate the associated application. Live migration can include moving VM memory, connections, and storage from one underlying hardware component to another. However, during the actual move between underlying components, downtime for the VM and associated applications still occurs, although the downtime may be short (e.g., about one second), and the VM may be frozen or unresponsive during this time. When a VM is frozen or unresponsive, if a connected client attempts to transmit traffic to the VM, such as to monitor and verify the connection, the client may not receive a response, which may cause the client to log a timeout event. Excessive timeout events may cause the client to determine that the connection is no longer active, which may be a false determination if the timeout is due to the timing of the traffic during the live migration. Increasing the number of timeout values or the acceptable number of retries may cause delays in accurately detecting inactive connections, thereby compromising network recovery, availability, and performance. BRIEF DESCRIPTION OF THE DRAWINGS
[0005] Various embodiments according to the present disclosure will be described with reference to the accompanying drawings, in which:
[0006] Figure 1 An example environment including a migration manager for hot migration operations according to at least one embodiment is shown;
[0007] Figure 2A An example call graph for performing a liveness check for a reliable connection is shown according to at least one embodiment;
[0008] Figure 2B An example process for performing a liveness check for a reliable connection in accordance with at least one embodiment is shown;
[0009] Figure 3An example environment for notifying relevant nodes during a hot migration event according to at least one embodiment is shown;
[0010] Figure 4A An example process for providing notifications to relevant nodes during a hot migration event is shown in accordance with at least one embodiment;
[0011] Figure 4B An example process for providing notifications to relevant nodes during a hot migration event is shown in accordance with at least one embodiment;
[0012] Figure 4C An example process for providing notifications to relevant nodes during a hot migration event is shown in accordance with at least one embodiment;
[0013] Figure 5A An example process for providing notifications to relevant nodes during a hot migration event in accordance with at least one embodiment is shown;
[0014] Figure 5B An example process for providing notifications to relevant nodes during a hot migration event in accordance with at least one embodiment is shown;
[0015] Figure 5C An example process for adjusting one or more communication parameters in response to a hot migration event in accordance with at least one embodiment is shown;
[0016] Figure 6 Components of a distributed system that may be used to update or perform inference using a machine learning model according to at least one embodiment are shown;
[0017] Figure 7 An example data center system is shown in accordance with at least one embodiment;
[0018] Figure 8 A computer system according to at least one embodiment is shown;
[0019] Fig. 9 A computer system according to at least one embodiment is shown;
[0020] Fig.10 illustrates at least a portion of a graphics processor according to one or more embodiments; and
[0021] Fig.11 At least a portion of a graphics processor is shown in accordance with one or more embodiments. DETAILED DESCRIPTION
[0022] In the following description, various embodiments will be described. For the purpose of explanation, specific configurations and details are set forth to provide a thorough understanding of the embodiments. However, those skilled in the art will also appreciate that the embodiments may be implemented without the specific details. In addition, well-known features may be omitted or simplified to avoid obscuring the described embodiments.
[0023] The systems and methods described herein may be used without limitation by non-autonomous vehicles or machines, semi-autonomous vehicles or machines (e.g., in in-cabin infotainment or digital or driver virtual assistant applications), autonomous vehicles or machines, manned and unmanned robots or robotic platforms, warehouse vehicles, off-road vehicles, vehicles coupled to one or more trailers, flying boats, boats, space shuttles, emergency response vehicles, motorcycles, electric or motorized bicycles, airplanes, construction vehicles, trains, underwater vehicles, remotely controlled vehicles (e.g., drones), and / or other vehicle types. In addition, the systems and methods described herein may be used for a variety of purposes, such as, but not limited to, machine control, machine motion, machine driving, synthetic data generation, model training or updating, perception, augmented reality, virtual reality, mixed reality, robotics, safety and surveillance, simulation and digital twins, autonomous or semi-autonomous machine applications, deep learning, environmental simulation, object or participant simulation and / or digital twins, data center processing, conversational artificial intelligence (AI), generative artificial intelligence with a large language model (LLM), light transport simulation (e.g., ray tracing, path tracing, etc.), collaborative content creation of 3D assets, cloud computing, and / or any other suitable application.
[0024] The disclosed embodiments may be included in a variety of different systems, such as automotive systems (e.g., control systems for autonomous or semi-autonomous machines, perception systems for autonomous or semi-autonomous machines), systems implemented using robots, aviation systems, medical systems, boating systems, smart area monitoring systems, systems for performing deep learning operations, systems for performing simulation operations, systems for performing digital twin operations, systems implemented using edge devices, systems including one or more virtual machines (VMs), systems for performing synthetic data generation operations, systems implemented at least in part in a data center, systems for performing conversational AI operations, systems for performing generative AI operations using LLMs, systems for performing light transport simulations, systems for performing collaborative content creation of 3D assets, systems implemented at least in part using cloud computing resources, and / or other types of systems.
[0025] Methods according to various embodiments may be used to maintain a connection during a hot migration of a VM by adjusting a timeout parameter in response to a message associated with the VM state. During a hot migration, a VM may be physically moved from one server to another, during which time the VM may be unavailable. If a node (e.g., a client, a sender, a source, etc.) attempts to send a message during this time, an appropriate response (e.g., an acknowledgment, a negative acknowledgment, etc.) may not be received, and a timeout may be registered. If the timeout is long enough, the link may be considered "dead" or inactive even if the VM is available after the migration is complete. Embodiments are directed to active and / or passive methods to notify nodes that a particular VM is undergoing hot migration so that the node can adjust its timeout parameters accordingly. For active methods, the VM state during hot migration can be provided to nodes that are known to send traffic to the VM (e.g., from a maintained table, based on recent traffic history, etc.) or can be broadcast to all nodes in the group. For passive methods, an entity can receive all messages directed to a virtual machine that is offline due to hot migration, and then respond with a message to notify the sender of the state of the virtual machine in order to adjust the timeout parameter. The active or passive methods may be selected based on various network parameters, and / or may be used together, as well as various other options. In this way, the likelihood of identifying a link as "dead" due to hot migration may be reduced.
[0026] Various embodiments are directed to maintaining network connectivity during downtime (e.g., downtime caused by hot migration) by identifying the current state of a VM undergoing hot migration and providing state information to one or more nodes or clients associated with the VM. Thus, the systems and methods can reduce the likelihood of timeout events that may result in an erroneous determination that a connection is inactive by providing state information indicating the VM during hot migration. As previously described, hot migration can maintain the connectivity and availability of a VM during a move to different underlying hardware (e.g., a server). However, hot migration has downtime when the VM moves to the new hardware, and nodes sending traffic at the time may record timeouts due to not receiving confirmation messages about the status or "liveliness" of the connection. Current mitigation strategies can include establishing longer reply time periods and / or increasing the threshold number of timeouts or retries before making a determination of connection liveness, among other options. These strategies are insufficient for modern data centers because delays in identifying inactive connections (e.g., dead servers) can result in reduced network recovery, availability, and performance. Similarly, current strategies for maintaining parameters can also cause problems regardless of whether a VM is undergoing hot migration. Since modern data centers typically keep time periods short and / or try to minimize retry or timeout thresholds, maintaining existing values during hot migration may result in false positives and alarms. False positives may result in unnecessary traffic rebalancing and / or cause workflows to stop. Systems and methods overcome these issues by monitoring virtual machine state information and notifying relevant nodes and / or adjusting various timeout values.
[0027] In at least one embodiment, an active notification system may be used to notify nodes associated with a VM before and / or during downtime that the virtual machine is undergoing hot migration and will therefore be unavailable. For example, an entity (e.g., software, hardware, a combination thereof) may know or monitor the VM migration state and may notify relevant peers or nodes of the expected or current downtime corresponding to the unresponsiveness of the connection. Since the relevant peers know the VM migration state, the relevant peers may relax the timeout value and / or ignore the recorded timeout for a particular VM. For example, after receiving a message indicating that the VM migration state is closed, the peer may ignore the timeout from the VM until an update message indicating that the VM migration state is active is received. In addition, or alternatively, the entity may periodically send messages indicating the VM state to the peer and / or may provide estimates of the current VM state and when the VM will return to an active state. One or more embodiments may use a hypervisor to manage and monitor the VM migration state, or may use a repeated VM process to save a table of all initiators (e.g., sender nodes) that send traffic to one or more VMs associated with a server or cluster. Before disabling VM traffic and when stopping other traffic to the VM (e.g., in the final stages of migration), the hypervisor can send a notification to the associated sender node. Upon receiving the message, the sender node can relax the timing constraints of all flows that send traffic to the migrating VM for a period of time. For example, the timing constraints can be relaxed for a set period of time (e.g., X seconds), and if no other messages are received after X seconds, the timing constraints can be returned to their previous values. In another example, the timing constraints can be relaxed until a message is received indicating that the VM has returned to an active state. In another example, the traffic flow can be stopped until a period of time (e.g., X seconds) has passed and / or until a message is received indicating that the VM has returned to an active state. In another example, a threshold number of recorded timeouts can be increased for a period of time (e.g., when the VM is inactive) and then restored back to the original value after the VM returns to an active state. In this way, the sending node can be informed of the downtime before it occurs and adjust the timeout constraints accordingly.
[0028] In at least one embodiment, a reactive notification system can be used to notify a node associated with a VM of the VM state in response to receiving traffic during downtime. As described herein with respect to an active system, an entity (e.g., software, hardware, a combination thereof) can know or monitor the VM migration state, and can notify an associated peer or node about the downtime corresponding to the connection being unresponsive in response to receiving traffic from an initiator (e.g., a sender node). The entity can receive all packets for the VM during the downtime (e.g., traffic can be redirected during the downtime), and then reply to the sender node with a timing relaxation packet according to the network protocol and / or the system agreement (e.g., protocol extension). By receiving the message, the sender node can know the VM migration state and adjust the timeout value accordingly. For example, the message can provide instructions on how to adjust the timeout packet, or preset instructions can be used, and so on. Therefore, a passive method enables an entity such as a hypervisor to capture packets sent to a VM that is disabled due to hot migration, and reply with a flow-specific relaxation request, which the sender can use to modify the timing constraints. Thereafter, the sender node may maintain the relaxed timing constraints until a second message regarding the VM status is received, and / or for a period of time, among other options. For example, the sender may wait until a second message regarding the VM status is received before sending other traffic. As another example, the sender may wait for a specified period of time before sending another message. As a further example, the sender may adjust one or more timeout values, such as a period of time to wait for a response and / or a timeout threshold number.
[0029] Figure 1 An environment 100 that can be used with an embodiment of the present disclosure is shown. In this example, a resource provider environment 102 is used to host one or more underlying resources or otherwise provide access to one or more underlying resources (e.g., computing resources, storage resources, etc.). It should be understood that various other components may also be included, or hosted separately in different environments, and for the sake of clarity, these components are not shown in the following discussion. In addition, the various components are shown in an exemplary manner and are not intended to limit the scope of the present disclosure. The resources described with respect to the resource provider environment 102 may include physical resources and virtual resources, such as underlying hardware and software executed on the underlying hardware. In addition, the various resources may be illustrated as separate blocks or components, but different embodiments may group different blocks or components or otherwise share functionality.
[0030] In this example, a client 104 (e.g., a node, a user, a user device, a client device, etc.) can send and / or receive traffic to / from a resource provider environment 102 via one or more networks 106. Clients 104 and / or client devices can be used interchangeably because client devices facilitate interaction with a resource provider environment 102. In addition, a client 104 can represent one or more nodes, which can include multiple devices that execute one or more workflows. A client device can include any suitable electronic device that is operable to send and receive requests, messages, or other such information via a suitable network, and to communicate information back to a user of the device and / or to communicate information that can be confirmed or otherwise analyzed by software executed on the device. Examples of such client devices include personal computers, tablet computers, smartphones, laptops, various edge devices, servers, etc. In addition, although the client device 104 is shown as being located outside of the resource provider environment 102, various embodiments can be directed to a client device 104 that is located within or belongs to the resource provider environment 102, such as one or more servers or computing resources used by the client. Furthermore, the network 106 may include a variety of different networks including, but not limited to, an intranet, the Internet, a cellular network, a local area network (LAN), and other such networks and / or combinations thereof. The network 106 may be a wired or wireless network.
[0031] The resource provider environment 102 can be a "cloud" provider network, which is a pool of network-accessible computing resources (e.g., computing, storage, networking, applications, and services), which can be virtualized or bare metal. These resources can be dynamically provisioned and reconfigured to adapt to variable loads. The cloud provider network can implement various computing resources or services, which may include virtual computing services (referred to as elastic computing services, VM services, computing cloud services, computing engines, or cloud computing services in various implementations), data processing services, data storage services (e.g., cloud disk services, managed disk services, storage area network services, persistent disk services, or block volume services) and / or any other type of network-based services (which may include various other types of storage, processing, analysis, communication, event handling, visualization, and security services not shown). The resources required to support the operation of such services (e.g., computing resources and storage resources) can be configured in an account associated with a cloud provider.
[0032] In this example, the resource manager 108 can receive traffic, which can be requests, data streams, messages, etc. The resource manager 108 can be an interface between the resource provider environment 102 and the client 104, and can include components such as an application programming interface (API), load balancing, data routers, etc. In various embodiments, the traffic can include one or more parts of a workflow associated with the client 104, such as a workflow to perform a computing operation, perform a storage operation, etc. In addition, the traffic can also include messages transmitted between the client 104 and the resource provider environment 102, such as confirmation messages regarding the status or condition of various components of the resource provider environment 102, as described herein.
[0033] In this example, the resource manager 108 may route information to the migration manager 110 and / or one or more servers 112A, 112B. In this example, the servers 112A, 112B include underlying hardware components that may execute one or more software applications, including, in this non-limiting example, virtualized applications referred to as VMs 114. As described herein, for clarity, specific VMs, servers, and other components may be designated by letters (e.g., VMA 114A, VM B 114B, etc.). Additionally, various embodiments may illustrate the migration manager 110 as a separate component, but it should be understood that one or more portions of the migration manager 110 may be executed on the servers 112A, 112B and / or incorporated into software executed on the servers 112A, 112B, such as a hypervisor executed on the servers 112A, 112B to create and monitor the VMs 114.
[0034] Various embodiments may also include an internal network 116 for communication and / or data transmission between different servers 112A, 112B and various other components, which may be a wired or wireless network as described herein. The internal network 116 may be used to facilitate reliable connections between various servers 112A, 112B and / or with the client 104. In one or more embodiments, the internal network 116 may be a public network of the network 106 or a network shared with the network 106, and therefore, the description as a separate network is provided only by way of example. In addition, it should be understood that various embodiments may also be used to transmit information between different physical locations associated with the resource provider environment 102. As previously described, the resource provider environment 102 may include one or more locations, which include various hardware components. One or more of these components may be located within a data center 118, which may be configured to communicate with one or more additional data centers 120. The representations of servers 112A, 112B and / or data centers 118, 120 are provided by way of example, because different VMs in different data centers may be used to communicate with each other and / or execute one or more workloads. Additionally, traffic can be routed according to various policies and / or tuned to different preferences, such as low latency, high throughput, certain types of data storage, etc.
[0035] In operation, it may be beneficial to migrate or move VM 114 between different servers (e.g., to different underlying hardware). Migration of VM 114 may enable updates or maintenance of the underlying hardware and / or may be used to modify the operational capabilities of VM 114. For example, a VM may be moved to a server with higher performance underlying hardware, which may enable different or improved operations for the VM. In another example, a VM may be moved to a data center that is physically closer to a traffic source (e.g., a source node) to reduce latency. As another example, a VM may be migrated in response to maintenance of underlying resources or in response to an interruption (e.g., a power outage, a natural disaster, etc.) to maintain operability for end users. Migration of a VM may be performed as a "hot migration," in which a VM is moved from one physical machine (e.g., a server) to another, even while its applications continue to execute during the migration. A hot migration event may include steps such as memory state migration, CPU state migration, and virtual disk state migration. A migration manager may be used to transfer data from the VM's memory to a target machine, create a CPU state (e.g., the state of the CPU, memory, and storage) on the target machine, and then suspend the VM for replication and initialization on the target machine. This process can minimize downtime, but as described herein, the suspension of the VM occurs prior to initialization at the target machine. During the downtime period (e.g., while the VM is suspended), if one or more clients or other resources send traffic (e.g., messages, data streams, etc.) to the VM, the sender may not receive an acknowledgment of receipt of the information and log a timeout event. After enough timeout events are logged, the sender may determine that the link or connection to the VM has been closed, but this may not be true, and resources may be wasted trying to balance or otherwise redirect traffic from the sender. The systems and methods of the present disclosure can be used during VM migration (e.g., hot migration) to actively and / or passively provide VM state information to related resources to reduce the possibility of timeout events that may result in incorrect determination of connection status.
[0036] Figure 2AAn example call graph 200 that may be used with embodiments of the present disclosure is shown. In this example, a client 104 (e.g., an initiator, sender, etc.) may transmit traffic 202 to a VM A 114A (e.g., a recipient, a target, etc.). It should be understood that the client 104 may transmit information through one or more agents (e.g., different VMs executed on one or more servers 112A, 112B). In addition, while various embodiments may be described with respect to VMs and client devices, it should be understood that servers and / or various other components associated with the VMs (e.g., connection managers) may also be used to determine connection conditions between various different components. In at least one embodiment, the connection between the client 104 and the VM A 114A may be formed by different communication protocols, such as, but not limited to, a remote direct memory access (RDMA) connection, an RDMA over converged Internet (RoCE) connection, a transmission control protocol (TCP) connection, etc. In addition, in at least one embodiment, the RDMA connection may include an RDMA with a reliable connection (RC) and / or a dynamic connection (DC). Certain embodiments may be directed to reliable connections, where a reliable network monitors the "liveliness" of different connections, such as by using acknowledgement (ACK) and negative acknowledgement (NACK) messages. Although these specific network protocols have been identified, it should be understood that a variety of protocols may be used with the systems and methods of the present disclosure, where it is desirable to maintain network connections between different nodes of a connected system (e.g., a cluster) to maintain and / or achieve network recovery, availability, and / or performance.
[0037] In this example, after sending traffic 202 (e.g., a message for verifying a connection between the client 104 and VM A 114A), the client 104 and / or other software executing on a server, hypervisor, server manager, etc. may start a timer 204. The timer 204 may be associated with one or more connection protocols or parameters (e.g., protocols or parameters established by a system administrator) to determine whether a "timeout" event has occurred. The timeout may correspond to a failure to receive a reply from VM A 114A. For example, after receiving the traffic 202, VM A 114A and / or other software executing on a server associated with VM A 114A, a connection manager, a hypervisor, etc. may transmit a reply 206 (e.g., an acknowledgment (ACK) or a negative acknowledgment (NACK)) to indicate whether the transmitted data (e.g., a data packet) was received correctly or was not received correctly. If a reply 206 is received before the timer duration ends (e.g., indicating the end of the block of timer 204), the client 104 (or other system described herein) may determine that the connection is valid and then transmit additional traffic 208 as part of one or more workflows. However, in another example, the client 104 (or other system described herein) may transmit traffic 210 (e.g., another message to verify the connection) to VM A 114A (or other system described herein) and start a second timer 212. If a reply is not received before the second time ends, the client 104 (or other system described herein) may log a timeout event 214. Based on different connection protocols and parameters, a threshold number of timeout events may indicate a dead or inactive connection, which may result in a rebalance, a workflow stop, etc. However, the timeout may be a false timeout because VM A 114A may be undergoing a hot migration event and, therefore, may only be temporarily unavailable while VM A 114A moves to different underlying hardware. The system and method of the present disclosure utilizes traditional network confirmation to address this deficiency, and can actively and / or passively alert the sending node of the migration status of different targets (e.g., VMs) so that the timeout criteria can be dynamically modified, thereby reducing the risk of erroneously determining that the connection is inactive.
[0038] Figure 2BAn example process 220 of connection activity evaluation that can be used with embodiments of the present disclosure is shown. In this example, traffic is transmitted to a receiver node 222. As discussed, traffic can be transmitted from one or more sender nodes (e.g., a server, a VM executed on a server, a client device, etc.) and can include messages or data packets about the status of a connection formed between a sender node and a receiver node. After sending the traffic, the sender node can start a timeout timer 224. The timeout timer can be a countdown period for receiving a reply (e.g., ACK or NACK) from the receiver node. The time period of the timeout timer can vary based on different network parameters and settings, and can be adjusted for a given workload type and / or connection. It can then be determined whether a reply is received before the timeout timer expires 226. If a reply is received, workflow data 228 can be transmitted. If not, a count can be added to a timeout value 230. The timeout value can correspond to the maximum number of timeouts received within a period of time to determine whether the connection is valid. For example, the timeout value can be a set number over a period of time (e.g., X timeouts in Y minutes), a set number for a given workload life (e.g., X timeouts until the workload is processed), and / or any other reasonable parameter. The timeout value can then be compared to a threshold number to determine whether the threshold has been exceeded and / or reached 232. If not, subsequent messages can be transmitted or various other steps specified by network parameters can be performed. However, if the threshold has been exceeded and / or reached, the connection can be considered inactive 234. Inactive connections can cause workflows, traffic rebalancing, etc. to stop, and therefore, unintentional or inaccurate determination of connection inactivity can reduce network reliability, availability, and / or performance. Embodiments of the present disclosure can be used to modify different timeout parameters in the event that a VM is undergoing hot migration to reduce the likelihood of erroneously determining that the connection is inactive.
[0039] Figure 3An example environment 300 for managing timeout determinations that may be used with embodiments of the present disclosure is shown. In this example, a migration manager 110 is shown as monitoring and / or facilitating the migration of VM A 114A from server A 112A to server B 112B via a network 116. As described herein, the network 116 may be an internal or external network, and in various embodiments, may be associated with various communication protocols, such as RoCE. The migration manager 110 may be associated with one or more individual servers 112A, 112B, individual VMs 114, and / or a central management system of a data center, etc. For example, the migration manager 110 may be part of a rack control software system that monitors traffic and migration of each VM associated with a server of a given rack. In another example, the migration manager 110 may be integrated into a hypervisor. As another example, there may be multiple migration managers 110, such as one at a sender server and another at a receiver server.
[0040] The migration manager 110 shown includes a migration engine 302. The migration engine 302 can be used to plan and / or facilitate the migration of a VM from one server to another server (e.g., from one set of underlying hardware to a different set of underlying hardware). The migration engine 302 can be used to perform hot migration, which, as described herein, can be a step-by-step process of transferring a VM to a new location while maintaining the operability of connections and / or applications associated with the VM. Hot migration can occur in multiple steps or operations, which can include at least some overlapping, parallel, and / or partially parallel operations. These steps can include pre-migration or preparation, in which a target host is pre-selected for migration and its associated VM is active on the client side. The migration engine 302 (e.g., a hypervisor) can copy memory pages from a source file to a target file in preparation for migration. Reservation can also be used to reserve containers or other computing resources for the migration VM. By adding this step, the possibility of migrating to a server, node, and / or cluster with insufficient VM capacity can be reduced. Next, a pre-copy process (e.g., iterative pre-copy) can transfer pages from a host to a destination using an iterative push phase and a stop and copy phase. The running OS instance can then be paused on the host server and traffic redirected to the destination. In one or more embodiments, if traffic is routed to the host server while the instance is paused, unintentional timeout counts may be received. The CPU state can be determined and then forwarded to the destination. After confirming the VM transfer, the host server can drop the file and the new destination is now the primary endpoint for traffic to the VM. The VM can be activated at the destination to resume normal operation.
[0041] During the migration process, the state agent 304 can be used to track the state of the migration in various steps. For example, the state agent 304 can be used to determine whether the VM is suspended at the original location. Then, the notification agent 306 can use the state obtained by the state agent 304 to notify the relevant nodes of the state of the VM. In at least one embodiment, the notification agent 306 is active and provides information to the relevant nodes before the migration. In at least one embodiment, the notification agent 306 is passive and provides information to the relevant nodes after and / or during the migration and in response to receiving traffic to the offline VM. Certain embodiments can also combine active and passive processes.
[0042] Information used in the migration process can be obtained from one or more data repositories. For example, the location data repository 308 can be used to track and maintain location information of different VMs relative to various servers, data centers, etc. The location information can include specific hardware components associated with a given VM, the physical location of the hardware components, the functions of the hardware components, and various other information. The migration engine 302 can also use the information in the location data repository 308 to identify a target location for migrating VMs. For example, the location data repository 308 can provide information associated with a group of VMs executing a workload for a given client, determine that performance may be improved if each VM is executed on a server within a common rack, identify an appropriate migration location, and then migrate the VM accordingly.
[0043] The system and method may also include a sender data repository 310 to track different traffic flows between various components. For example, the sender data repository 310 can identify which VMs and / or end users are transmitting traffic to a specific VM and / or server. As described herein, tracking traffic flows can be used to identify various senders to provide active notifications about the migration status of different VMs. The illustrated embodiment also includes a policy data repository 312, which can store different parameters or configurations for establishing connections, maintaining connections, providing migration status notifications, modifying timeout policies, etc. For example, during VM migration, the policy data repository 312 can be used to determine a revised timeout policy for a sender node. The illustrated embodiment also includes a connection data repository 314, which can track the types of connections established between different components and different connection policies. Information from the connection data repository 314 can be used to select a specific policy from the policy data repository 312, and the specific policy can then determine the notification generated and transmitted by the notification agent.
[0044] In this example, node 316 may represent a client and / or client device that is transmitting traffic to one or more servers and / or associated VMs of one or more servers. In this example, node 316 communicates with VM A 114A and may be transmitting traffic (e.g., workload) to be executed using VM A 114A. During operation, VM A 114A may be selected and / or determined to be a migration candidate, for example, based on one or more migration policies. Migration engine 302 may initialize the migration of VM A 114A from server A 112A to server B 112B. However, as described herein, even with hot migration, there may be a time period when VM A 114A is no longer able to respond to traffic from node 316, which may cause node 316 to determine that the connection has failed and may cause the timeout count to increase. The systems and methods of the present disclosure may solve this problem in the following ways, among others: by using migration manager 110 to maintain the migration state of VM A 114A and actively and / or passively provide information about the state back to node 316 so that unintentional timeouts are not recorded.
[0045] In a first example associated with an active notification strategy, the migration manager 110 can track and record the migration state of VM A 114A, for example, using the state agent 304. The state agent 304 can provide the migration state of VM A 114A and / or the upcoming migration state. Based on this information, the notification agent 306 can send a message marked as "1" to the node 316 before and / or when VM A 114A is unavailable due to moving to server B 112B. The message may include migration state information and instructions based on the migration state. For example, the instructions may provide an estimated time period that VM A 114A will be unavailable. During this time, the node 316 can modify the traffic sending mode to avoid sending traffic and / or connection checks during this time period. In another embodiment, the message may include a notification that VM A 114A is unavailable due to migration, and the node 316 may be informed not to send additional traffic until another message is received informing the node 316 that VM A 114A is available. Other embodiments may also provide an indication that VM A 114A is offline and that node 316 should increase its timeout value when checking for connectivity, such as by increasing the time period for receiving a reply and / or by increasing the number of timeouts received until determining that the connectivity has failed. Various embodiments may also combine different messages and techniques, such as providing an estimated time and then providing an update. It should be understood that the messaging techniques and methods may be part of a policy selected from policy data repository 312 and may be specifically selected to reduce network traffic and / or reduce the likelihood of false timeouts.
[0046] In at least one embodiment, the node 316 receives the proactive message based at least in part on information obtained from the sender data repository 310. For example, the sender data repository 310 can identify each node that sends traffic to VM A 114A, and then, once the migration engine 302 identifies VM A 114A as a VM to be migrated, a message can be sent (e.g., at a specified time) to provide information to the node 316 before sending a message that is unlikely to be received due to the migration. As a result, the likelihood that the node 316 will not receive a reply can be reduced, which typically causes the timeout count to increase and may cause the connection to be inadvertently determined to be inactive. In addition, in various embodiments, the system and method enable the node 316 and / or management software associated with the node 316 to dynamically and / or temporarily modify the timeout tracking program. For example, the node 316 can receive the proactive message, temporarily modify the timeout program (e.g., extend the time, increase the threshold, etc.), and then revert to the previous information after receiving the message and / or after a period of time has passed and VM A 114A resumes service after migration to the server 112.
[0047] One or more embodiments may also be directed to a passive approach, where a VM being migrated diverts its traffic to the migration manager 110, and in response to an incoming message, a notification indicating the state of the VM may be sent to the sender. For example, the migration manager 110 may determine the migration state of VM A 114A, for example using the state agent 304, indicating that it is unavailable due to being moved to server B 112B. When VM A 114A is unavailable, incoming messages (e.g., messages for determining connection status, etc.) may be rerouted to the migration engine 302, as shown by the line represented as "2", and then the notification agent 306 may send a message indicating the state of VM A 114A to the node 316, as shown by the line represented as "3". Such a system may reduce network traffic because the migration state message is only transmitted in response to receiving an incoming message to the unavailable VM. In at least one embodiment, the message sent from the notification agent 306 may include information such as the state of VM A 114A, the expected time of unavailability, a command to modify one or more timeout parameters, and / or a combination thereof, as indicated herein.
[0048] Various embodiments may also integrate active and passive procedures into a single operation. For example, an active message may be transmitted before a VM is moved to new underlying hardware, and timing requirements may be relaxed and / or connectivity checks may be delayed. If the delay period elapses, and the VM is still unavailable, a passive procedure may be used to provide updates to the sending node. Thus, the systems and methods may be used to proactively provide instructions and then follow up with additional status updates when necessary, such as if an error occurred during the migration and the process took longer than expected.
[0049] Figure 4A An example process 400 that can be used to provide status information during a hot migration event is shown. It should be understood that for this process and other processes presented herein, there may be additional, fewer or alternative operations that are performed in a similar or alternative order or at least partially in parallel within the scope of various embodiments, unless otherwise explicitly stated. In addition, although this example involves ports, it should be understood that various other components within the scope of various embodiments may also use such a process. In this example, during a hot migration event 402, it is determined that a VM is migrated from a first server to a second server. For example, the VM can be selected to improve the operating performance of the VM, allow the underlying hardware to be maintained, and so on. A time period 404 for the migration can be determined, and a first message 406 can be provided to a node that exchanges traffic with the VM. For example, a node can receive a message that provides a first notification about a first state of the VM, such as a notification that the node VM will be offline for a period of time and / or is currently offline. It can then be determined that the VM is configured to receive traffic, such as after a time period for completing the hot migration 408, and a second message 410 can be transmitted to the node to inform the node of the second state of the VM. In this way, the VM state can be actively provided to the relevant node during the hot migration event.
[0050] Figure 4B An example process 420 that can be used to provide status information during a hot migration event is shown. In this example, a VM is identified as part of a hot migration event 422. For example, a migration manager can determine which VMs are eligible or preferably migrated. During a hot migration event, a VM state can be determined to be offline 424. As described herein, a hot migration event can allow certain continued functions of different VMs, but during the movement between different underlying physical components, there may be a period of unavailability during which no traffic transmitted to the VM is received. In at least one embodiment, it can be determined that traffic is directed to the VM or received at the VM when the VM is offline 426. For example, a related node can transmit a message to verify the connection when the VM is offline. Various embodiments can provide a notification indicating the status of the VM 428 to the related node in response to the traffic. For example, the notification can inform the node that the VM is undergoing hot migration, but will be available within a given time period and / or provide instructions to modify certain timeout parameters. Therefore, the system and method can provide notifications in response to incoming traffic when the VM undergoes hot migration.
[0051] Figure 4CAn example process 430 that can be used to provide status information during a hot migration event is shown. In this example, it is determined that a VM is scheduled for an offline period 432 during hot migration. For example, the time of the hot migration event can be known and / or the offline period can be estimated based on one or more additional steps in the hot migration process. A message 434 indicating the state of the VM during the hot migration event can then be provided to one or more associated nodes. For example, the message can provide a notification of the offline state, an estimate of the duration of the offline state, and / or a combination thereof. In addition, the message can also provide additional instructions to the associated nodes during the hot migration event. In this way, status updates can be provided to the associated nodes, which can prevent the nodes from transmitting information that the VM may not have received during the offline period.
[0052] Figure 5A An example process 500 for proactively providing VM state notifications to one or more associated nodes is shown. In this example, a VM scheduled for a hot migration event is identified 502. The VM may be identified due to a predetermined operation, such as performing maintenance or updates to an underlying hardware system. At least one of an expected future state or a current state of the VM may be determined 504. For example, the systems and methods may estimate when a VM is offline during a hot migration operation. Additionally, in one or more embodiments, the current state of the VM may be determined, such as the state of the VM when it is transferred to different underlying hardware.
[0053] In at least one embodiment, one or more nodes 506 associated with a VM may be identified. An associated node may correspond to one or more nodes that have transmitted traffic to the VM. There may be a time cutoff for identifying an associated node. For example, a node that has not transmitted traffic for more than a threshold time period may not be considered an associated node. In addition, scheduled operations or ongoing operations of the VM may be used to identify associated nodes, such as determining which nodes have current workloads being transmitted to the VM, which nodes have completed workloads, which nodes have scheduled workloads, and the like. It should be understood that various embodiments may optionally broadcast information about node status to all nodes in the associated cluster to reduce the likelihood of sending new traffic to the VM during hot migration.
[0054] Various embodiments may be associated with an active notification system, wherein the VM state is provided to an associated node 508 before or when the state of the VM is determined to be offline. Proactively providing notifications may reduce traffic on the network because nodes may delay or otherwise provide data to different VMs during offline periods. Additionally, or alternatively, proactively providing notifications may enable different nodes to modify one or more timeout parameters associated with verifying the health of a connection. Notifications may include an expected future state or a current state. Providing an expected future state may include a time range or an expected time period in which the VM will be offline, while providing a current state may have a reference to the currently recorded state of the VM.
[0055] The current state of the VM can be determined after a period of time 510, and it can be determined whether the state has changed in the period since the message was sent 512. For example, the message can include state information to inform the associated node that the VM is offline. The VM state can be rechecked after a period of time, such as after an estimated time period provided in the message, after a set time period, and so on. If the state has not changed, the system can wait for a period of time 514 and then recheck. If the state has changed, a message can be sent to the associated node indicating the updated state of the VM 516, which can include informing the associated node that the VM is back online and can receive traffic. In this way, active notifications about the VM state and state updates can be transmitted to the associated node.
[0056] Figure 5B An example process 520 for passively providing VM status notification to one or more associated nodes is shown. In this example, a VM scheduled for a hot migration event is identified 522. The VM can be identified due to a scheduled operation, such as performing maintenance or updates to an underlying hardware system. Traffic directed to the VM can then be received 524. For example, due to the state of the VM associated with the hot migration event, the traffic can be temporarily routed to the migration manager, among other options.
[0057] Various embodiments may be associated with a passive notification system, where the VM state 526 is provided to an associated node in response to receiving traffic when the VM is offline (e.g., due to a hot migration event). Passively providing notifications can reduce traffic on the network compared to active methods because only nodes that need to know the VM state are informed of the VM state. In at least one embodiment, passively providing notifications can enable different nodes to modify one or more timeout parameters associated with verifying the health of the connection. The notification may include an expected future state or a current state. Providing the expected future state may include a time range or an expected time period that the VM will be offline, while providing the current state may have a reference to the currently recorded state of the VM.
[0058] The current state of the VM can be determined after a period of time 528, and it can be determined whether the state has changed in the period since the message was sent 530. For example, the message can include status information informing the associated node that the VM is offline. The VM state can be rechecked after a period of time, such as after an estimated time period provided in the message, after a set time period, and so on. If the state has not changed, the system can wait for a period of time 532 and then recheck. If the state has changed, a message can be sent to the associated node indicating the updated state of the VM 534, which can include informing the associated node that the VM is back online and able to receive traffic. In this way, reactive notifications about the VM state and state updates can be transmitted to the associated node.
[0059] Figure 5C An example process 540 for adjusting one or more communication parameters in response to a target state is shown. In this example, a notification about a VM state is received 542. For example, the notification may be received by a node transmitting traffic to the VM. A response action 544 may be determined based on the notification. The response action may include instructions, such as delaying sending traffic for a period of time, adjusting a timeout parameter, etc. In at least one embodiment, the response action may be based at least in part on the connection type.
[0060] One or more communication parameters 546 of the node may be adjusted based at least in part on the characteristics of the response action. As an example, the node may perform periodic connection checks with the VM. These connection checks may include sending a message, starting a timer, and then waiting to receive a confirmation or negative confirmation response. If a response is received within a threshold time period, the connection may be confirmed within the time period. If a response is not received within the threshold time period, a timeout may be recorded. There may also be a threshold timeout number associated with the communication parameter. If the number of timeouts recorded within a period of time exceeds and / or reaches a timeout threshold, the connection may be considered dead or otherwise inactive. In at least one embodiment, the response action may include instructions for modifying the communication parameters associated with the timeout. For example, the time period between connection checks may be increased or suspended until another set of instructions is received. In another example, a time period for receiving a reply confirmation or negative confirmation may be received. As another example, the timeout threshold number may be increased so that more timeouts may be received before determining that the connection is inactive. Changes to the communication parameters may be temporary (e.g., a period of time associated with the state of the VM), or may be associated with receiving additional subsequent instructions, as well as other options.
[0061] In at least one embodiment, an updated VM state is determined 548. The updated state can be determined by evaluating subsequent notifications that include information about the VM state. Additionally, the state can be assumed by determining that a threshold time period has passed, such as when the original notification predicted a period of inactivity for the VM. Based on the updated state, it can be determined whether to change one or more communication parameters 550. For example, if the state has not changed, it may be desirable to maintain the current parameters and wait for a period of time 552. However, if the state has changed and the VM is now available, it may be desirable to restore one or more communication parameters to their previous values 554. In this way, communication parameters can be dynamically and / or temporarily adjusted based on the VM state during hot migration.
[0062] As described above, aspects of the various methods presented herein can be lightweight enough to be performed in real time on a device such as a client device such as a personal computer or a gaming console. Such processing can be performed for or with respect to content generated on or received by the client device or received from an external source (e.g., streaming data or other content received over at least one network). In some cases, the processing and / or determination of the content can be performed by one of these other devices, systems, or entities and then provided to the client device (or another such recipient) for presentation or other such use.
[0063] As an example, Figure 6An example network configuration 600 is shown that can be used to provide, generate, modify, encode, process and / or transmit image data or other such content. In at least one embodiment, a client device 602 can generate or receive data for a session using components of a control application 604 on the client device 602 and data stored locally on the client device. In at least one embodiment, a content application 624 executing on a server 620 (e.g., a cloud server or edge server) can initiate a session associated with at least one client device 602, can utilize a session manager and user data stored in a user database 636, and can cause a content manager 626 to determine content from an asset repository 634, such as one or more digital assets (e.g., object representations). The content manager 626 can work with an image synthesis module 628 to generate or synthesize new objects, digital assets, or other such content to be provided for presentation by the client device 602. In at least one embodiment, the image synthesis module 628 can use one or more neural networks or machine learning models that can be trained or updated using a training module 632 or system located on or in communication with the server 620. This may include training and / or using a diffusion model 630 to generate content tiles that may be used by a tile synthesis module 628, e.g., to apply a non-repeating texture to an area of an environment to which image or video data is to be presented by a client device 602. At least a portion of the generated content may be transmitted to the client device 602 using an appropriate transmission manager 622 for transmission via download, streaming, or another such transmission channel. An encoder may be used to encode and / or compress at least a portion of these data before transmitting them to the client device 602. In at least one embodiment, a client device 602 receiving such content may provide the content to a corresponding control application 604, which may also or alternatively include a graphical user interface 610, a content manager 612, and an image synthesis or diffusion module 614 for providing, synthesizing, modifying, or using content for presentation (or other purposes) on or by the client device 602. The decoder may also be used to decode data received via the network 640 for presentation via the client device 602, such as images or video content presented via the display 606 and audio (e.g., sounds and music) presented via at least one audio playback device 608 (e.g., speakers or headphones). In at least one embodiment, at least a portion of the content may already be stored on the client device 602, rendered on the client device 602, or accessible to the client device 602, so at least the portion of the content does not need to be transmitted via the network 640, for example, the content may have been previously downloaded or stored locally on a hard disk or optical disk.In at least one embodiment, the content may be transmitted from the server 620 or user database 636 to the client device 602 using a transmission mechanism (e.g., data streaming). In at least one embodiment, at least a portion of the content may be obtained, enhanced, and / or streamed from another source (e.g., a third-party service 660 or another client device 650), which may also include a content application 662 for generating, enhancing, or providing the content. In at least one embodiment, multiple computing devices or multiple processors within one or more computing devices (e.g., which may include a combination of CPUs and GPUs) may be used to perform portions of this functionality.
[0064] In this example, these client devices may include any appropriate computing devices, such as desktop computers, laptops, set-top boxes, streaming devices, game consoles, smartphones, tablet computers, VR headsets, AR goggles, wearable computers, or smart TVs. Each client device may submit a request across at least one wired or wireless network, which may include the Internet, Ethernet, a local area network (LAN), or a cellular network, as well as other such options. In this example, these requests may be submitted to an address associated with a cloud provider, which may operate or control one or more electronic resources in a cloud provider environment, such as a data center or a server farm. In at least one embodiment, the request may be received or processed by at least one edge server located at the edge of the network and outside of at least one security layer associated with the cloud provider environment. In this way, latency can be reduced by enabling client devices to interact with servers that are closer, while also improving the security of resources in the cloud provider environment.
[0065] In at least one embodiment, such a system may be used to perform graphics rendering operations. In other embodiments, such a system may be used for other purposes, such as for providing image or video content to test or verify autonomous machine applications, or for performing deep learning operations. In at least one embodiment, such a system may be implemented using an edge device, or may be combined with one or more virtual machines (VMs). In at least one embodiment, such a system may be implemented at least in part in a data center or at least in part using cloud computing resources.
[0066] Data Center
[0067] Figure 7 An example data center 700 is shown in which at least one embodiment may be used. In at least one embodiment, the data center 700 includes a data center infrastructure layer 710, a framework layer 720, a software layer 730, and an application layer 740.
[0068] In at least one embodiment, Figure 7 As shown, the data center infrastructure layer 710 may include a resource coordinator 712, grouped computing resources 714, and node computing resources ("node CRs") 716(1)-716(N), where "N" represents any positive integer. In at least one embodiment, the node CRs 716(1)-716(N) may include, but are not limited to, any number of central processing units ("CPUs") or other processors (including accelerators, field programmable gate arrays (FPGAs), graphics processors, etc.), memory devices (e.g., dynamic read-only memories), storage devices (e.g., solid-state drives or disk drives), network input / output ("NWI / O") devices, network switches, virtual machines ("VMs"), power modules and cooling modules, etc. In at least one embodiment, one or more of the node CRs 716(1)-716(N) may be a server having one or more of the above computing resources.
[0069] In at least one embodiment, the grouped computing resources 714 may include a separate grouping (not shown) of node CRs housed in one or more racks, or many racks (also not shown) housed in data centers at various geographic locations. The separate grouping of node CRs within the grouped computing resources 714 may include computing, networks, memory or storage resources that can be configured or allocated to support groupings of one or more workloads. In at least one embodiment, several node CRs including a CPU or processor may be grouped in one or more racks to provide computing resources to support one or more workloads. In at least one embodiment, one or more racks may also include any number of power modules, cooling modules and network switches in any combination.
[0070] In at least one embodiment, resource coordinator 712 may configure or otherwise control one or more nodes CR 716(1)-716(N) and / or grouped computing resources 714. In at least one embodiment, resource coordinator 712 may include a software design infrastructure ("SDI") management entity for data center 700. In at least one embodiment, resource coordinator 107 may include hardware, software, or some combination thereof.
[0071] In at least one embodiment, Figure 7As shown, the framework layer 720 includes a job scheduler 722, a configuration manager 724, a resource manager 726, and a distributed file system 728. In at least one embodiment, the framework layer 720 may include a framework that supports software 732 of the software layer 730 and / or one or more applications 742 of the application layer 740. In at least one embodiment, the software 732 or the application 742 may include web-based service software or applications, such as those provided by Amazon Web Services, Google Cloud, and Microsoft Azure. In at least one embodiment, the framework layer 720 may be, but is not limited to, a free and open source software web application framework, such as Apache Spark, which may utilize the distributed file system 728 for large-scale data processing (e.g., "big data"). TM (hereinafter referred to as "Spark"). In at least one embodiment, the job scheduler 732 may include a Spark driver to facilitate scheduling of workloads supported by various layers of the data center 700. In at least one embodiment, the configuration manager 724 may be able to configure different layers, such as the software layer 730 and the framework layer 720 including Spark and a distributed file system 728 for supporting large-scale data processing. In at least one embodiment, the resource manager 726 can manage cluster or group computing resources mapped to or allocated to support the distributed file system 728 and the job scheduler 722. In at least one embodiment, the cluster or group computing resources may include group computing resources 714 on the data center infrastructure layer 710. In at least one embodiment, the resource manager 726 can coordinate with the resource coordinator 712 to manage these mapped or allocated computing resources.
[0072] In at least one embodiment, software 732 included in software layer 730 may include software used by at least a portion of node CRs 716(1)-716(N), grouped computing resources 714, and / or distributed file system 728 of framework layer 720. One or more types of software may include, but are not limited to, Internet web page search software, email virus scanning software, database software, and streaming video content software.
[0073] In at least one embodiment, one or more applications 742 included in the application layer 740 may include one or more types of applications used by at least a portion of the node CRs 716(1)-716(N), the grouped computing resources 714, and / or the distributed file system 728 of the framework layer 720. The one or more types of applications may include, but are not limited to, any number of genomics applications, cognitive computing, and machine learning applications, including training or inference software, machine learning framework software (e.g., PyTorch, TensorFlow, Caffe, etc.), or other machine learning applications used in conjunction with one or more embodiments.
[0074] In at least one embodiment, any of the configuration manager 724, resource manager 726, and resource coordinator 712 can implement any number and type of self-modification actions based on any number and type of data acquired in any technically feasible manner. In at least one embodiment, the self-modification actions can relieve a data center operator of the data center 700 from making potentially bad configuration decisions and can avoid underutilized and / or poorly performing portions of the data center.
[0075] In at least one embodiment, the data center 700 may include tools, services, software, or other resources to train one or more machine learning models or use one or more machine learning models to predict or infer information according to one or more embodiments described herein. For example, in at least one embodiment, a machine learning model may be trained by calculating weight parameters according to a neural network architecture using the software and computing resources described above with respect to the data center 700. In at least one embodiment, by using weight parameters calculated by one or more training techniques described herein, information may be inferred or predicted using trained machine learning models corresponding to one or more neural networks using the resources described above with respect to the data center 700.
[0076] In at least one embodiment, the data center can use a CPU, an application-specific integrated circuit (ASIC), a GPU, an FPGA, or other hardware to use the above resources to perform training and / or reasoning. In addition, one or more of the above software and / or hardware resources can be configured as a service to allow users to train or perform information reasoning, such as image recognition, speech recognition, or other artificial intelligence services.
[0077] Reasoning and / or training logic 715 is used to perform reasoning and / or training operations related to one or more embodiments. In at least one embodiment, reasoning and / or training logic 715 may be used to perform reasoning and / or training operations related to one or more embodiments. Figure 7Systems for performing inference or prediction operations based at least in part on weight parameters computed using neural network training operations, neural network functions and / or architectures, or neural network use cases described herein.
[0078] Such components can be used for hot migration.
[0079] Computer Systems
[0080] Figure 8 800 is a block diagram illustrating an exemplary computer system according to at least one embodiment, which may be a system of interconnected devices and components, a system on a chip (SOC), or some combination thereof formed with a processor, which may include an execution unit to execute instructions. In at least one embodiment, according to the present disclosure, such as the embodiments described herein, the computer system 800 may include, but is not limited to, components, such as a processor 802, whose execution unit includes logic to execute algorithms for processing data. In at least one embodiment, the computer system 800 may include a processor, such as a processor available from Intel Corporation of Santa Clara, California. Processor family, Xeon TM , XScale TM and / or StrongARM TM , Core TM or Nervana TM microprocessor, although other systems (including PCs with other microprocessors, engineering workstations, set-top boxes, etc.) may also be used. In at least one embodiment, computer system 800 may execute a version of the WINDOWS operating system available from Microsoft Corporation of Redmond, Wash., although other operating systems (e.g., UNIX and Linux), embedded software, and / or graphical user interfaces may also be used.
[0081] Embodiments may be used in other devices, such as handheld devices and embedded applications. Some examples of handheld devices include cellular phones, Internet Protocol (Internet Protocol) devices, digital cameras, personal digital assistants ("PDAs"), and handheld PCs. In at least one embodiment, the embedded application may include a microcontroller, a digital signal processor ("DSP"), a system on a chip, a network computer ("NetPC"), a set-top box, a network hub, a wide area network ("WAN") switch, or any other system that can execute one or more instructions according to at least one embodiment.
[0082] In at least one embodiment, the computer system 800 may include, but is not limited to, a processor 802, which may include, but is not limited to, one or more execution units 808 to perform machine learning model training and / or reasoning according to the techniques described herein. In at least one embodiment, the computer system 800 is a single-processor desktop or server system, but in another embodiment, the computer system 800 may be a multi-processor system. In at least one embodiment, the processor 802 may include, but is not limited to, a complex instruction set computer ("CISC") microprocessor, a reduced instruction set computing ("RISC") microprocessor, a very long instruction word ("VLIW") microprocessor, a processor that implements an instruction set combination, or any other processor device, such as a digital signal processor. In at least one embodiment, the processor 802 may be coupled to a processor bus 810, which may transmit data signals between the processor 802 and other components in the computer system 800.
[0083] In at least one embodiment, processor 802 may include, but is not limited to, a level 1 ("L1") internal cache memory ("cache") 804. In at least one embodiment, processor 802 may have a single internal cache or multiple levels of internal cache. In at least one embodiment, the cache memory may reside external to processor 802. Other embodiments may also include a combination of internal and external caches, depending on the particular implementation and needs. In at least one embodiment, register file 806 may store different types of data in various registers, including, but not limited to, integer registers, floating point registers, status registers, and instruction pointer registers.
[0084] In at least one embodiment, logic execution unit 808 that performs integer and floating point operations is also located in processor 802, including, but not limited to, performing integer and floating point operations. In at least one embodiment, processor 802 may also include a microcode ("ucode") read-only memory ("ROM") for storing microcode for certain macroinstructions. In at least one embodiment, execution unit 808 may include logic for processing a packed instruction set 809. In at least one embodiment, by including a packed instruction set 809 in the instruction set of a general purpose processor, and associated circuitry to execute the instructions, operations used by many multimedia applications may be performed using packed data in processor 802. In one or more embodiments, many multimedia applications may be executed faster and more efficiently by using the full width of the processor's data bus to perform operations on packed data, which may not require the transfer of smaller units of data on the processor's data bus to perform one or more operations one data element at a time.
[0085] In at least one embodiment, execution unit 808 may also be used in microcontrollers, embedded processors, graphics devices, DSPs, and other types of logic circuits. In at least one embodiment, computer system 800 may include, but is not limited to, memory 820. In at least one embodiment, memory 820 may be implemented as a dynamic random access memory ("DRAM") device, a static random access memory ("SRAM") device, a flash memory device, or other storage device. In at least one embodiment, memory 820 may store instructions 819 and / or data 821 represented by data signals that may be executed by processor 802.
[0086] In at least one embodiment, the system logic chip can be coupled to the processor bus 810 and the memory 820. In at least one embodiment, the system logic chip can include, but is not limited to, a memory controller hub ("MCH") 816, and the processor 802 can communicate with the MCH 816 via the processor bus 810. In at least one embodiment, the MCH 816 can provide a high-bandwidth memory path 818 to the memory 820 for instruction and data storage and for storage of graphics commands, data, and textures. In at least one embodiment, the MCH 816 can initiate data signals between the processor 802, the memory 820, and other components in the computer system 800, and bridge data signals between the processor bus 810, the memory 820, and the system I / O 822. In at least one embodiment, the system logic chip can provide a graphics port for coupling to a graphics controller. In at least one embodiment, the MCH 816 can be coupled to the memory 820 via a high-bandwidth memory path 818, and the graphics / video card 812 can be coupled to the MCH 816 via an Accelerated Graphics Port ("AGP") interconnect 814.
[0087] In at least one embodiment, the computer system 800 may use a system I / O 822, which is a proprietary hub interface bus to couple the MCH 816 to an I / O controller hub ("ICH") 830. In at least one embodiment, the ICH 830 may provide direct connections to certain I / O devices through a local I / O bus. In at least one embodiment, the local I / O bus may include, but is not limited to, a high-speed I / O bus used to connect peripheral devices to the memory 820, the chipset, and the processor 802. Examples may include, but are not limited to, an audio controller 828, a firmware hub ("Flash BIOS") 828, a wireless transceiver 826, a data store 824, a traditional I / O controller 823 including (one or more) user input and keyboard interface 825, a serial expansion port 827 (e.g., a universal serial bus (USB) port), and a network controller 834. The data store 824 may include a hard drive, a floppy drive, a CD-ROM device, a flash memory device, or other mass storage device.
[0088] In at least one embodiment, Figure 8 The system is shown as comprising interconnected hardware devices or "chips", while in other embodiments, Figure 8An exemplary system on chip (SoC) may be shown. In at least one embodiment, the devices may be interconnected with a proprietary interconnect, a standardized interconnect (e.g., PCIe), or some combination thereof. In at least one embodiment, one or more components of computer system 800 are interconnected using a compute express link (CXL) interconnect.
[0089] Reasoning and / or training logic 715 is used to perform reasoning and / or training operations related to one or more embodiments. In at least one embodiment, reasoning and / or training logic 715 may be used to perform reasoning and / or training operations related to one or more embodiments. Figure 8 Systems for performing inference or prediction operations based at least in part on weight parameters computed using neural network training operations, neural network functions and / or architectures, or neural network use cases described herein.
[0090] Such components can be used for hot migration.
[0091] Fig. 9 is a block diagram illustrating an electronic device 900 for utilizing a processor 910 according to at least one embodiment. In at least one embodiment, the electronic device 900 may be, for example but not limited to, a notebook computer, a tower server, a rack server, a blade server, a laptop computer, a desktop computer, a tablet computer, a mobile device, a phone, an embedded computer, or any other suitable electronic device.
[0092] In at least one embodiment, the electronic device 900 may include, but is not limited to, a processor 910 communicatively coupled to any suitable number or kind of components, peripherals, modules, or devices. In at least one embodiment, the processor 910 is coupled using a bus or interface, such as an Ic bus, a system management bus ("SMBus"), a low pin count (LPC) bus, a serial peripheral interface ("SPI"), a high-definition audio ("HDA") bus, a serial advanced technology attachment ("SATA") bus, a universal serial bus ("USB") (versions 1, 2, 3), or a universal asynchronous receiver / transmitter ("UART") bus. In at least one embodiment, Fig. 9 A system is shown that includes interconnected hardware devices or "chips", while in other embodiments, Fig. 9 An exemplary system on chip (SoC) may be shown. In at least one embodiment, Fig. 9 The devices shown in can be interconnected with a proprietary interconnect, a standardized interconnect (e.g., PCIe), or some combination thereof. In at least one embodiment, Fig. 9 One or more components of the system are interconnected using Compute Express Link (CXL) interconnect lines.
[0093] In at least one embodiment, Fig. 9The display 924, the touch screen 925, the touch pad 930, the near field communication unit ("NFC") 945, the sensor hub 940, the thermal sensor 946, the fast chipset ("EC") 935, the trusted platform module ("TPM") 938, the BIOS / firmware / flash memory ("BIOS, FWFlash") 922, the DSP 960, the drive 920 (for example, a solid state disk ("SSD") or a hard disk drive ("HDD")), the wireless local area network unit ("WLAN") 950, the Bluetooth unit 952, the wireless wide area network unit ("WWAN") 956, the global positioning system (GPS) 955, the camera ("USB3.0 camera") 954 (for example, a USB3.0 camera), and / or the low power double data rate ("LPDDR") memory unit ("LPDDR3") 915 implemented in, for example, the LPDDR3 standard. Each of these components can be implemented in any suitable manner.
[0094] In at least one embodiment, other components may be communicatively coupled to the processor 910 through the components described above. In at least one embodiment, the accelerometer 941, ambient light sensor ("ALS") 942, compass 943, and gyroscope 944 may be communicatively coupled to the sensor hub 940. In at least one embodiment, the thermal sensor 939, fan 937, keyboard 936, and touchpad 930 may be communicatively coupled to the EC 935. In at least one embodiment, the speaker 963, earphone 964, and microphone ("mic") 965 may be communicatively coupled to the audio unit ("audio codec and class D amplifier") 962, which in turn may be communicatively coupled to the DSP 960. In at least one embodiment, the audio unit 962 may include, for example, but not limited to, an audio encoder / decoder ("codec") and a class D amplifier. In at least one embodiment, the SIM card ("SIM") 957 may be communicatively coupled to the WWAN unit 956. In at least one embodiment, components such as the WLAN unit 950 and the Bluetooth unit 952 and the WWAN unit 956 may be implemented as a next generation form factor (NGFF).
[0095] Reasoning and / or training logic 715 is used to perform reasoning and / or training operations related to one or more embodiments. In at least one embodiment, reasoning and / or training logic 715 may be used to perform reasoning and / or training operations related to one or more embodiments. Fig. 9 Systems for performing inference or prediction operations based at least in part on weight parameters computed using neural network training operations, neural network functions and / or architectures, or neural network use cases described herein.
[0096] Such components can be used for hot migration.
[0097] Fig.10is a block diagram of a processing system according to at least one embodiment. In at least one embodiment, system 1000 includes one or more processors 1002 and one or more graphics processors 1008, and can be a single-processor desktop system, a multi-processor workstation system, or a server system with a large number of processors 1002 or processor cores 1007. In at least one embodiment, system 1000 is a processing platform incorporated within a system-on-chip (SoC) integrated circuit for use in a mobile, handheld, or embedded device.
[0098] In at least one embodiment, the system 1000 may include or be incorporated into a server-based gaming platform, including a gaming console, a mobile gaming console, a handheld gaming console, or an online gaming console for gaming and media consoles. In at least one embodiment, the system 1000 is a mobile phone, a smart phone, a tablet computing device, or a mobile Internet device. In at least one embodiment, the processing system 1000 may also include a wearable device coupled to or integrated in a wearable device, such as a smart watch wearable device, a smart glasses device, an augmented reality device, or a virtual reality device. In at least one embodiment, the processing system 1000 is a television or set-top box device having one or more processors 1002 and a graphical interface generated by one or more graphics processors 1008.
[0099] In at least one embodiment, one or more processors 1002 each include one or more processor cores 1007 to process instructions that, when executed, perform operations for system and user software. In at least one embodiment, each of the one or more processor cores 1007 is configured to process a specific instruction set 1009. In at least one embodiment, the instruction set 1009 can facilitate complex instruction set computing (CISC), reduced instruction set computing (RISC), or calculate by very long instruction words (VLIW). In at least one embodiment, one or more processor cores 1007 can each process a different instruction set 1009, which can include instructions that contribute to emulating other instruction sets. In at least one embodiment, one or more processor cores 1007 can also include other processing devices, such as digital signal processors (DSPs).
[0100] In at least one embodiment, one or more processors 1002 include cache memory 1004. In at least one embodiment, one or more processors 1002 may have a single internal cache or multiple levels of internal cache. In at least one embodiment, the cache memory is shared between various components of one or more processors 1002. In at least one embodiment, one or more processors 1002 also use an external cache (e.g., a level 3 (L3) cache or a last level cache (LLC)) (not shown), which can be shared between processor cores 1007 using known cache coherence techniques. In at least one embodiment, one or more processors 1002 additionally include a register file 1006, and the processor may include different types of registers (e.g., integer registers, floating point registers, status registers, and instruction pointer registers) for storing different types of data. In at least one embodiment, the register file 1006 may include general registers or other registers.
[0101] In at least one embodiment, one or more processors 1002 are coupled to one or more interface buses 1010 to transmit communication signals, such as address, data, or control signals, between one or more processors 1002 and other components in the system 1000. In at least one embodiment, one or more interface buses 1010 may be a processor bus in one embodiment, such as a version of a direct media interface (DMI) bus. In at least one embodiment, one or more interface buses 1010 are not limited to a DMI bus, and may include one or more peripheral component interconnect buses (e.g., PCI, PCI Express), memory buses, or other types of interface buses. In at least one embodiment, the processor 1002 includes an integrated memory controller 1016 and a platform controller hub 1030. In at least one embodiment, the memory controller 1016 facilitates communication between memory devices and other components of the processing system 1000, while the platform controller hub (PCH) 1030 provides connections to I / O devices through a local I / O bus.
[0102] In at least one embodiment, the memory device 1020 may be a dynamic random access memory (DRAM) device, a static random access memory (SRAM) device, a flash memory device, a phase change memory device, or have appropriate performance to be used as a processor memory. In at least one embodiment, the memory device 1020 may be used as a system memory of the processing system 1000 to store data 1022 and instructions 1021 for use when one or more processors 1002 execute applications or processes. In at least one embodiment, the memory controller 1016 is also coupled to an optional external graphics processor 1012, which may communicate with one or more graphics processors 1008 in one or more processors 1002 to perform graphics and media operations. In at least one embodiment, the display device 1011 may be connected to the processor 1002. In at least one embodiment, the display device 1011 may include one or more of the internal display devices, such as in a mobile electronic device or laptop device or an external display device connected via a display interface (e.g., DisplayPort, etc.). In at least one embodiment, the display device 1011 may include a head mounted display (HMD), such as a stereoscopic display device used in virtual reality (VR) applications or augmented reality (AR) applications.
[0103] In at least one embodiment, the platform controller hub 1030 enables peripheral devices to be connected to the storage device 1020 and one or more processors 1002 via a high-speed I / O bus. In at least one embodiment, the I / O peripherals include, but are not limited to, an audio controller 1046, a network controller 1034, a firmware interface 1028, a wireless transceiver 1026, a touch sensor 1025, a data storage device 1024 (e.g., a hard drive, flash memory, etc.). In at least one embodiment, the data storage device 1024 can be connected via a storage interface (e.g., SATA) or via a peripheral bus, such as a peripheral component interconnect bus (e.g., PCI, PCIe). In at least one embodiment, the touch sensor 1025 can include a touch screen sensor, a pressure sensor, or a fingerprint sensor. In at least one embodiment, the wireless transceiver 1026 can be a Wi-Fi transceiver, a Bluetooth transceiver, or a mobile network transceiver, such as a 3G, 4G, or long-term evolution (LTE) transceiver. In at least one embodiment, the firmware interface 1028 enables communication with the system firmware and can be, for example, a unified extensible firmware interface (UEFI). In at least one embodiment, the network controller 1034 can enable a network connection to a wired network. In at least one embodiment, a high-performance network controller (not shown) is coupled to the (one or more) interface bus 1010. In at least one embodiment, the audio controller 1046 is a multi-channel high-definition audio controller. In at least one embodiment, the processing system 1000 includes an optional legacy I / O controller 1040 for coupling legacy (e.g., Personal System 2 (PS / 2)) devices to the system 1000. In at least one embodiment, the platform controller hub 1030 can also be connected to one or more universal serial bus (USB) controllers 1042, which connect input devices such as a keyboard and mouse 1043 combination, a camera 1044, or other USB input devices.
[0104] In at least one embodiment, instances of memory controller 1016 and platform controller hub 1030 may be integrated into a discrete external graphics processor, such as external graphics processor 1012. In at least one embodiment, platform controller hub 1030 and / or memory controller 1016 may be external to one or more processors 1002. For example, in at least one embodiment, system 1000 may include external memory controller 1016 and platform controller hub 1030, which may be configured as a memory controller hub and a peripheral controller hub in a system chipset that communicates with processor 1002.
[0105] Inference and / or training logic 715 is used to perform reasoning and / or training operations related to one or more embodiments. In at least one embodiment, part or all of reasoning and / or training logic 715 may be incorporated into graphics processor 1008. For example, in at least one embodiment, the training and / or reasoning techniques described herein may use one or more ALUs embodied in a graphics processor. In at least one embodiment, weight parameters may be stored in on-chip or off-chip memory and / or registers (shown or not shown) that configure the ALUs of the graphics processor to perform one or more machine learning algorithms, neural network architectures, use cases, or training techniques described herein.
[0106] Such components can be used for hot migration.
[0107] Fig.11 is a block diagram of a processor 1100 having one or more processor cores 1102A-1102N, an integrated memory controller 1114, and an integrated graphics processor 1108 in accordance with at least one embodiment. In at least one embodiment, the processor 1100 may include additional cores, up to and including the additional core 1102N represented by the dashed box. In at least one embodiment, each processor core 1102A-1102N includes one or more internal cache units 1104A-1104N. In at least one embodiment, each processor core may also have access to one or more shared cache units 1106.
[0108] In at least one embodiment, the internal cache units 1104A-1104N and the shared cache unit 1106 represent a cache memory hierarchy within the processor 1100. In at least one embodiment, the cache unit(s) 1104A-1104N may include at least one level of instruction and data cache within each processor core and one or more levels of cache in a shared mid-level cache, such as level 2 (L2), level 3 (L3), level 4 (L4), or other levels of cache, where the highest level of cache before external memory is categorized as LLC. In at least one embodiment, cache coherency logic maintains coherency between the various cache units 1106 and 1104A-1104N.
[0109] In at least one embodiment, the processor 1100 may also include a set of one or more bus controller units 1116 and a system agent core 1110. In at least one embodiment, the one or more bus controller units 1116 manage a set of peripheral buses, such as one or more PCI or PCIe buses. In at least one embodiment, the system agent core 1110 provides management functions for various processor components. In at least one embodiment, the system agent core 1110 includes one or more integrated memory controllers 1114 to manage access to various external memory devices (not shown).
[0110] In at least one embodiment, one or more processor cores 1102A-1102N include support for multiple threads simultaneously. In at least one embodiment, system agent core 1110 includes components for coordinating and operating processor cores 1102A-1102N during multithreaded processing. In at least one embodiment, system agent core 1110 may additionally include a power control unit (PCU) that includes logic and components for regulating one or more power states of processor cores 1102A-1102N and graphics processor 1108.
[0111] In at least one embodiment, the processor 1100 also includes a graphics processor 1108 for performing graphics processing operations. In at least one embodiment, the graphics processor 1108 is coupled to a shared cache unit 1106 and a system agent core 1110 including one or more integrated memory controllers 1114. In at least one embodiment, the system agent core 1110 also includes a display controller 1111 for driving the graphics processor output to one or more coupled displays. In at least one embodiment, the display controller 1111 may also be a separate module coupled to the graphics processor 1108 via at least one interconnect, or may be integrated within the graphics processor 1108.
[0112] In at least one embodiment, a ring-based interconnect unit 1112 is used to couple the internal components of the processor 1100. In at least one embodiment, alternative interconnect units may be used, such as point-to-point interconnects, switched interconnects, or other technologies. In at least one embodiment, the graphics processor 1108 is coupled to the ring-based interconnect unit 1112 via an I / O link 1113.
[0113] In at least one embodiment, I / O link 1113 represents at least one of a variety of I / O interconnects, including packaged I / O interconnects that facilitate communication between various processor components and high-performance embedded memory modules 1118 (e.g., eDRAM modules). In at least one embodiment, each of the processor core(s) 1102A-1102N and graphics processor 1108 uses embedded memory module 1118 as a shared last level cache.
[0114] In at least one embodiment, (one or more) processor cores 1102A-1102N are homogeneous cores that execute a common instruction set architecture. In at least one embodiment, (one or more) processor cores 1102A-1102N are heterogeneous in terms of instruction set architecture (ISA), wherein one or more processor cores 1102A-1102N execute a common instruction set, while one or more other processor cores 1102A-1102N execute a subset or a different instruction set of the common instruction set. In at least one embodiment, in terms of microarchitecture, processor cores 1102A-1102N are heterogeneous, wherein one or more cores with relatively high power consumption are coupled with one or more power cores with lower power consumption. In at least one embodiment, processor 1100 can be implemented on one or more chips or implemented as a SoC integrated circuit.
[0115] The reasoning and / or training logic 715 is used to perform reasoning and / or training operations related to one or more embodiments. In at least one embodiment, part or all of the reasoning and / or training logic 715 may be incorporated into the processor 1100. For example, in at least one embodiment, the training and / or reasoning techniques described herein may use the graphics processor 1108, the processor cores 1102A-1102N, or Fig.11 In at least one embodiment, the weight parameters may be stored in on-chip or off-chip memory and / or registers (shown or not shown) that configure the ALUs of graphics processors 1100 / 1108 to execute one or more machine learning algorithms, neural network architectures, use cases, or training techniques described herein.
[0116] Such components can be used for hot migration.
[0117] Various embodiments may be described by the following terms:
[0118] 1. A computer-implemented method comprising:
[0119] determining whether a virtual machine (VM) is to be migrated from a first server to a second server during a hot migration event;
[0120] Determining a time period during which the VM is to be migrated to the second server;
[0121] transmitting a first message to a node that exchanges traffic with the VM, the first message providing a first notification of a first state of the VM;
[0122] determining that the time period has completed and the VM is configured to receive traffic; and
[0123] After the time period, a second message is transmitted to the node, the second message providing a second notification of a second state of the VM.
[0124] 2. The computer-implemented method of clause 1, wherein the first state is an offline state and the second state is an online state.
[0125] 3. The computer-implemented method of clause 1, wherein the first message is transmitted before the time period begins.
[0126] 4. The computer-implemented method of clause 1, further comprising:
[0127] The first message is broadcast to a plurality of nodes associated with a network including the VM.
[0128] 5. The computer-implemented method of clause 1, wherein the node is configured to modify one or more timeout parameters based on the first message.
[0129] 6. The computer-implemented method of clause 5, wherein the node is configured to return to a previous timeout parameter based on the second message.
[0130] 7. The computer-implemented method of clause 1, wherein the traffic is transmitted along a reliable network connection.
[0131] 8. The computer-implemented method of clause 1, further comprising:
[0132] After sending the first message and before sending the second message, one or more intermediate messages are provided to the node.
[0133] 9. The computer-implemented method of clause 8, wherein the one or more intermediate messages to the node are updates regarding the first state.
[0134] 10. The computer-implemented method of clause 5, further comprising:
[0135] One or more periodic messages are provided to the node based at least on the first message.
[0136] 11. The computer-implemented method of clause 5, further comprising:
[0137] One or more periodic messages are provided regarding updates to the first state.
[0138] 12. A computer-implemented method comprising:
[0139] Determining that a virtual machine (VM) is subject to a hot migration event;
[0140] determining that the VM has an offline state during the hot migration event;
[0141] receiving, from a node, traffic directed to the VM when the VM has the offline state; and
[0142] In response to the traffic, a first notification associated with the offline state of the VM is provided to the node.
[0143] 13. The computer-implemented method of clause 12, further comprising:
[0144] Determining that the VM has an online state in which the VM is capable of receiving traffic; and providing, in response to the VM online state, a second notification associated with the online state of the VM to the node.
[0145] 14. The computer-implemented method of clause 12, wherein the first notification includes an estimated time for an offline state of the VM.
[0146] 15. The computer-implemented method of clause 12, further comprising:
[0147] When the VM has the offline status, providing periodic notification to the node.
[0148] 16. The computer-implemented method of clause 12, wherein the node is configured to modify one or more timeout parameters based on the first notification.
[0149] 17. The computer-implemented method of clause 12, wherein the traffic is associated with a reliable network connection.
[0150] 18. The computer implemented method of clause 17, wherein the reliable network connection comprises at least one of a transmission control protocol, a remote direct memory access reliable connection, or a remote direct memory access dynamic connection.
[0151] 19. A processor comprising:
[0152] One or more processing units for:
[0153] determining that a virtual machine (VM) is scheduled for an offline period during a hot migration event; and
[0154] A message is provided to one or more nodes associated with the VM indicating a state of the VM during the hot migration event.
[0155] 20. A processor according to clause 19, wherein one or more of the processing units is further configured to:
[0156] When the state of the VM corresponds to an offline state, traffic is received from a node of the one or more nodes, wherein the message is provided in response to the traffic.
[0157] 21. The processor of clause 20, wherein the message includes an expected time period that the VM will have the offline state.
[0158] 22. The processor of clause 20, wherein the message includes instructions to modify one or more timeout settings of the node.
[0159] 23. A processor according to clause 19, wherein one or more of the processing units is further configured to:
[0160] A state of the VM is determined to be an offline state, wherein the message is provided in response to the determination of the state of the VM.
[0161] 24. The processor of clause 19, wherein the processor is included in at least one of the following:
[0162] A system for performing simulation operations;
[0163] Systems for performing simulated operations to test or validate autonomous machine applications;
[0164] Systems for performing digital twin operations;
[0165] A system for performing light transport simulations;
[0166] Systems for rendering graphics output;
[0167] Systems for performing deep learning operations;
[0168] Systems implemented using edge devices;
[0169] Systems for generating or presenting virtual reality (VR) content;
[0170] Systems for generating or presenting augmented reality (AR) content;
[0171] Systems for generating or presenting mixed reality (MR) content;
[0172] A system comprising one or more virtual machines (VMs);
[0173] Systems for performing operations of conversational AI applications;
[0174] A system for performing operations of a generative AI application;
[0175] A system for performing operations using a language model;
[0176] A system for performing one or more generative content operations using a large language model (LLM);
[0177] A system implemented at least in part in a data center;
[0178] A system for performing hardware testing using simulation;
[0179] A system for performing one or more generative content operations using a language model;
[0180] Systems for synthetic data generation;
[0181] A collaborative content creation platform for 3D assets; or
[0182] A system implemented at least in part using cloud computing resources.
[0183] Other variations are within the spirit of the present disclosure. Thus, while the disclosed technology is susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described in detail above. However, it should be understood that there is no intention to limit the disclosure to one or more specific forms disclosed, but on the contrary, it is intended to cover all modifications, alternative constructions, and equivalents that fall within the spirit and scope of the present disclosure as defined by the appended claims.
[0184] Unless otherwise noted or clearly contradictory to the context, in the context of describing the disclosed embodiments (particularly in the context of the appended claims), the use of the terms "one" and "an" and "the" and similar references should be interpreted as covering the singular and plural, rather than as definitions of terms. Unless otherwise noted, the terms "include", "have", "include" and "contain" should be interpreted as open terms (meaning "including but not limited to") unless otherwise noted. The term "connected" (which refers to a physical connection when unmodified) should be interpreted as partially or completely included, attached to or connected together, even if there are some interventions. Unless otherwise noted herein, references to numerical ranges herein are intended only to be used as a shorthand method of referring to each individual value falling within the range, respectively, and each individual value is incorporated into the specification as if it were individually described herein. Unless otherwise noted or contradictory to the context, the use of the term "set" (e.g., "item set") or "subset" should be interpreted as a non-empty set including one or more members. Furthermore, unless otherwise indicated or contradicted by context, the term "subset" of a corresponding set does not necessarily mean a proper subset of the corresponding set, but rather a subset and a corresponding set may be equivalent.
[0185] Unless expressly indicated otherwise or clearly contradicted by context, conjunctions such as phrases of the form "at least one of A, B, and C" or "at least one of A, B and C" are understood in context to be generally used to refer to an item, clause, or the like that may be A or B or C, or any non-empty subset of the set A and B and C. For example, in the illustrative example of a set having three members, the conjunction phrases "at least one of A, B, and C" and "at least one of A, B and C" refer to any of the following sets: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Thus, such conjunction language is not generally intended to imply that certain embodiments require the presence of at least one of A, at least one of B, and at least one of C. In addition, unless expressly indicated otherwise or contradicted by context, the term "plurality" refers to a plural state (e.g., "plurality of items" means a plurality of items). The number of items in a plurality of items is at least two, but may be more if expressly indicated or indicated by context. Further, the phrase "based on" means "based at least in part on" rather than "based solely on" unless otherwise specified or clear from context.
[0186] Unless otherwise indicated herein or clearly contradictory to the context, the operations of the processes described herein may be performed in any suitable order. In at least one embodiment, processes such as those described herein (or variations and / or combinations thereof) are performed under the control of one or more computer systems configured with executable instructions and are implemented as code (e.g., executable instructions, one or more computer programs, or one or more applications) that are jointly executed on one or more processors by hardware or a combination thereof. In at least one embodiment, the code is stored on a computer-readable storage medium in the form of, for example, a computer program that includes a plurality of instructions that can be executed by one or more processors. In at least one embodiment, the computer-readable storage medium is a non-transitory computer-readable storage medium that excludes transient signals (e.g., propagated transient electrical or electromagnetic transmissions), but includes non-transitory data storage circuits (e.g., buffers, caches, and queues). In at least one embodiment, code (e.g., executable code or source code) is stored on a set of one or more non-transitory computer-readable storage media (or other memory for storing executable instructions) on which executable instructions are stored, which, when executed by one or more processors of a computer system (i.e., as a result of being executed), causes the computer system to perform the operations described herein. In at least one embodiment, a set of non-transitory computer-readable storage media includes a plurality of non-transitory computer-readable storage media, and one or more of the individual non-transitory storage media in the plurality of non-transitory computer-readable storage media lacks all the code, but the plurality of non-transitory computer-readable storage media stores all the code together. In at least one embodiment, the executable instructions are executed so that different instructions are executed by different processors, for example, a non-transitory computer-readable storage medium stores instructions, and a main central processing unit ("CPU") executes some instructions, while a graphics processing unit ("GPU") executes other instructions. In at least one embodiment, different components of the computer system have separate processors, and different processors execute different subsets of instructions.
[0187] Thus, in at least one embodiment, a computer system is configured to implement one or more services that individually or collectively perform the operations of the processes described herein, and such a computer system is configured with applicable hardware and / or software that enables the implementation of the operations. In addition, a computer system that implements at least one embodiment of the present disclosure is a single device, and in another embodiment is a distributed computer system that includes multiple devices that operate in different ways, so that the distributed computer system performs the operations described herein, and so that a single device does not perform all operations.
[0188] The use of any and all examples or exemplary language (e.g., "such as") provided herein is intended only to better illustrate embodiments of the present disclosure and does not limit the scope of the disclosure unless otherwise required. No language in the specification should be construed as indicating that any non-claimed element is essential to practicing the disclosure.
[0189] All references, including publications, patent applications, and patents, cited herein are hereby incorporated by reference to the same extent as if each reference were individually and specifically indicated to be incorporated by reference and were set forth in its entirety herein.
[0190] In the specification and claims, the terms "coupled" and "connected," as well as their derivatives, may be used. It should be understood that these terms may not be intended as synonyms for each other. On the contrary, in specific examples, "connected" or "coupled" may be used to indicate that two or more elements are in direct or indirect physical or electrical contact with each other. "Coupled" may also mean that two or more elements are not in direct contact with each other, but still cooperate or interact with each other.
[0191] Unless explicitly stated otherwise, it is understood that throughout the specification, terms such as "processing", "calculating", "calculating", "determining", etc. refer to the actions and / or processes of a computer or computing system or similar electronic computing device that processes and / or converts data represented as physical quantities (e.g., electronic) in the registers and / or memories of the computing system into other data similarly represented as physical quantities in the memories, registers or other such information storage, transmission or display devices of the computing system.
[0192] In a similar manner, the term "processor" may refer to any device or part of a memory that processes electronic data from registers and / or memory and converts the electronic data into other electronic data that can be stored in registers and / or memory. As a non-limiting example, a "processor" may be a CPU or a GPU. A "computing platform" may include one or more processors. As used herein, a "software" process may include, for example, software and / or hardware entities that perform work over time, such as tasks, threads, and intelligent agents. Similarly, each process may refer to multiple processes to execute instructions sequentially or in parallel, continuously or intermittently. The terms "system" and "method" may be used interchangeably herein, as long as a system may embody one or more methods, and a method may be considered a system.
[0193] In this document, reference may be made to obtaining, acquiring, receiving or inputting analog or digital data into a subsystem, a computer system or a computer-implemented machine. It is possible to obtain, acquire, receive or input analog and digital data in a variety of ways, such as by receiving data as a parameter of a function call or a call to an application programming interface. In some implementations, the process of obtaining, acquiring, receiving or inputting analog or digital data can be accomplished by transmitting data via a serial or parallel interface. In another implementation, the process of obtaining, acquiring, receiving or inputting analog or digital data can be accomplished by transmitting data from a providing entity to an acquiring entity via a computer network. It is also possible to reference to providing, outputting, transmitting, sending or presenting analog or digital data. In various examples, the process of providing, outputting, transmitting, sending or presenting analog or digital data can be accomplished by transmitting data as an input or output parameter of a function call, an application programming interface or an interprocess communication mechanism.
[0194] Although the above discussion sets forth example implementations of the described techniques, other architectures may be used to implement the described functionality and are intended to fall within the scope of the present disclosure. In addition, although specific responsibilities are defined above for discussion purposes, various functions and responsibilities may be allocated and divided in different ways, depending on the circumstances.
[0195] Furthermore, although the subject matter has been described in language specific to structural features and / or methodological acts, it should be understood that the subject matter claimed in the appended claims is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as exemplary forms of implementing the claims.
Claims
1. A computer-implemented method comprising: Determining whether a virtual machine VM is to be migrated from a first server to a second server during a hot migration event; Determining a time period during which the VM is to be migrated to the second server; transmitting a first message to a node that exchanges traffic with the VM, the first message providing a first notification of a first state of the VM; determining that the time period has completed and the VM is configured to receive traffic; as well as After the time period, a second message is transmitted to the node, the second message providing a second notification of a second state of the VM. 2 . The computer-implemented method of claim 1 , wherein the first state is an offline state and the second state is an online state. 3 . The computer-implemented method of claim 1 , wherein the first message is transmitted before the time period begins.
4. The computer-implemented method of claim 1 , further comprising: The first message is broadcast to a plurality of nodes associated with a network including the VM. 5 . The computer-implemented method of claim 1 , wherein the node is configured to modify one or more timeout parameters based on the first message.
6. The computer-implemented method of claim 5, wherein the node is configured to return to a previous timeout parameter based on the second message.
7. The computer-implemented method of claim 1, wherein the traffic is transmitted along a reliable network connection.
8. The computer-implemented method of claim 1 , further comprising: After sending the first message and before sending the second message, one or more intermediate messages are provided to the node.
9. The computer-implemented method of claim 8, wherein the one or more intermediate messages to the node are updates regarding the first state.
10. The computer-implemented method of claim 5, further comprising: One or more periodic messages are provided to the node based at least on the first message.
11. The computer-implemented method of claim 5, further comprising: One or more periodic messages are provided regarding updates to the first state.
12. A computer-implemented method comprising: Determining that the virtual machine VM is subject to a hot migration event; determining that the VM has an offline state during the hot migration event; receiving, from a node, traffic directed to the VM when the VM has the offline state; as well as In response to the traffic, a first notification associated with the offline state of the VM is provided to the node.
13. The computer-implemented method of claim 12, further comprising: determining that the VM has an online state, in which the VM is capable of receiving traffic; In response to the VM online status, a second notification associated with the online status of the VM is provided to the node.
14. The computer-implemented method of claim 12, wherein the first notification includes an estimated time for an offline state of the VM.
15. The computer-implemented method of claim 12, further comprising: When the VM has the offline status, providing periodic notification to the node.
16. The computer-implemented method of claim 12, wherein the node is configured to modify one or more timeout parameters based on the first notification.
17. The computer implemented method of claim 12, wherein the traffic is associated with a reliable network connection.
18. The computer implemented method of claim 17, wherein the reliable network connection comprises at least one of a transmission control protocol, a remote direct memory access reliable connection, or a remote direct memory access dynamic connection.
19. A processor comprising: One or more processing units for: Determine that the virtual machine VM is scheduled to be offline during the hot migration event; as well as A message is provided to one or more nodes associated with the VM indicating a state of the VM during the hot migration event.
20. The processor of claim 19, wherein the one or more processing units are further configured to: When the state of the VM corresponds to an offline state, traffic is received from a node of the one or more nodes, wherein the message is provided in response to the traffic.
21. The processor of claim 20, wherein the message includes an expected time period that the VM will have the offline state.
22. The processor of claim 20, wherein the message includes instructions to modify one or more timeout settings of the node.
23. The processor of claim 19, wherein the one or more processing units are further configured to: A state of the VM is determined to be an offline state, wherein the message is provided in response to the determination of the state of the VM.
24. The processor of claim 19, wherein the processor is included in at least one of: A system for performing simulation operations; Systems for performing simulated operations to test or validate autonomous machine applications; Systems for performing digital twin operations; A system for performing light transport simulations; Systems for rendering graphical output; Systems for performing deep learning operations; Systems implemented using edge devices; Systems for generating or presenting virtual reality (VR) content; Systems for generating or presenting augmented reality (AR) content; Systems for generating or presenting mixed reality (MR) content; A system comprising one or more virtual machines VM; Systems for performing operations of conversational AI applications; A system for performing operations of a generative AI application; A system for performing operations using a language model; A system for performing one or more generative content operations using a large language model (LLM); A system implemented at least in part in a data center; A system for performing hardware testing using simulation; A system for performing one or more generative content operations using a language model; Systems for synthetic data generation; A collaborative content creation platform for 3D assets; or A system implemented at least in part using cloud computing resources.