SYSTEM AND METHOD FOR FAST START OF APPLICATIONS IN A CLOUD COMPUTING ENVIRONMENT - Patent application
By managing applications at the edge of a cloud computing environment, identifying frequently accessed applications, and synchronizing session data, the solution addresses the challenge of long load times in cloud gaming, achieving faster and more seamless gaming experiences even in complex VR and AR environments.
Patent Information
- Application Number
- JP2024539292
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-04-25
- Filing Date
- 2023-04-24
- Publication Date
- 2025-05-02
AI Technical Summary
Existing cloud gaming and remote gaming rendering technologies face significant challenges in achieving fast application initiation due to large game engine sizes and complex graphics requirements, leading to long load times and latency issues, especially as games become more complex in virtual reality (VR) and augmented reality (AR) environments.
The solution involves managing applications at the edge of a cloud computing environment by identifying frequently accessed applications, preemptively launching them, and keeping them in a memory resident state. When a user requests access, the application is quickly retrieved and activated, with user-specific data loaded efficiently. This approach also includes synchronizing session data across edges to ensure seamless transitions as users move between network edges.
This approach significantly reduces application load times and latency, enabling faster and more seamless gaming experiences, even in complex VR and AR environments, by leveraging resource availability at the network edge and optimizing data synchronization.
Smart Images

