Search

US-12625538-B2 - Session preservation for automated power management

US12625538B2US 12625538 B2US12625538 B2US 12625538B2US-12625538-B2

Abstract

According to one aspect of the disclosure, a method comprises: receiving, by a first computing device, information about one or more applications running on a second computing device, the second computing device being one of a plurality of computing devices managed by the first computing device; determining, by the first computing device, whether to power down the second computing device based at least on an analysis of the information about the one or more applications; and responsive to a determination to shutdown the second computing device, sending, by the first computing device, a command to shutdown the second computing device, wherein the second computing device is configured to save state of the one or more applications to a storage device accessible to the plurality of computing devices.

Inventors

  • Yuri Kolesnikov
  • Adith Jayakar Hegde
  • Nitin Mehta
  • William Thomas George Charnell
  • Leo C. Singleton, IV
  • Balasubramanian Swaminathan

Assignees

  • CITRIX SYSTEMS, INC.

Dates

Publication Date
20260512
Application Date
20220721

Claims (17)

  1. 1 . A method comprising: receiving, by a first computing device, information about one or more applications running on a second computing device, the second computing device being one of a plurality of computing devices managed by the first computing device; determining, by the first computing device, whether to power down the second computing device based at least on an analysis of the information about the one or more applications; and responsive to a determination to power down the second computing device, sending, by the first computing device, a command to shutdown the second computing device, wherein the second computing device is configured to save state of the one or more applications to a storage device accessible to the plurality of computing devices; wherein the information about the one or more applications running on the second computing device includes identifiers of the one or more applications, wherein determining whether to power down the second computing device includes comparing the application identifiers to a list of application identifiers.
  2. 2 . The method of claim 1 , wherein the list of application identifiers includes identifiers of applications for which the second computing device is able to save state.
  3. 3 . The method of claim 1 , wherein the list of application identifiers includes identifiers of applications for which the second computing device is unable to save state.
  4. 4 . The method of claim 1 , wherein determining whether to power down the second computing device is further based on a time of day.
  5. 5 . The method of claim 1 , further comprising: determining, by the first computing device, a load of the second computing device, wherein determining whether to power down the second computing device is further based on the load of the second computing device.
  6. 6 . The method of claim 1 , further comprising: determining, by the first computing device, states of one or more sessions running on the second computing device, wherein determining whether to power down the second computing device is further based on the states of the one or more sessions running on the second computing device.
  7. 7 . The method of claim 1 , further comprising: receiving, by the first computing device, a request to extend a session hosted on a third computing device from the plurality of computing devices; and responsive to receiving the request to extend the session, determining, by the first computing device, not to power down the third computing device.
  8. 8 . The method of claim 1 , wherein at least one of the one or more applications is associated with a session, the method further comprising: receiving a request to access the at least one of the one or more applications; and sending a command to access the at least one of the one or more applications on a third computing device of the plurality of computing devices, the third computing device configured to restore the state of the at least one of the one or more applications saved on the storage device.
  9. 9 . A server device comprising: a processor; and a non-volatile memory storing computer program code that when executed on the processor causes the processor to execute a process comprising: receiving information about one or more applications running on a host machine, the host machine being one of a plurality of a host machines managed by the server device; determining whether to power down the host machine based at least on an analysis of the information about the one or more applications; and responsive to a determination to power down the host machine, sending a command to shutdown the host machine, wherein the host machine is configured to save state of the one or more applications to a storage device accessible to the plurality of host machines; wherein the information about the one or more applications running on the host machine includes identifiers of the one or more applications, wherein determining whether to power down the host machine includes comparing the application identifiers to a list of application identifiers.
  10. 10 . The server device of claim 9 , wherein the list of application identifiers includes identifiers of applications for which the host machine is able to save state.
  11. 11 . The server device of claim 9 , wherein the list of application identifiers includes identifiers of applications for which the host machine is unable to save state.
  12. 12 . The server device of claim 9 , wherein determining whether to power down the host machine is further based on a time of day.
  13. 13 . The server device of claim 9 , the process further comprising: determining a load of the host machine, wherein determining whether to power down the host machine is further based on the load of the host machine.
  14. 14 . The server device of claim 9 , the process further comprising: receiving a request to extend a session hosted on another host machine from the plurality of host machines; and responsive to receiving the request to extend the session, determining not to power down the another host machine.
  15. 15 . The server device of claim 9 , wherein at least one of the one or more applications is associated with a session, the process further comprising: receiving a request to access the at least one of the one or more applications; and sending a command to access the at least one of the one or more applications on another host machine of the plurality of host machines, the another host machine configured to restore the state of the at least one of the one or more applications saved on the storage device.
  16. 16 . A non-transitory machine-readable medium encoding instructions that when executed by one or more processors cause a process to be carried out, the process comprising: receiving, by a first computing device, information about one or more applications running on a second computing device from a plurality of computing devices managed by the first computing device; determining, by the first computing device, whether to power down the second computing device based at least on an analysis of the information about the one or more applications; and responsive to a determination to power down the second computing device, sending, by the first computing device, a command to shutdown the second computing device, wherein the second computing device is configured to save state of the one or more applications to a storage device accessible to the plurality of computing devices; wherein the information about the one or more applications running on the second computing device includes identifiers of the one or more applications, wherein determining whether to power down the second computing device includes comparing the application identifiers to a list of application identifiers.
  17. 17 . The non-transitory machine-readable medium of claim 16 , the process further comprising: determining, by the first computing device, a load of the second computing device, wherein determining whether to power down the second computing device is further based on the load of the second computing device.

Description

BACKGROUND Virtual desktop infrastructure (VDI) and desktop as a service (DaaS) systems enable users to access virtual applications and desktops hosted on remote machines using various types of client devices. The host machines can include physical desktop computers and servers within an on-premises (or “on-prem”) infrastructure and/or or virtual machines (VMs) running on top of an on-prem hypervisor or within a cloud-based system. A VDI/DaaS system can include a management service—which can be hosted on-premises or in a cloud-bases system—that is responsible for managing user access, connection brokering and optimization, and session management. Among other features, the management service may also power manage the host machines by, for example, issuing commands to power on host machines on demand to ensure the availability of virtual applications/desktops. To access a virtual application or desktop, a user can use a client device to initially connect to virtual application/desktop running on host machine selected and power managed by the management service. This is referred to as establishing a session. During the session, the user may perform various actions (or “work”) that alter the state of a single virtual application or of multiple applications running within a virtual desktop. For example, the user may create new documents, view/edit existing documents, arrange application windows, load or more websites within web browser, etc. During the session, the client device may be disconnected from the host machine (e.g., in response to a network interruption, user action, etc.) and the user can subsequently reconnect to the virtual application/desktop using the same client device or another client device and resume work with the same application state. That is, virtual applications and desktops may be stateful in nature. When the user has completed their work, the user can choose to save certain application state (e.g., documents created/edited during the session) to persistent storage (e.g., network-attached storage (NAS), cloud-based storage, a file share, etc.) and log off of the virtual application/desktop, thereby ending the session. SUMMARY It is appreciated herein that the stateful nature of virtual application/desktop sessions presents a challenge for automatically powering down host machines based on a schedule, load, or other criteria (e.g., for the purpose of reducing energy consumption or cloud system hosting costs). For example, powering down a machine running one or more virtual application/desktop sessions—whether in a connected or disconnected state—may result in loss of work (e.g., unsaved application state). Currently, manual intervention and session monitoring may be required to safely power down a host machine, relying on users of that machine to log off all of their virtual application/desktop sessions running thereon. There is a need for structures and techniques that enable automated power management within VDI/DaaS systems without loss of work. In particular, there is a need for automatically powering down host machines in a forceful/aggressive manner without loss of work. Disclosed embodiments enable automated power management within VDI/DaaS systems using session preservation and migration between host machines. In some embodiments, host machines can be configured to persist application state associated with particular user sessions to storage that is shared between host machines (e.g., NAS, cloud-based storage, a file share, etc.) and to restore the application state from the shared storage. This allows, for example, for the application state of a session hosted on a powered-down machine to be restored on another machine selected to host the session, including a machine that may have a different operating system (OS) image. Disclosed embodiments allow virtual application/desktop sessions to be migrated between host machines in a seamless or near-seamless fashion. In some embodiments, automated power management policies can be configured to exempt machines running specific applications from power-off actions. In some embodiments, sessions and/or host machines can be exempted from power-off actions in response to user requests. The power management techniques and structures disclosed herein find application in many types of systems are not limited to VDI/DaaS systems. It should be appreciated that individual elements of different embodiments described herein may be combined to form other embodiments not specifically set forth above. Various elements, which are described in the context of a single embodiment, may also be provided separately or in any suitable sub-combination. It should also be appreciated that other embodiments not specifically described herein are also within the scope of the following claims. BRIEF DESCRIPTION OF THE DRAWINGS The manner of making and using the disclosed subject matter may be appreciated by reference to the detailed description in connection with t