IP Library › Granted Patent US 11,500,685
Granted Patent B2
US 11,500,685 · App. 16/043,747 · Granted Nov 15, 2022

Mixed instance catalogs

Inventor: Leo C. Singleton, IV (Fort Lauderdale, FL)
Assignee: Citrix Systems, Inc.
G06F9/505G06F9/45558G06F9/5044G06F9/5077G06F2009/4557G06F2009/45591G06F2009/45595
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 11,500,685
App. No.
16/043,747
Granted
Nov 15, 2022
Kind
B2
Abstract

Methods and systems for providing services using mixed instance catalogs are described herein. A catalog may comprise a plurality of first virtual machines and a plurality of second virtual machines. The capacity of a first virtual machine may be larger than the capacity of a second virtual machine. Connection requests to access a service associated with the catalog may be distributed among the plurality of first virtual machines and the plurality of second virtual machines.

Claims (68)

1. A method comprising:

determining a base load of a catalog of virtual machines configured to host service sessions;

determining a peak load of the catalog;

provisioning, for the catalog and based on the base load, a plurality of first virtual machines;

provisioning, for the catalog and based on the peak load, a plurality of second virtual machines, wherein a capacity of each of the plurality of first virtual machines is larger than a capacity of each of the plurality of second virtual machines;

receiving, by a computing device and from a user device, a connection request to access a service session associated with the catalog;

comparing a load of a plurality of service sessions hosted by the plurality of first virtual machines with a load threshold associated with the plurality of first virtual machines;

based on determining that the load of the plurality of service sessions hosted by the plurality of first virtual machines satisfies the load threshold associated with the plurality of first virtual machines, determining a second virtual machine, of the plurality of second virtual machines, to host the service session; and

sending, to the determined second virtual machine, an instruction to host the service session.

2. The method of claim 1 , wherein the load of the plurality of service sessions hosted by the plurality of first virtual machines comprises a quantity of the plurality of service sessions hosted by the plurality of first virtual machines, and wherein the load threshold associated with the plurality of first virtual machines comprises a session count threshold associated with the plurality of first virtual machines.

3. The method of claim 1 , further comprising:

receiving, by the computing device and from a second user device, a connection request to access a second service session associated with the catalog;

based on determining that a load of a second plurality of service sessions hosted by the plurality of first virtual machines does not satisfy the load threshold associated with the plurality of first virtual machines, determining a first virtual machine, of the plurality of first virtual machines, to host the second service session; and

sending, to the determined first virtual machine, an instruction to host the second service session.

4. The method of claim 3 , wherein the determining the first virtual machine to host the second service session is further based on determining that a quantity of service sessions that are currently running through initialization processes on the plurality of first virtual machines does not satisfy a concurrent logon threshold.

5. The method of claim 3 , wherein the determining the first virtual machine to host the second service session comprises:

selecting, based on balancing loads on the plurality of first virtual machines, the first virtual machine to host the second service session.

6. The method of claim 1 , further comprising:

based on a quantity of the plurality of service sessions hosted by the plurality of first virtual machines, a session count threshold associated with the plurality of first virtual machines, a quantity of a plurality of service sessions hosted by the plurality of second virtual machines, and a session count threshold associated with the plurality of second virtual machines, determining a remaining capacity of the catalog; and

based on determining that the remaining capacity of the catalog does not satisfy a remaining capacity threshold, powering on an additional second virtual machine.

7. The method of claim 1 , further comprising:

based on receiving, by the computing device and from the user device, a connection termination request, terminating the service session associated with the catalog; and

based on the terminating, powering off the second virtual machine, of the plurality of second virtual machines, that no longer hosts service sessions.

8. The method of claim 1 , wherein:

each of the plurality of first virtual machines is provisioned with a first capacity that is larger than a second capacity; and

each of the plurality of second virtual machines is provisioned with the second capacity.

9. The method of claim 8 , wherein the first capacity comprises a first virtual machine hardware specification including one or more of a first Central Processing Unit (CPU) capacity, a first Random Access Memory (RAM) size, or a first storage size, and wherein the second capacity comprises a second virtual machine hardware specification including one or more of a second CPU capacity, a second RAM size, or a second storage size.

10. The method of claim 1 , wherein the load threshold associated with the plurality of first virtual machines is determined based on the capacity of each of the plurality of first virtual machines.

11. The method of claim 1 , further comprising:

monitoring usage of the catalog; and

applying a best fit curve to the usage to determine a modeled function, wherein the determining the base load of the catalog and the determining the peak load of the catalog are based on the modeled function.

12. A computing device comprising:

one or more processors; and

memory storing instructions that, when executed by the one or more processors, cause the computing device to:

determine a base load of a catalog of virtual machines configured to host service sessions;

determine a peak load of the catalog;

provision, for the catalog and based on the base load, a plurality of first virtual machines;

provision, for the catalog and based on the peak load, a plurality of second virtual machines, wherein a capacity of each of the plurality of first virtual machines is larger than a capacity of each of the plurality of second virtual machines;

receive, from a user device, a connection request to access a service session associated with the catalog;

compare a load of a plurality of service sessions hosted by the plurality of first virtual machines with a load threshold associated with the plurality of first virtual machines;

based on determining that the load of the plurality of service sessions hosted by the plurality of first virtual machines satisfies the load threshold associated with the plurality of first virtual machines, determine a second virtual machine, of the plurality of second virtual machines, to host the service session; and

send, to the determined second virtual machine, an instruction to host the service session.

13. The computing device of claim 12 , wherein the instructions, when executed by the one or more processors, further cause the computing device to:

receive, from a second user device, a connection request to access a second service session associated with the catalog;

based on determining that a load of a second plurality of service sessions hosted by the plurality of first virtual machines does not satisfy the load threshold associated with the plurality of first virtual machines, determine a first virtual machine, of the plurality of first virtual machines, to host the second service session; and

send, to the determined first virtual machine, an instruction to host the second service session.

14. The computing device of claim 13 , wherein the determining the first virtual machine to host the second service session is further based on determining that a quantity of service sessions that are currently running through initialization processes on the plurality of first virtual machines does not satisfy a concurrent logon threshold.

15. The computing device of claim 13 , wherein the determining the first virtual machine to host the second service session comprises:

selecting, based on balancing loads on the plurality of first virtual machines, the first virtual machine to host the second service session.

16. The computing device of claim 12 , wherein the instructions, when executed by the one or more processors, further cause the computing device to:

based on a quantity of the plurality of service sessions hosted by the plurality of first virtual machines, a session count threshold associated with the plurality of first virtual machines, a quantity of a plurality of service sessions hosted by the plurality of second virtual machines, and a session count threshold associated with the plurality of second virtual machines, determine a remaining capacity of the catalog; and

based on determining that the remaining capacity of the catalog does not satisfy a remaining capacity threshold, power on an additional second virtual machine.

17. The computing device of claim 12 , wherein the instructions, when executed by the one or more processors, further cause the computing device to:

based on receiving, from the user device, a connection termination request, terminate the service session associated with the catalog; and

based on the terminating, power off the second virtual machine, of the plurality of second virtual machines, that no longer hosts service sessions.

18. One or more non-transitory computer readable media storing computer readable instructions that, when executed, cause a computing device to:

determine a base load of a catalog of virtual machines configured to host service sessions;

determine a peak load of the catalog;

provision, for the catalog and based on the base load, a plurality of first virtual machines;

provision, for the catalog and based on the peak load, a plurality of second virtual machines, wherein a capacity of each of the plurality of first virtual machines is larger than a capacity of each of the plurality of second virtual machines;

receive, from a user device, a connection request to access a service session associated with the catalog;

compare a load of a plurality of service sessions hosted by the plurality of first virtual machines with a load threshold associated with the plurality of first virtual machines;

based on determining that the load of the plurality of service sessions hosted by the plurality of first virtual machines satisfies the load threshold associated with the plurality of first virtual machines, determine a second virtual machine, of the plurality of second virtual machines, to host the service session; and

send, to the determined second virtual machine, an instruction to host the service session.

19. The one or more non-transitory computer readable media of claim 18 , wherein the computer readable instructions, when executed, further cause the computing device to:

receive, from a second user device, a connection request to access a second service session associated with the catalog;

based on determining that a load of a second plurality of service sessions hosted by the plurality of first virtual machines does not satisfy the load threshold associated with the plurality of first virtual machines, determine a first virtual machine, of the plurality of first virtual machines, to host the second service session; and

send, to the determined first virtual machine, an instruction to host the second service session.

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 →
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 →
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 →
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 Jul 24, 2018
From: SINGLETON, LEO C., IV
To: CITRIX SYSTEMS, INC.
Reel/Frame 047246/0165 →
Continuity (1)
Related Publication 20200034168A1 · Jan 30, 2020