IP Library Granted Patent US 12,169,727
Granted Patent B2
US 12,169,727 · App. 17/147,140 · Granted Dec 17, 2024

Systems and methods to improve application performance

Inventors: Ajay Bukkapattana Lokesharadhya (Bengaluru, IN); Prabhjeet Singh Chawla (Bengaluru, IN); Syed Mansoor Pasha (Bengaluru, IN)
G06F9/45558G06F9/5083G06F11/1484G06F11/3433G06F2009/45562G06F2009/4557G06F2009/45591G06F2201/815G06F2209/5022
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,169,727
App. No.
17/147,140
Granted
Dec 17, 2024
Kind
B2
Abstract

Described embodiments provide systems and method for determining action insights to address, correct or fix application failures. A device can identify an assignment of a user to a virtual machine and the assignment can enable launch of an application with use of the same virtual machine on behalf of the user. The virtual machine can be one of a delivery group of virtual machines. A threshold can be determined for the virtual machine that indicates a likely failure of the virtual machine to launch the application based data about performance of the delivery group. The device can modify the assignment of a user from the virtual machine to another virtual machine of the delivery group based on a comparison of a load on the virtual machine and the determined threshold, so as to avoid failure of the application to launch.

Claims (70)

1. A method comprising:

identifying, by a computing device, an assignment of a user to a virtual machine, the assignment enables launch of an application with use of the same virtual machine on behalf of the user, and the virtual machine being one of a group of virtual machines;

determining, by the computing device, a threshold for a load level for the virtual machine, the threshold being indicative of likely failure of the virtual machine to launch the application based on historical data about performance and load levels of each virtual machine of the group of virtual machines launching the application;

modifying, by the computing device, the assignment of a user from the virtual machine to another virtual machine of the group based on a comparison of a load on the virtual machine and the determined threshold, so as to avoid failure of the application to launch;

transferring, by the computing device, the assignment of one or more sessions to the another virtual machine of the group of virtual machines to cause the another virtual machine to launch the application; and

launching, by the another virtual machine, the one or more sessions.

2. The method of claim 1 , comprising:

assigning, by the computing device, at least one threshold to each virtual machine of the group of virtual machines, the at least one threshold based on load levels causing failures during one or more sessions to the respective virtual machine.

3. The method of claim 1 , comprising:

generating, by the computing device responsive to the load of the virtual machine exceeding the threshold, a notification indicating a potential failure for at least one session to the virtual machine, the threshold indicating a load limit for the virtual machine.

4. The method of claim 1 , comprising:

comparing, by the computing device, load values for a first failure associated with the virtual machine and load values for a second failure associated with the virtual machine; and

modifying, by the computing device responsive to the comparison, the threshold for the virtual machine.

5. The method of claim 1 , comprising:

determining, by the computing device responsive to a failure for a session to the another virtual machine, each virtual machine of the group of virtual machines having a load greater than the threshold;

generating, by the computing device, a new virtual machine responsive to each virtual machine of the group of virtual machines having the load greater than the threshold, the new virtual machine added to the group of virtual machines; and

transferring, by the computing device, the assignment of the user from the another virtual machine to the new virtual machine.

6. The method of claim 1 , comprising:

monitoring, by the computing device using a failure model, an active load on each virtual machine of the group of virtual machines, wherein the failure model dynamically modifies the threshold responsive to subsequent failures associated with a respective virtual machine and the active load associated with the subsequent failures.

7. The method of claim 1 , comprising:

determining, by the computing device for a plurality of sessions between a plurality of client devices and a plurality of virtual machines of the group of virtual machines, a current load for each of the plurality of virtual machines; and

generating, by the computing device using the threshold, one or more actions to modify the assignment of one or more sessions to one or more different virtual machines of the plurality of virtual machines responsive to the current load for the respective virtual machines.

8. The method of claim 7 , comprising:

generating, by the computing device responsive to the one or more actions, one or more virtual machines to add to the group of virtual machines; and

transferring, by the computing device, the assignment of the one or more sessions to the one or more virtual machines generated for the group of virtual machines.

9. The method of claim 1 , comprising:

determining, by the computing device for a subset of the group of virtual machines, an average of load values for virtual machines in the subset, the load values associated with one or more failures at the virtual machines.

10. The method of claim 9 , comprising:

determining, by the computing device, one or more virtual machines in the subset having a load greater than the average of the load values for the subset; and

transferring, by the computing device, the assignment of one or more sessions from the one or more virtual machines to other virtual machines in the subset having a load less than the average of the load values for the subset.

11. A system comprising:

one or more processors coupled to memory, the one or more processors configured to:

identify an assignment of a user to a virtual machine, the assignment enables launch of an application with use of the same virtual machine on behalf of the user, and the virtual machine being one of a group of virtual machines;

determine a threshold for a load level for the virtual machine, the threshold being indicative of likely failure of the virtual machine to launch the application based on historical data about performance and load levels of each virtual machine of the group of virtual machines launching the application;

modify the assignment of a user from the virtual machine to another virtual machine of the delivery group based on a comparison of a load on the virtual machine and the determined threshold, so as to avoid failure of the application to launch;

transfer the assignment of one or more sessions to the another virtual machine of the group of virtual machines to cause the another virtual machine to launch the application; and

launch, by the another virtual machine, the one or more sessions.

12. The system of claim 11 , wherein the one or more processors are configured to:

compare load values for a first failure associated with the virtual machine and load values for a second failure associated with the virtual machine; and

modify, responsive to the comparison, the threshold for the virtual machine.

13. The system of claim 11 , wherein the one or more processors are configured to:

determine, responsive to a failure for a session to the another virtual machine, each virtual machine of the group of virtual machines having a load greater than the threshold;

generate a new virtual machine responsive to each virtual machine of the delivery group of virtual machines having the load greater than the threshold, the new virtual machine added to the group of virtual machines; and

transfer the assignment of the user from the another virtual machine to the new virtual machine.

14. The system of claim 11 , wherein the one or more processors are configured to:

monitor, using a failure model, an active load on each virtual machine of the group of virtual machines, wherein the failure model dynamically modifies the threshold responsive to subsequent failures associated with a respective virtual machine and the active load associated with the subsequent failures.

15. The system of claim 11 , wherein the one or more processors are configured to:

determine, for a plurality of sessions between a plurality of client devices and a plurality of virtual machines of the group of virtual machines, a current load for each of the plurality of virtual machines; and

generate, using the threshold, one or more actions to modify the assignment of one or more sessions to one or more different virtual machines of the plurality of virtual machines responsive to the current load for the respective virtual machines.

16. The system of claim 15 , wherein the one or more processors are configured to:

generate, responsive to the one or more actions, one or more virtual machines to add to the group of virtual machines; and

transfer the assignment of the one or more sessions to the one or more virtual machines generated for the group of virtual machines.

17. The system of claim 11 , wherein the one or more processors are configured to:

determine, for a subset of the group of virtual machines, an average of load values for virtual machines in the subset, the load values associated with one or more failures at the virtual machines;

determine one or more virtual machines in the subset having a load greater than the average of the load values for the subset; and

transfer the assignment of one or more sessions from the one or more virtual machines to other virtual machines in the subset having a load less than the average of the load values for the subset.

18. A non-transitory computer-readable medium, comprising instructions that, when executed by one or more processors, cause the one or more processors to:

identify an assignment of a user to a virtual machine, the assignment enables launch of an application with use of the same virtual machine on behalf of the user, and the virtual machine being one of a group of virtual machines;

determine a threshold for a load level for the virtual machine, the threshold being indicative of likely failure of the virtual machine to launch the application based on historical data about performance and load levels of each virtual machine of the group of virtual machines launching the application;

modify the assignment of a user from the virtual machine to another virtual machine of the delivery group based on a comparison of a load on the virtual machine and the determined threshold, so as to avoid failure of the application to launch;

transfer the assignment of one or more sessions to the another virtual machine of the group of virtual machines to cause the another virtual machine to launch the application; and

launch, by the another virtual machine, the one or more sessions.

19. The computer-readable medium of claim 18 , further comprising instructions that cause the one or more processors to:

determine, responsive to a failure for a session to the another virtual machine, each virtual machine of the group of virtual machines having a load greater than the threshold;

generate a new virtual machine responsive to each virtual machine of the group of virtual machines having the load greater than the threshold, the new virtual machine added to the group of virtual machines; and

transfer the assignment of the user from the another virtual machine to the new virtual machine.

20. The computer-readable medium of claim 18 , further comprising instructions that cause the one or more processors to:

determine, for a subset of the group of virtual machines, an average of load values for virtual machines in the subset, the load values associated with one or more failures at the virtual machines;

determine one or more virtual machines in the subset having a load greater than the average of the load values for the subset; and

transfer the assignment of one or more sessions from the one or more virtual machines to other virtual machines in the subset having a load less than the average of the load values for the subset.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 12, 2021
From: LOKESHARADHYA, AJAY BUKKAPATTANA; CHAWLA, PRABHJEET SINGH; PASHA, SYED MANSOOR
To: CITRIX SYSTEMS, INC.
Reel/Frame 054895/0538 →
Continuity (1)
Related Publication 20220222097A1 · Jul 14, 2022
Cited By (2)
US 12,693,893 US 12,705,158