Figure 2025513981000001_ABST
Abstract
Description
[Technical field]
[0001] The present disclosure is directed to running applications at the edge of a cloud computing environment. In particular, techniques are disclosed for fast initiation of applications when accessed by a user device connected to the edge of a cloud computing environment. Summary of the Invention [Means for solving the problem]
[0002] Many applications are very large in size. For example, a game engine and accompanying game data can be hundreds of gigabytes. Even when using a solid-state drive (SSD), it can take some time to load a game on a game console or PC, resulting in a latency for a user to start playing the game. This same problem exists when running a game engine at the edge of a cloud computing environment for remote game rendering, which will result in a long latency for the game engine to start and begin rendering the video. As games become even more complex with higher complexity graphics, such as in virtual reality (VR) and augmented reality (AR), this problem will continue to exist and will become even worse.
[0003] Remote game rendering, also known as cloud gaming, is gaining support from game studios, internet companies, and network operators. Google's Stadia offers remote game streaming and downloads as a business. TM , Nvidia's GeForce Now TM , and Sony's PS Now TMThere are products on the market today like . Amazon is also getting into this business. "Download" refers to downloading the game to a local hard drive so that the game runs locally on the gaming console or PC. Streaming refers to running the game engine somewhere in the network, typically closer to the edge for lower latency, receiving the rendered game output, and encoding, streaming, and decoding the game on the client device. Controller input is consumed on the local device and delivered over the network to the game engine running remotely.
[0004] As of today, no virtual reality remote / cloud gaming is known to exist. However, companies such as Unity, Sony, Google, and Nvidia are eager to provide solutions that support remote VR and AR gaming in the future, which would increase initial load times even further. These game engines are shut down every time a user / subscriber stops playing a game and are restarted when the same or a new user / subscriber wants to play the game. Every time a first user stops playing and a second user wants to start playing the same game, the second user experiences long load times.
[0005] What is needed is a solution that manages applications (e.g., game engine virtual machines (VMs)) for fast start based on resource availability and lends out physical processing resources (e.g., GPU resources) for other uses when not being used at the network edge. This is done by keeping highly popular applications in a memory resident state, and when a new session is requested for such an application, the application is taken out of the memory resident state and the requesting user's application data (e.g., game state and character data) is loaded into the application. User application data can also be saved and loaded in a remotely rendered environment (e.g., a cloud game engine environment), where the user application data is stored in a global cloud with an interface for loading user application data and user profile data from the global cloud into applications running locally inside the cloud computing environment, such as an operator's dedicated network running at the edge of a 5G mobile broadband network or any other network. This results in fast application load times for popular applications located at a particular edge of the network and the ability to save user application data in the cloud computing environment and use the application's typical means of loading and saving user application data when the application is rendered locally.
[0006] A system and method for fast start of applications in a cloud computing environment are described herein. Applications that are likely to be accessed at the edge of a cloud computing environment are identified. This can be accomplished in several ways, including analysis of historical application usage patterns to predict future usage and probabilistic analysis based on the ratio of users using the application to the total number of users connected to the edge. Once an application is identified as likely to be accessed, it is preemptively launched and then placed in a memory resident state. For example, the application may be kept in a cached memory space or launched in a virtual machine, which is then suspended or placed in a hibernated state. When a request from a user to access the application is received, the application is taken out of the memory resident state and placed in an active state, and parameters associated with the user are applied to the application. For example, the user profile may include customizations or preferences that the user has for the application.
[0007] At times, a user will travel between two edges of a cloud computing environment. For example, the cloud computing environment may be a 5G mobile broadband network and the user may be traveling by car, train, or other mode of transportation. It may be determined at the edge whether a user device associated with an application will connect to a second edge within a threshold period of time. If so, session data for the application associated with the user device is synchronized with the second edge prior to the time the user device connects to the second edge.
[0008] The application may not always be active at the second edge before the user device connects to it. If the application is active, a session for the application is initiated using the synchronized session data. If the application is not active, the application is launched at the second edge and the parameters associated with the user are applied to the application as at the first edge. Once the application is launched, a session is initiated at the second edge using the synchronized session data.
[0009] When it is detected that the user has ended the session for the application, it is determined whether the application is likely to be accessed by other users. If the application is no longer likely to be accessed by other users, the application is closed. However, if other users are still likely to access the application, it is determined at the edge whether a user device associated with the application at the second edge of the cloud computing environment will be connected to the edge within a threshold period. If so, the current state of the application at the second edge is applied to the application, and the session data from the second edge is synchronized with the edge. If any user device associated with the application at the second edge will not be connected to the edge within the threshold period, the application is returned to a memory resident state. [Brief description of the drawings]
[0010] These and other objects and advantages of the present disclosure will become apparent upon consideration of the following detailed description taken in conjunction with the accompanying drawings.
[0011] [Figure 1]FIG. 1 illustrates an example of a cloud computing environment in which an application active at a first edge should be quickly started at a second edge according to some embodiments of the present disclosure.
[0012] [Diagram 2] FIG. 2 illustrates an example of application management in an edge server according to some embodiments of the present disclosure.
[0013] [Diagram 3] FIG. 3 illustrates a second example of application management in an edge server according to some embodiments of the present disclosure.
[0014] [Figure 4] FIG. 4 illustrates an example of application management between two edge servers according to some embodiments of the present disclosure.
[0015] [Diagram 5] FIG. 5 is a block diagram illustrating components of an edge server where an application is initially used and the data flow between them according to some embodiments of the present disclosure.
[0016] [Figure 6] FIG. 6 is a block diagram illustrating components of an edge server in which applications may be used and the data flows between them, according to some embodiments of the present disclosure.
[0017] [Figure 7] FIG. 7 is a flowchart depicting an illustrative process for fast start of applications in a cloud computing environment according to some embodiments of the present disclosure.
[0018] [Figure 8]FIG. 8 is a flowchart depicting an illustrative process for determining that an application will likely be accessed within a threshold period of time according to some embodiments of the present disclosure.
[0019] [Figure 9] FIG. 9 is a flowchart depicting a second illustrative process for determining that an application will likely be accessed within a threshold period of time according to some embodiments of the present disclosure.
[0020] [Figure 10] FIG. 10 is a flowchart depicting an illustrative process for transferring an active application session from a first edge of a cloud computing environment to a second edge of the cloud computing environment in accordance with some embodiments of the present disclosure.
[0021] [Figure 11] FIG. 11 is a flowchart depicting an illustrative process for managing applications upon termination of an application session according to some embodiments of the disclosure. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0022] FIG. 1 illustrates an example of a cloud computing environment in which an application active at a first edge according to some embodiments of the present disclosure should be quickly started at a second edge. An edge server 100 residing at an edge 102 of the cloud computing environment serves cloud-based applications to user devices connected to the edge 102. A user device 104 may connect to the edge 102, and the edge server 100 may serve cloud-based applications, such as video games, to the user device 104. While the present disclosure will primarily discuss cloud-based rendering of video games, one skilled in the art will readily appreciate that the methods and systems described herein are applicable to and may be used in conjunction with all types of cloud-based applications.
[0023] The edge 102 may be the first node in a wireless network, such as a 5G mobile broadband network. If an application being served to the user device 104 by the edge server 100 takes a long time to load initially, it may cause significant delays or buffering for the user device 104 when the user device 104 moves out of the transmission range 106 of the edge 102. For example, a video game may require loading not only the video game engine, but also level data, music, and user-specific data (likes, statistics, scores, etc.). In some cases, the video game may stall completely and the game may not be playable at all until the switch from one edge to the next is complete. When the user device 104 moves out of the transmission range 106 of the edge 102 and into the transmission range 108 of the edge 110, the edge server 112 residing at the edge 110 may require significant time to launch the video game and load all the necessary data before the user of the user device 104 can continue playing the video game. To prevent that, the edge server 100 determines that the user device 104 will connect to the edge 110 and transmits (114) instructions to the edge server 112 to launch the video game. The transmission may also include user data related to the current video game session. The edge server 100 may maintain a link with the edge server 112 and continue to provide the session data and other game data until the connection between the edge 102 and the user device 104 is lost. In some embodiments, the transmission range 106 may partially overlap with the transmission range 108. The user device 104 may thus connect to the edge 110 before disconnecting from the edge 102 and transmit the session data and other game data to both the edge server 100 and the edge server 112 until the connection with the edge 102 is lost.
[0024] FIG. 2 illustrates an example of application management in an edge server according to some embodiments of the present disclosure. The edge server 200 serves applications to a user device 202. To conserve system resources, not all applications available on the edge server 200 are kept active all the time. At any given time, there are some active applications 204, some memory resident applications 206, and some inactive applications 208. The user device 202 may access application 1 210. Since the user device is currently accessing application 1 210, application 1 is one of the active applications 204. At some point, the connection between the user device 202 and the edge server 200 is lost (212). This may occur because the user device 202 has moved out of the transmission range of the network edge where the edge server 200 resides, because the user device 202 has been deactivated (by the user, from a loss of power or a system failure), or because the user of the user device 202 has ended the session for application 1 210. If no other user devices are currently accessing Application 1 210, Application 1 is placed in a memory resident state (214). For example, the virtual machine on which Application 1 210 runs may be placed in a hibernated or sleep state. This allows Application 1 210 to be quickly reactivated if User Device 202 or any other user device accesses Application 1 210.
[0025] 3 illustrates a second example of application management in an edge server according to some embodiments of the present disclosure. An edge server 300 serves applications to a user device 302. To conserve system resources, not all applications available on the edge server 300 are kept active all the time. At any given time, there are some active applications 304, some memory resident applications 306, and some inactive applications 308. A user device 302 may access application 1 310. Since the user device is currently accessing application 1 310, application 1 is one of the several active applications 304. At some point, the connection between the user device 302 and the edge server 300 is lost (312). This may occur because the user device 302 has moved out of transmission range of the network edge where the edge server 300 resides, because the user device 302 has been deactivated (by the user, from a loss of power or a system failure), or because the user of the user device 302 has ended the session for Application 1 310. If no other user devices are currently accessing Application 1 310 and it is no longer likely that any user devices will access Application 1 310, Application 1 is placed in an inactive state (314).
[0026] FIG. 4 illustrates an example of application management between two edge servers according to some embodiments of the present disclosure. An edge server 400 at edge 1 serves applications to a user device 402. To conserve system resources, not all applications available on the edge server 400 are kept active all the time. At any given time, there are some active applications 404, some memory resident applications 406, and some inactive applications 408. The user device 402 may access application 1 410. Since the user device is currently accessing application 1 410, application 1 is one of the active applications 404. At some point, the connection between the user device 402 and the edge server 400 is lost (412). This may occur because the user device 402 has moved out of transmission range of the network edge where the edge server 400 resides, or because the user device 402 has been deactivated (by the user, from a loss of power or a system failure), or because the user of the user device 402 has ended the session for application 1 410. If no other user devices are currently accessing application 1 410, application 1 is placed in a memory resident state (414). For example, the virtual machine running application 1 410 may be placed in a hibernated or sleep state. This allows application 1 410 to be quickly reactivated if the user device 402 or any other user device accesses application 1 410. If no other user devices are currently accessing the application and it is no longer likely that any user devices will access application 1 410, application 1 is placed in an inactive state (416).
[0027] The edge server 400 may determine that the user device 402 will be connected to edge 2 within a threshold period prior to the loss of connection with the user device 402. In some embodiments, the transmission range of edge 1 and the transmission range of edge 2 may overlap. The edge server 400 may then determine that the user device 402 was already connected to an edge server 418 residing at edge 2 before the connection with the edge server 400 was lost. In either case, the edge server 400 transmits (420) session information associated with the user device 402 and application 1 410 to the edge server 418. In response to receiving the transmission, the edge server 418 may determine whether application 1 is currently active at the edge server 418. If application 1 is not active at the edge server 418, the edge server 418 determines whether application 1 is in a memory resident state. In the example of FIG. 4, application 1 422 is one of several inactive applications 424 at the edge server 418. Thus, the edge server 418 first launches application 1 422 and places application 1 in an active state. The edge server 418 must load application 1 and any associated files and receive a sufficient allocation of system resources at the edge server 418 before application 1 422 is ready to be served (430) to the user device 402.
[0028] The edge server 400 also serves application 3 432 to the user device 434. If the connection between the edge server 400 and the user device 434 is lost (436), the edge server 400 places application 3 432 in a memory resident state (438) or places application 3 432 in an inactive state (440). Similar to the management of application 1 410 discussed above, the edge server 400 may transmit session information associated with the user device 434 and application 3 432 to the edge server 418 (442) if the edge server 400 determines that the user device 434 will be connected to the edge server 418 or is already connected to it. In response to receiving the transmission, the edge server 418 may determine whether application 3 is currently active at the edge server 418. If application 3 is not active at the edge server 418, the edge server 418 determines whether application 3 is in a memory resident state. 4, application 3 444 is one of several memory resident applications 446. Thus, the edge server 418 brings application 3 444 from a memory resident state to an active state (448). The edge server 418 then serves application 3 444 to the user device 434 (450) without having to wait for associated files to be loaded or for allocation of system resources.
[0029] FIG. 5 is a block diagram illustrating components of an edge server where an application is first used according to some embodiments of the present disclosure and the data flow between them. A first edge server 500 resides at a first edge of a cloud computing environment. The edge server 500 includes control circuitry 502 and memory 504. The control circuitry 502 may be based on any suitable processing circuitry and includes control circuitry and memory circuitry, which may be located on a single integrated circuit or may be separate components. As referred to herein, processing circuitry should be understood to mean circuitry based on one or more microprocessors, microcontrollers, digital signal processors, programmable logic devices, field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), etc., and may include multi-core processors (e.g., dual-core, quad-core, hexa-core, or any suitable number of cores). In some embodiments, the processing circuitry may be distributed across multiple separate processors or processing units, e.g., multiple processing units of the same type (e.g., two Intel Core i7 processors) or multiple different processors (e.g., an Intel Core i5 processor and an Intel Core i7 processor). In some embodiments, one or more of the functions described as being performed by the control circuitry 502 or any of its components may be performed by control circuitry residing on another device. For example, the functionality of an edge server in a cloud computing environment, including edge server 500, may be organized by one or more hierarchically superior devices. Memory 504 may be any suitable electronic storage device, such as a random access memory, a read-only memory, a hard drive, an optical drive, a solid-state device, a quantum storage device, or any other suitable fixed or removable storage device, and / or any combination thereof.
[0030] The control circuitry 502 may use application management circuitry 506 to determine applications that are likely to be accessed at the edge server 500. The application management circuitry 506 requests (508) application usage data from an application usage database 510. The application usage database 510 may be stored in the memory 504 or in a remote server or storage device. The application usage database 510 may include data describing the most commonly used applications, the times when each application available at the edge server 500 was most frequently accessed, an overall popularity ranking of each available application, and other data related to the historical usage of each available application. The application management circuitry 506 receives (512) the requested application usage data from the application usage database 510.
[0031] Based on the application usage data, the application management circuitry 506 may determine which applications are likely to be accessed in several ways. The application management circuitry 506 may compare the current date, day of the week, or time of day with the application usage data to identify applications that are frequently accessed at the same time of day or on the same day of the week. The application management circuitry 506 may also determine the number of user devices that accessed each application, or the ratio of the number of active instances of each application to the total number of user devices currently connected to the edge server 500. The application management circuitry 506 may further consider the historical number of user devices connected to the edge server 500 to predict the number of user devices that will access each application in the future.
[0032] To conserve system resources, application management circuitry 506 may compare the determined or predicted number of user devices that will access the application with a threshold number of user devices. Only if the determined or predicted number of user devices meets or exceeds the threshold number of user devices will application management circuitry 506 determine that the application is likely to be accessed. Additionally, application management circuitry 506 may determine only those applications that are likely to be used within a threshold amount of time from the current time. If application management circuitry 506 determines that the application is likely to be accessed by a threshold number of user devices within the threshold amount of time, application management circuitry 506 determines whether the application is currently active at edge server 500. If the application is not currently active, application management circuitry 506 reads the application from inactive memory 516 and transmits instructions to memory 504 to launch the application (514). The application is then placed in a memory resident state and placed in cache memory 520 (518).
[0033] The control circuitry 502 receives (522) a request from a user device to access an application using the transceiver circuitry 524. The transceiver circuitry 524 comprises a network connection (such as an Ethernet connection, a WiFi connection, a mobile broadband interface, or a connection employing any other suitable networking protocol) via which data may be transmitted to and received from a remote device. The transceiver circuitry 524 then transmits (526) the request to the application management circuitry 506. The application management circuitry 506 identifies from the request the specific application requested to be accessed by the user device. For example, the request may include an application identifier (e.g., a name or unique ID number) that may be extracted from the request. Once the requested application is identified, the application management circuitry 506 determines whether the requested application is currently active. The application management circuitry 506 queries (528) the active memory 530 to determine whether the application is currently active. If the requested application is not currently active, the application management circuitry queries cache memory 520 to determine whether the application is currently memory resident (532). If the requested application is currently memory resident, the application management circuitry 506 brings the application out of memory resident and places it in active memory 530 (534). If the application is not currently active and is not currently memory resident, the application management circuitry 506 queries inactive memory 516 to determine whether the application is available on edge server 500 (536). If the application is available, the application management circuitry 506 launches the application. The application management circuitry 506 may place the launched application in cache memory 520 while all associated files are loaded and system resources are allocated to the application (538a).Once that process is completed, the application is placed into active memory 534. Alternatively, the application management circuitry 506 may place the application directly into active memory 530 538b.
[0034] Once the requested application is active, the application data is transmitted (540) from the active memory 530 to the application processing circuitry 542. The application processing circuitry 542 may include one or more runtime environments in which various applications may be executed. For example, the application processing circuitry 542 may be a game engine or a VR rendering engine. Once processed and rendered for output to the user device, the application data is transmitted (544) from the application processing circuitry 542 to the transceiver circuitry 524. The transceiver circuitry 524 then transmits (548) the processed and rendered application data to the requesting user device.
[0035] The edge server 500 may monitor the connection with each device. If it is determined that the connection between the edge server 500 and the user device has been lost or will soon be lost, the edge server 500 may determine that the user device will be connected to or has already established a connection with another edge server in the cloud computing environment. The application management circuitry 506 may query the network topology circuitry 552 to identify the edge server to which the user device is connected or will soon be connected (550). For example, the network topology circuitry 552 may track the movement of each user device as well as the signal strength between the edge server 500 and each user device. The network topology circuitry 552 may also store or have access to the physical locations of other edge servers in the cloud computing environment. The network topology circuitry 552 may calculate the physical location of the user device by triangulation using the signal strength of the connection between the edge server 500 and the user device before and after the movement is detected. Using the physical location of the user device, further movement of the user device informs the network topology network 552 of other edge servers to which the user device may soon connect. If the connection between the edge server 500 and the user device is lost, the network topology network 552 can use the last known physical location and the last known heading to determine the most likely edge server to which the user device is currently connected.
[0036] Once the edge server to which the user device is connected or will soon be connected (e.g., edge server 554) is identified, the network topology circuitry 552 transmits (556) the identifier of the edge server 554 to the application management circuitry 506. The application management circuitry 506 directs a message including an identifier of the application accessed by the user device to the edge server 554 and transmits (558) the message to the transceiver circuitry 524, which in turn transmits (560) the message to the edge server 554. The transmission may also include session data regarding the application session associated with the user device. The application management circuitry 506 may request (562) and receive (564) the session data from the session data management circuitry 566. As will be discussed below in connection with FIG. 6, the edge server 554 determines whether the identified application is active at the edge server 554 and preemptively launches the application if necessary.
[0037] FIG. 6 is a block diagram illustrating components of an edge server and data flows between them in which applications according to some embodiments of the present disclosure will be used. Edge server 600 is another edge server in the same cloud computing environment as edge server 500 and includes the same components, allowing it to provide services in the same capacity and perform the same functions as edge server 500. Thus, any function described above in connection with FIG. 5 as being performed by edge server 500 may be performed by edge server 600 if a user device initially connects to the cloud computing environment through edge server 600. Similarly, any function described below in connection with FIG. 6 may be performed by edge server 500 if a user device initially connected to edge server 600 subsequently connects to edge server 500.
[0038] Similar to edge server 500 above, edge server 600 includes control circuitry 602 and memory 604. Control circuitry 602 may be based on any suitable processing circuitry, including control circuitry and memory circuitry, which may be located on a single integrated circuit or may be separate components. As referred to herein, processing circuitry should be understood to mean circuitry based on one or more microprocessors, microcontrollers, digital signal processors, programmable logic devices, field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), etc., and may include multi-core processors (e.g., dual-core, quad-core, hexa-core, or any suitable number of cores). In some embodiments, the processing circuitry may be distributed across multiple separate processors or processing units, such as multiple processing units of the same type (e.g., two Intel Core i7 processors) or multiple different processors (e.g., an Intel Core i5 processor and an Intel Core i7 processor). In some embodiments, one or more of the functions described as being performed by control circuitry 602 or any of its components may be performed by control circuitry resident on another device. For example, edge server functionality in a cloud computing environment, including edge server 600, may be organized by one or more hierarchically superior devices. Memory 604 may be any suitable electronic storage device, such as random access memory, read-only memory, a hard drive, an optical drive, a solid-state device, a quantum storage device, or any other suitable fixed or removable storage device, and / or any combination thereof.
[0039] The edge server 600 may be similar to the edge server 554 described above in connection with FIG. 5 in that the edge server 600 uses the transceiver circuitry 608 to receive (606) a transmission from another edge server 610 identifying an application being accessed by a user device that has recently connected or will soon connect to the edge server 600. The transmission may also include session data regarding an application session associated with the user device. Like the transceiver circuitry 524, the transceiver circuitry 608 comprises a network connection over which data may be transmitted to and received from a remote device, such as an Ethernet connection, a WiFi connection, a mobile broadband interface, or a connection employing any other suitable networking protocol. The transceiver circuitry 608 then transmits (612) the session data to the session data management circuitry 614 and transmits (616) the application identifier to the application management circuitry 618.
[0040] The application management circuitry 618 determines whether the identified application is currently active in the edge server 600. The application management circuitry 618 queries the active memory 622 to determine whether the application is active (620). If the application is not active, the application management circuitry 618 queries the cache memory 626 to determine whether the application is currently in a memory resident state (624). If the application is in a memory resident state, the application management circuitry 618 retrieves the application from the memory resident state, applies parameters associated with the user device to the application, and initiates a session associated with the user device for the application based on the session data received from the edge server 610. The application management circuitry 618 then places the application in the active memory 622 (628).
[0041] If the application is not active and not memory resident, the application management circuitry 618 queries inactive memory 632 to determine whether the application is available on the edge server 600 (630). If the application is available, the application management circuitry 618 launches the application. The application management circuitry 618 may then place the application in cache memory 626 while associated application data is loaded and system resources are allocated (634a). Once that process is complete, the application may be moved to active memory 622 (628). Alternatively, the application management circuitry 618 may place the application directly into active memory 622 (634b).
[0042] When a user device connects to the edge server 600, the edge server 600 may receive a request from the user device to access an application using the transceiver circuitry 608 (636). The transceiver circuitry 608 then transmits the request to the application management circuitry 618 (638). In response, the application management circuitry 618 transmits a request to the active memory 622 to begin executing the application (640). The application data is transmitted from the active memory 622 to the application processing circuitry 644 (642). Like the application processing circuitry 542, the application processing circuitry 644 may include one or more runtime environments in which various applications may be executed. For example, the application processing circuitry 644 may be a game engine or a VR rendering engine. Once processed and rendered for output to the user device, the application data is transmitted from the application processing circuitry 644 to the transceiver circuitry 608 (646). The transceiver circuitry 608 then transmits (648) the processed and rendered application data to the requesting user device.
[0043] In some embodiments, to further reduce lag time and buffering as a user device moves from edge server 500 to edge server 600, user input, session data, and other application data may be synchronized between edge server 500 and edge server 600 for a period of time prior to loss of connection between edge server 500 and the user device. Edge server 600 can then resume serving applications to the user device without having to wait for the most recent session data from edge server 500 to be synchronized.
[0044] 7 is a flowchart depicting an illustrative process 700 for fast start of an application in a cloud computing environment according to some embodiments of the present disclosure. Process 700 may be implemented on control circuitry 502, control circuitry 602, or a combination thereof. In addition, one or more actions of process 700 may be incorporated within or combined with one or more actions of any other process or embodiment described herein.
[0045] At 702, the control circuitry identifies applications that are likely to be accessed at the edge of the cloud computing environment. This may be accomplished using the methods described below in connection with Figures 8 and 9. At 704, the control circuitry launches the identified application at the edge. This may include reading and loading associated media files or other auxiliary data. For example, the application may be a video game. Launching the video game may require reading from memory cut scene videos and other cinematic content, and audio files for level music and sound effects. These data are large and may require a significant amount of time to read and load into memory for use by the video game.
[0046] At 706, when an application is launched, the control circuitry places the application in a memory resident state. For example, the application may be launched within a virtual machine. Once the application is fully loaded, the virtual machine may be put to sleep or hibernation, so that the loaded application may be instantly accessed when the virtual machine is awakened from the sleep or hibernation state. At 708, the control circuitry determines whether a request to access the application has been received from a user device. For example, the control circuitry may monitor incoming transmissions for application requests. If an application request is received, a specific application is identified from the request. The control circuitry then determines whether the application identified in the request is an application that has been placed in a memory resident state.
[0047] If no request has been received ("no" at 708), the control circuitry continues to monitor for such a request. If a request has been received ("yes" at 708), the control circuitry takes the application from a memory resident state and places it in an active state at 710. For example, the control circuitry may wake up the virtual machine in which the application is loaded from a sleep or hibernation state. Once the application is in the active state, the control circuitry applies parameters associated with the user of the user device at 712. For example, the control circuitry may access a user profile associated with the user. The user profile may include information related to a specific application, such as interface preferences and custom shortcuts. If the application is a video game, the user profile may include preferred music tracks, avatar preferences, and other game-related data that is not session specific.
[0048] The actions or descriptions of Figure 7 may be used with any other embodiment of the present disclosure. In addition, the actions and descriptions described in connection with Figure 7 may be performed in alternative orders or in parallel as suitable to further the objectives of the present disclosure.
[0049] 8 is a flowchart depicting an illustrative process 800 for determining that an application will likely be accessed within a threshold time period according to some embodiments of the present disclosure. Process 800 may be implemented on control circuitry 502, control circuitry 602, or a combination thereof. In addition, one or more actions of process 800 may be incorporated within or combined with one or more actions of any other process or embodiment described herein.
[0050] At 802, the control circuitry initializes a counter variable N, setting its value to 1, a variable T representing the number of applications used at the edge, and an array or data structure {A} representing a list of applications likely to be accessed. At 804, the control circuitry retrieves historical usage for the Nth application. The historical usage data may include the number of user devices that accessed the Nth application at various times of a day, application popularity as a ratio of user devices that accessed the Nth application at a given time to the total number of user devices connected to the edge server at that time, or any other data or records indicative of usage patterns for the Nth application. At 806, the control circuitry predicts, based on the historical usage data and the current time, whether the Nth application will be accessed within a threshold period, such as 10 minutes, 15 minutes, or 30 minutes, depending on the overall system resources available at the edge server. For example, based on the historical usage data, it may be predicted that the Nth application will be accessed by one or more user devices over an hour starting at noon. If the current time is 10:00 a.m., launching the Nth application and keeping it memory resident for two hours before any user device requests access to the Nth application may be a waste of system resources. However, if the current time is 11:45 a.m., there is a high probability that at least one user device will request access to the Nth application within 15 minutes.
[0051] At 808, the control circuitry determines whether the Nth application is predicted to be used within the threshold period. If so ("yes" at 808), then at 810 the control circuitry adds the Nth application or its identifier to {A}. After adding the Nth application to {A}, or if the Nth application is not predicted to be used within the threshold period ("no" at 808), then at 812 the control circuitry determines whether N is equal to T, meaning that all available applications are predicted to be used. If N is not equal to T ("no" at 812), then at 814 the control circuitry increments its value of N by 1 and processing returns to 804. If N is equal to T ("yes" at 812), then the process ends. In some embodiments, the control circuitry may wait for a period of time and then repeat process 800.
[0052] The actions or descriptions of Figure 8 may be used with any other embodiment of the present disclosure. In addition, the actions and descriptions described in connection with Figure 8 may be performed in alternative orders or in parallel as suitable to further the objectives of the present disclosure.
[0053] 9 is a flowchart depicting a second illustrative process 900 for determining that an application will likely be accessed within a threshold time period according to some embodiments of the present disclosure. Process 900 may be implemented on control circuitry 502, control circuitry 602, or a combination thereof. In addition, one or more actions of process 900 may be incorporated within or combined with one or more actions of any other process or embodiment described herein.
[0054] At 902, the control circuitry determines the number of user devices currently connected to the edge. For example, the control circuitry may track the number of simultaneous connections made with external devices. At 904, the control circuitry determines the ratio of the average number of user devices accessing an application at a given time to the total number of user devices connected to the edge at that given time. For example, if an average of 30 users are accessing a particular application out of 100 user devices connected to the edge at noon, the ratio is determined to be 3:10. At 906, the control circuitry calculates a predicted number of user devices out of the user devices currently connected to the edge that will access the application based on the ratio. For example, based on the 3:10 ratio above, the control circuitry may predict that 300 user devices out of 1,000 user devices currently connected to the edge will access the application.
[0055] At 908, the control circuitry determines whether the predicted number of user devices exceeds a threshold number of user devices. To conserve system resources, the edge server may not preemptively launch a resource-intensive application unless a sufficiently large number of user devices are predicted to access that application. If the predicted number of user devices does not exceed the threshold ("No" at 908), processing returns to 902. If the predicted number now exceeds the threshold ("Yes" at 908), then at 910 the control circuitry determines that the application is likely to be accessed.
[0056] The actions or descriptions of Figure 9 may be used with any other embodiment of the present disclosure. In addition, the actions and descriptions described in connection with Figure 9 may be performed in alternative orders or in parallel as suitable to further the objectives of the present disclosure.
[0057] 10 is a flowchart depicting an illustrative process 1000 for transferring an active application session from a first edge of a cloud computing environment to a second edge of the cloud computing environment in accordance with some embodiments of the present disclosure. Process 1000 may be implemented on control circuitry 502, control circuitry 602, or a combination thereof. In addition, one or more actions of process 1000 may be incorporated within or combined with one or more actions of any other process or embodiment described herein.
[0058] At 1002, the control circuitry determines whether a user device associated with an application at a first edge will be connected to a second edge of the cloud computing environment within a threshold period of time. For example, the control circuitry may use positioning and movement data (e.g., GPS location data, accelerometer data, inertial motion data) from each user device or may derive a location for each user device based on the signal strength and signal directionality of the connection with each device. The signal strength of the connection between each device may be sampled at multiple intervals, whereby changes in signal strength resulting from changes in the user device's location may be used to triangulate the location of the user device and extrapolate the path of the user device's movement. Once the location and movement of the user device is determined, the control circuitry may determine whether the user device will move out of the transmission range of the first edge and into the transmission range of the second edge, and, if applicable, the amount of time that will elapse before the user device loses its connection with the first edge and connects to the second edge. The control circuitry may compare this time to a threshold amount of time, such as one minute. If the user device will be connected to the second edge within the threshold period ("yes" at 1002), then at 1004 the control circuitry synchronizes session data for an application associated with the user device with the second edge. For example, the first edge may transmit session data to the second edge. The first edge may make a single transmission or may maintain a continuous transmission (e.g., a data stream) with the second edge and provide live session data to the second edge such that a user of the user device continues to interact with the application.
[0059] At 1006, the control circuitry determines whether the application is currently active at the second edge. This may be accomplished using the methods described above in connection with Figures 5 and 6. If the application is not currently active at the second edge ("No" at 1006), then at 1008, the control circuitry launches the application at the second edge. Once the application is launched, or if the application is already active at the second edge ("Yes" at 1006), then at 1010, the control circuitry applies parameters associated with the user to the application at the second edge. This may include user preferences for applications that are not specific to the current session. At 1012, the control circuitry uses the synchronized session data to initiate a session at the second edge for the application associated with the user device.
[0060] The actions or descriptions of Figure 10 may be used with any other embodiment of the present disclosure. In addition, the actions and descriptions described in connection with Figure 10 may be performed in alternative orders or in parallel as suitable to further the objectives of the present disclosure.
[0061] 11 is a flowchart depicting an illustrative process 1100 for managing an application upon termination of an application session according to some embodiments of the disclosure. Process 1100 may be implemented on control circuitry 502, control circuitry 602, or a combination thereof. In addition, one or more actions of process 1100 may be incorporated within or combined with one or more actions of any other process or embodiment described herein.
[0062] At 1102, the control circuitry detects that a user has terminated a session for an application. For example, the control circuitry may detect that the user device is no longer connected to the cloud computing environment through any edge server. Alternatively, an application termination signal may be received from the user device. At 1104, the control circuitry determines whether the application is likely to be accessed by other users. This may be accomplished using the methods described above in connection with FIGS. 8 and 9. If the application is likely to be accessed by other users ("yes" at 1104), then at 1104, the control circuitry determines whether a user device associated with the application at a second edge of the cloud computing environment will be connected to the edge within a threshold period of time. This may be accomplished using the methods described above in connection with FIG. 10. If a user device associated with the application at a second edge of the cloud computing environment will be connected to the edge within a threshold period of time ("yes" at 1106), then at 1108, the control circuitry applies the current state of the application at the second edge to the application. The control circuitry then synchronizes, at 1110, session data for the application associated with the user device at the second edge with the edge. This may be accomplished using the method described above in connection with FIG. 10. If another user device associated with the application at the second edge will not connect to the edge within a threshold period ("no" at 1106), the control circuitry returns the application to a memory resident state at 1112. However, if the application is no longer likely to be accessed by other users ("no" at 1104), the control circuitry closes the application at 1114.
[0063] The actions or descriptions of Figure 11 may be used with any other embodiment of the present disclosure. In addition, the actions and descriptions described in connection with Figure 11 may be performed in alternative orders or in parallel as suitable to further the objectives of the present disclosure.
[0064] In some embodiments, a user device may switch between different cloud computing environments. For example, the user device may be a mobile device (e.g., a smartphone) that is initially connected to the edge of a mobile broadband network (e.g., a 5G network). The user device may move within range of a wireless network (e.g., WiFi) access point. Many mobile devices are configured to prefer to transmit data via a WiFi connected mobile broadband connection because many subscription plans limit the amount of data a user can transmit or receive. When the user device moves within range of a WiFi access point, the mobile broadband network edge may initiate any of the processes described above with an edge server that serves the WiFi access point.
[0065] In some embodiments, application sessions may be transferred between user devices. For example, a first user device may be a mobile device with limited available power. If the power is too low, the device may shut down while the user is still attempting to use the application. If a second user device associated with the same user is located in close proximity to the first user device (e.g., a device that supports accessing applications such as a gaming console on the same network, e.g., the same LAN, as the first device), the first device may transmit an intent to switch signal to the edge server to initiate the switch. For example, the intent to switch signal or IP packet includes information to inform the edge server or a QoS service associated with the edge server (or a service that the application is utilizing) of the need to initiate the switch. Such a packet may include information about the second device, such as its destination IP address or other unique address, such as a MAC address, to enable the edge server to initiate a connection with the second user device and synchronize session data for the application with the second user device in a manner similar to that described above in connection with FIG. 10. The user may then continue to use the second user device and use the application. Alternatively, an application executing on the first device may prompt the user to initiate such a switch (in response to the battery level dropping below a predetermined threshold, such as 20%). The application may use other parameters and prompt the user to switch. For example, the application may prompt the user to switch in response to the battery level dropping below a predetermined threshold and in response to detecting that the application (e.g., a gaming application) has completed a level and is ready to launch the next level.In one embodiment, a prompt to switch or transfer an existing session to another device is simply presented to the user in response to determining that a second device is available for user access and that the second device features faster hardware or may provide a better user experience (e.g., features a larger screen or is connected to a larger screen such as a television). For example, in response to detecting that a PS5 is available at the user location (e.g., on the same Wi-Fi network as the first user device), the prompt may be displayed immediately, or after the current level of the game is completed, or during a cut scene, or in response to the user launching a menu (e.g., a map for exploring the level of the game the user is playing). Prompts to detect and switch can be distributed based on parameters used to initiate such switching. For example, in response to a battery level falling below a predetermined threshold, the mobile device may check whether a second compatible device or devices are present and prompt the user to select a device for communicating such information to an edge service or the QoS service mentioned above. However, the prompt may also be triggered by a QoS service or an edge computing server based on the user's device being detected or already stored within the user device.
[0066] Local network privacy controls are native to many operating systems (e.g., iOS 14). Applications that are granted access by the user can collect information about nearby devices and create a profile to store such information. For example, iOS devices utilize Apple's Bonjour service discovery, allowing applications to discover nearby services and advertise their own services. Available device types (e.g., PS5) on the local area network allow the QoS service access to such information and recommend switching to another device. Thus, available devices in a user's profile can be prioritized and sorted accordingly based on hardware specifications and user experience level. In such a case, the QoS service can always check for the first device on the list (a device different from the current device utilized by the user).
[0067] The processes described above are intended to be illustrative, not limiting. Those skilled in the art will understand that the processes discussed herein may be omitted, modified, combined, and / or rearranged, and any additional steps may be implemented without departing from the scope of the present invention. More generally, the above disclosure is meant to be illustrative, not limiting. Only the following claims are meant to set boundaries on what the present invention includes. Furthermore, it should be noted that the features and limitations described in any one embodiment may be applied to any other embodiment herein, and that the flow charts or examples related to one embodiment may be combined with any other embodiment in a suitable manner, may be performed in a different order, or may be performed in parallel. In addition, the systems and methods described herein may be performed in real time. It should also be noted that the systems and / or methods described above may be applied to or used in accordance with other systems and / or methods. The following sets of items are contemplated as part of the present invention: 1. A method for fast start of an application in a cloud computing environment, the method comprising: Identifying applications at an edge of a cloud computing environment that are likely to be accessed; Launching an application at the edge; Placing the application in a memory resident state; receiving a request from a user device to access an application; In response to receiving a request to access the application, Taking the application out of memory resident state; applying parameters associated with a user of the user device to the application; A method comprising: 2. Identifying applications that are likely to be accessed at the edge of a cloud computing environment Retrieving historical usage for a plurality of applications at an edge; predicting that at least one application of the plurality of applications will be used within a threshold time period based on historical application usage and a current time; The method according to item 1, comprising: 3. Identifying applications that are likely to be accessed at the edge of a cloud computing environment determining a number of user devices currently connected to the edge; determining a ratio of an average number of user devices accessing the application at a given time to a total number of user devices connected to the edge at the given time; Calculating a predicted number of user devices among the user devices currently connected to the edge that will access the application based on the ratio; determining whether the projected number of user devices exceeds a threshold number of user devices; The method according to item 1, comprising: 4. Launching an application at the edge initializing a virtual machine for hosting the application; Loading all the data associated with the application into the virtual machine. The method according to item 1, comprising: 5. Placing the application in a memory resident state includes placing the virtual machine in a hibernated state; 5. The method of claim 4, wherein taking the application out of memory resident state includes waking the virtual machine from a hibernation state. 6. Determining whether a user device associated with the application will be connected to a second edge of the cloud computing environment within a threshold time period; in response to determining that a user device associated with the application will be connected to the second edge within the threshold period, synchronizing session data for the application associated with the user device with the second edge; The method of claim 1, further comprising: 7. Determining whether an application is currently active on the second edge; In response to determining that the application is currently active at the second edge, initiating a session for the application associated with the user device at the second edge using the synchronized session data; In response to determining that the application is not currently active on the second edge, launching an application at a second edge; applying the parameters associated with the user to an application at the second edge; initiating a session for an application associated with the user device at a second edge using the synchronized session data; The method according to item 6, further comprising: 8. Detecting when a user has terminated a session with the application; Determining whether the application is likely to be accessed by other users; The method of claim 1, further comprising: 9. The method of claim 8, further comprising closing the application in response to determining that the application is no longer likely to be accessed by other users. 10. In response to determining that the application is likely to be accessed by other users, determining whether a user device associated with an application at a second edge of the cloud computing environment will be connected to the edge within a threshold period of time; In response to determining that a user device associated with an application at a second edge of the cloud computing environment will be connected to the edge within a threshold period of time. applying a current state of the application at the second edge to the application; synchronizing session data for an application associated with the user device at the second edge with the edge; returning the application to a memory resident state in response to determining that a user device associated with the application at a second edge of the cloud computing environment will not be connected to the edge within a threshold period of time; The method of claim 8, further comprising: 11. A system for fast start of an application in a cloud computing environment, the system comprising: an input / output network; Control circuit network and The control circuitry comprises: Identifying applications at an edge of a cloud computing environment that are likely to be accessed; Launching an application at the edge; Placing the application in a memory resident state; receiving a request from a user device to access an application using an input / output network; In response to receiving a request to access the application, Taking the application out of memory resident state; applying parameters associated with a user of the user device to the application; A system configured to: 12. Control circuitry configured to identify applications at an edge of a cloud computing environment that are likely to be accessed, comprising: Retrieving historical usage for a plurality of applications at an edge; predicting that at least one application of the plurality of applications will be used within a threshold time period based on historical application usage and a current time; Item 12. The system of item 11, further configured to: 13. Control circuitry configured to identify applications at an edge of a cloud computing environment that are likely to be accessed, comprising: determining a number of user devices currently connected to the edge; determining a ratio of an average number of user devices accessing the application at a given time to a total number of user devices connected to the edge at the given time; Calculating a predicted number of user devices among the user devices currently connected to the edge that will access the application based on the ratio; determining whether the projected number of user devices exceeds a threshold number of user devices; Item 12. The system of item 11, further configured to: 14. Control circuitry configured to launch an application at an edge, comprising: initializing a virtual machine for hosting the application; Loading all the data associated with the application into the virtual machine. Item 12. The system of item 11, further configured to: 15. The control circuitry configured to place the application in a memory resident state is further configured to place the virtual machine in a hibernated state; Item 15. The system of item 14, wherein the control circuitry configured to take the application out of a memory resident state is further configured to wake the virtual machine from a hibernation state. 16. The control circuit network is determining whether a user device associated with the application will be connected to a second edge of the cloud computing environment within a threshold time period; in response to determining that a user device associated with the application will be connected to the second edge within the threshold period, synchronizing session data for the application associated with the user device with the second edge; Item 12. The system of item 11, further configured to: 17. The control circuit network is determining whether an application is currently active on the second edge; In response to determining that the application is currently active at the second edge, initiating a session for the application associated with the user device at the second edge using the synchronized session data; In response to determining that the application is not currently active on the second edge, launching an application at a second edge; applying the parameters associated with the user to an application at the second edge; initiating a session for an application associated with the user device at a second edge using the synchronized session data; Item 17. The system of item 16, further configured to: 18. The control circuit network is Detecting that a user has terminated a session with an application; Determining whether the application is likely to be accessed by other users; Item 12. The system of item 11, further configured to: 19. The system of item 18, wherein the control circuitry is further configured to close the application in response to determining that the application is no longer likely to be accessed by other users. 20. The control circuit network is In response to determining that the application is likely to be accessed by other users, determining whether a user device associated with an application at a second edge of the cloud computing environment will be connected to the edge within a threshold period of time; In response to determining that a user device associated with an application at a second edge of the cloud computing environment will be connected to the edge within a threshold period of time. applying a current state of the application at the second edge to the application; synchronizing session data for an application associated with the user device at the second edge with the edge; returning the application to a memory resident state in response to determining that a user device associated with the application at a second edge of the cloud computing environment will not be connected to the edge within a threshold period of time; 20. The system of claim 18, further configured to: 21. A system for fast initiation of applications in a cloud computing environment, the system comprising: A means for identifying applications at an edge of a cloud computing environment that are likely to be accessed; A means for launching an application at an edge; A means for placing the application in a memory resident state; means for receiving a request from a user device to access an application; In response to receiving a request to access the application, Taking the application out of memory resident state; applying parameters associated with a user of the user device to the application; and the means to The system comprises: 22. At the edge of a cloud computing environment, a means for identifying applications that are likely to be accessed includes: A means for retrieving historical usage for a plurality of applications at the edge; means for predicting that at least one application of the plurality of applications will be used within a threshold time period based on historical application usage and a current time; 22. The system of claim 21, further comprising: 23. At the edge of a cloud computing environment, a means for identifying applications that are likely to be accessed includes: means for determining a number of user devices currently connected to an edge; means for determining a ratio of an average number of user devices accessing an application at a given time to a total number of user devices connected to an edge at a given time; means for calculating a predicted number of user devices among the user devices currently connected to the edge that will access the application based on the ratio; means for determining whether a projected number of user devices exceeds a threshold number of user devices; 22. The system of claim 21, further comprising: 24. At the edge, the means of launching applications is a means for initializing a virtual machine for hosting an application; means for loading into the virtual machine all data associated with the application; 22. The system of claim 21, further comprising: Placing an application in a memory resident state includes placing the virtual machine in a hibernated state; 25. The system of claim 24, wherein taking the application out of a memory resident state includes waking the virtual machine from a hibernation state. 26. Means for determining whether a user device associated with the application will be connected to a second edge of the cloud computing environment within a threshold time period; means for synchronizing session data for the application associated with the user device with the second edge in response to determining that the user device associated with the application will be connected to the second edge within the threshold period; 22. The system of claim 21, further comprising: 27. A means for determining whether an application is currently active on a second edge; means for initiating a session for an application associated with the user device at the second edge using the synchronized session data in response to determining that the application is currently active at the second edge; In response to determining that the application is not currently active on the second edge, launching an application at a second edge; applying the parameters associated with the user to an application at the second edge; initiating a session for an application associated with the user device at a second edge using the synchronized session data; and 27. The system of claim 26, further comprising: 28. A means for detecting when a user has terminated a session with the application; A means for determining whether an application is likely to be accessed by other users; 22. The system of claim 21, further comprising: 29. The system of claim 28, further comprising means for closing the application in response to determining that the application is no longer likely to be accessed by other users. 30. In response to determining that the application is likely to be accessed by other users, determining whether a user device associated with an application at a second edge of the cloud computing environment will be connected to the edge within a threshold period of time; In response to determining that a user device associated with an application at a second edge of the cloud computing environment will be connected to the edge within a threshold period of time. applying a current state of the application at the second edge to the application; synchronizing session data for an application associated with the user device at the second edge with the edge; returning the application to a memory resident state in response to determining that a user device associated with the application at a second edge of the cloud computing environment will not be connected to the edge within a threshold period of time; 29. The system of claim 28, further comprising means for performing the steps: 31. A non-transient computer readable medium having encoded thereon non-transient computer readable instructions for rapid initiation of applications in a cloud computing environment, the instructions, when executed by control circuitry, Identifying applications at an edge of a cloud computing environment that are likely to be accessed; Launching an application at the edge; Placing the application in a memory resident state; receiving a request from a user device to access an application using an input / output network; In response to receiving a request to access the application, Taking an application out of memory and applying parameters associated with a user of the user device to the application; A non-transitory computer readable medium for causing control circuitry to perform the steps of: 32. Executing instructions at an edge of a cloud computing environment to identify applications that are likely to be accessed includes: Retrieving historical usage for a plurality of applications at an edge; predicting that at least one application of the plurality of applications will be used within a threshold time period based on historical application usage and a current time; 32. The non-transitory computer readable medium of claim 31, further causing the control circuitry to: 33. Executing instructions at an edge of a cloud computing environment to identify applications that are likely to be accessed includes: determining a number of user devices currently connected to the edge; determining a ratio of an average number of user devices accessing the application at a given time to a total number of user devices connected to the edge at the given time; Calculating a predicted number of user devices among the user devices currently connected to the edge that will access the application based on the ratio; determining whether the projected number of user devices exceeds a threshold number of user devices; 32. The non-transitory computer readable medium of claim 31, further causing the control circuitry to: 34. At the edge, the execution of an instruction to launch an application is initializing a virtual machine for hosting the application; Loading all the data associated with the application into the virtual machine. 32. The non-transitory computer readable medium of claim 31, further causing the control circuitry to: 35. Execution of an instruction to place an application in a memory resident state causes the control circuitry to place the virtual machine in a quiesced state; Item 35. The non-transitory computer-readable medium of item 34, wherein execution of the instructions to take the application out of a memory-resident state causes the control circuitry to wake the virtual machine from a hibernation state. 36. Execution of orders is determining whether a user device associated with the application will be connected to a second edge of the cloud computing environment within a threshold time period; in response to determining that a user device associated with the application will be connected to the second edge within the threshold period, synchronizing session data for the application associated with the user device with the second edge; 32. The non-transitory computer readable medium of claim 31, further causing the control circuitry to: 37. Execution of orders is determining whether an application is currently active on the second edge; In response to determining that the application is currently active at the second edge, initiating a session for the application associated with the user device at the second edge using the synchronized session data; In response to determining that the application is not currently active on the second edge, launching an application at a second edge; applying the parameters associated with the user to an application at the second edge; initiating a session for an application associated with the user device at a second edge using the synchronized session data; Item 37. The non-transitory computer readable medium of item 36, further causing control circuitry to: 38. Execution of orders is Detecting that a user has terminated a session with an application; Determining whether the application is likely to be accessed by other users; 32. The non-transitory computer readable medium of claim 31, further causing the control circuitry to: 39. The non-transitory computer-readable medium of item 38, wherein execution of the instructions further causes the control circuitry to close the application in response to determining that the application is no longer likely to be accessed by other users. 40. Execution of instructions is In response to determining that the application is likely to be accessed by other users, determining whether a user device associated with an application at a second edge of the cloud computing environment will be connected to the edge within a threshold period of time; In response to determining that a user device associated with an application at a second edge of the cloud computing environment will be connected to the edge within a threshold period of time. applying a current state of the application at the second edge to the application; synchronizing session data for an application associated with the user device at the second edge with the edge; returning the application to a memory resident state in response to determining that a user device associated with the application at a second edge of the cloud computing environment will not be connected to the edge within a threshold period of time; Item 39. The non-transitory computer readable medium of item 38, further causing control circuitry to: 41. A method for fast start of an application in a cloud computing environment, the method comprising: Identifying applications at an edge of a cloud computing environment that are likely to be accessed; Determining that the application is not currently running at the edge; Launching an application at the edge; Placing the application in a memory resident state; receiving a request from a user device to access an application; In response to receiving a request to access the application, Taking the application out of memory resident state; applying parameters associated with a user of the user device to the application; A method comprising: 42. Identifying applications that are likely to be accessed at the edge of a cloud computing environment includes: Retrieving historical usage for a plurality of applications at an edge; predicting that at least one application of the plurality of applications will be used within a threshold time period based on historical application usage and a current time; 42. The method according to claim 41, comprising: 43. Identifying applications that are likely to be accessed at the edge of a cloud computing environment includes: determining a number of user devices currently connected to the edge; determining a ratio of an average number of user devices accessing the application at a given time to a total number of user devices connected to the edge at the given time; Calculating a predicted number of user devices among the user devices currently connected to the edge that will access the application based on the ratio; determining whether the projected number of user devices exceeds a threshold number of user devices; 42. The method according to claim 41, comprising: 44. Launching an application at the edge initializing a virtual machine for hosting the application; Loading all the data associated with the application into the virtual machine. 44. The method according to any one of items 41 to 43, comprising: 45. Placing an application in a memory resident state includes placing the virtual machine in a hibernated state; Item 45. The method of item 44, wherein taking the application out of memory resident state includes waking the virtual machine from a hibernation state. 46. Determining whether a user device associated with the application will be connected to a second edge of the cloud computing environment within a threshold period; in response to determining that a user device associated with the application will be connected to the second edge within the threshold period, synchronizing session data for the application associated with the user device with the second edge; 46. The method according to any one of items 41-45, further comprising: 47. Determining whether an application is currently active on a second edge; In response to determining that the application is currently active at the second edge, initiating a session for the application associated with the user device at the second edge using the synchronized session data; In response to determining that the application is not currently active on the second edge, launching an application at a second edge; applying the parameters associated with the user to an application at the second edge; initiating a session for an application associated with the user device at a second edge using the synchronized session data; 47. The method of claim 46, further comprising: 48. Detecting when a user has terminated a session with an application; Determining whether the application is likely to be accessed by other users; 48. The method according to any one of items 41-47, further comprising: 49. The method of claim 48, further comprising closing the application in response to determining that the application is no longer likely to be accessed by other users. 50. In response to determining that the application is likely to be accessed by other users, determining whether a user device associated with an application at a second edge of the cloud computing environment will be connected to the edge within a threshold period of time; In response to determining that a user device associated with an application at a second edge of the cloud computing environment will be connected to the edge within a threshold period of time. applying a current state of the application at the second edge to the application; synchronizing session data for an application associated with the user device at the second edge with the edge; returning the application to a memory resident state in response to determining that a user device associated with the application at a second edge of the cloud computing environment will not be connected to the edge within a threshold period of time; 49. The method of claim 48, further comprising:
Claims
1. 1. A method for fast start of an application in a cloud computing environment, the method comprising: identifying applications at an edge of the cloud computing environment that are likely to be accessed; launching the application at the edge; placing said application in a memory resident state; receiving a request from a user device to access the application; In response to receiving the request to access the application, removing the application from the memory resident state; applying parameters associated with a user of the user device to the application; A method comprising:
2. Identifying applications at an edge of the cloud computing environment that are likely to be accessed includes: Retrieving historical usage for a plurality of applications at the edge; predicting that at least one application of the plurality of applications will be used within a threshold time period based on the historical application usage and a current time; The method of claim 1 , comprising:
3. Identifying applications at an edge of the cloud computing environment that are likely to be accessed includes: determining a number of user devices currently connected to the edge; determining a ratio of an average number of user devices accessing an application at a given time to a total number of user devices connected to the edge at the given time; calculating a predicted number of user devices among the user devices currently connected to the edge that will access the application based on the ratio; determining whether the projected number of user devices exceeds a threshold number of user devices; The method of claim 1 , comprising:
4. Launching the application at the edge includes: initializing a virtual machine for hosting the application; loading into said virtual machine all data associated with said application; The method of claim 1 , comprising:
5. placing the application in a memory resident state includes placing the virtual machine in a hibernated state; The method of claim 4 , wherein taking the application out of the memory resident state includes waking the virtual machine from the hibernation state.
6. determining whether a user device associated with the application will be connected to a second edge of the cloud computing environment within a threshold time period; in response to determining that the user device associated with the application will be connected to the second edge within the threshold period, synchronizing session data for the application associated with the user device with the second edge; The method of claim 1 further comprising:
7. determining whether the application is currently active on the second edge; initiating a session for the application associated with the user device at the second edge using the synchronized session data in response to determining that the application is currently active at the second edge; In response to determining that the application is not currently active on the second edge, launching the application on the second edge; applying a parameter associated with the user to the application at the second edge; and initiating a session for the application associated with the user device at the second edge using the synchronized session data; The method of claim 6 further comprising:
8. detecting when the user has terminated a session with the application; determining whether the application is likely to be accessed by other users; The method of claim 1 further comprising:
9. The method of claim 8 , further comprising: closing the application in response to determining that the application is no longer likely to be accessed by other users.
10. In response to determining that the application is likely to be accessed by other users, determining whether a user device associated with the application at the second edge of the cloud computing environment will be connected to the edge within a threshold time period; in response to determining that a user device associated with the application at a second edge of the cloud computing environment will be connected to the edge within the threshold time period; applying a current state of the application at the second edge to the application; synchronizing session data for the application associated with the user device at the second edge with the edge; returning the application to the memory resident state in response to determining that a user device associated with the application at the second edge of the cloud computing environment will not be connected to the edge within the threshold time period; The method of claim 8 further comprising:
11. 1. A system for fast start of applications in a cloud computing environment, the system comprising: an input / output network; Control circuit network and Equipped with The control circuitry includes: identifying applications at an edge of the cloud computing environment that are likely to be accessed; launching the application at the edge; placing said application in a memory resident state; receiving a request from a user device to access the application using the input / output circuitry; In response to receiving the request to access the application, removing the application from the memory resident state; applying parameters associated with a user of the user device to the application; A system configured to:
12. The control circuitry configured to identify applications at an edge of the cloud computing environment that are likely to be accessed, Retrieving historical usage for a plurality of applications at the edge; predicting that at least one application of the plurality of applications will be used within a threshold time period based on the historical application usage and a current time; The system of claim 11 , further configured to:
13. The control circuitry configured to identify applications at an edge of the cloud computing environment that are likely to be accessed, determining a number of user devices currently connected to the edge; determining a ratio of an average number of user devices accessing an application at a given time to a total number of user devices connected to the edge at the given time; calculating a predicted number of user devices among the user devices currently connected to the edge that will access the application based on the ratio; determining whether the projected number of user devices exceeds a threshold number of user devices; The system of claim 11 , further configured to:
14. The control circuitry includes: determining whether a user device associated with the application will be connected to a second edge of the cloud computing environment within a threshold time period; in response to determining that the user device associated with the application will be connected to the second edge within the threshold period, synchronizing session data for the application associated with the user device with the second edge; The system of claim 11 , further configured to:
15. The control circuitry includes: determining whether the application is currently active on the second edge; initiating a session for the application associated with the user device at the second edge using the synchronized session data in response to determining that the application is currently active at the second edge; In response to determining that the application is not currently active on the second edge, launching the application on the second edge; applying a parameter associated with the user to the application at the second edge; and initiating a session for the application associated with the user device at the second edge using the synchronized session data; The system of claim 14 , further configured to: