IP Library Granted Patent US 9,225,596
Granted Patent B2
US 9,225,596 · App. 13/886,024 · Granted Dec 29, 2015

Undifferentiated service domains

Inventors: Andrew Dunn (Cambridge, GB); James Bulpin (Cambridge, GB)
Assignee: Citrix Systems, Inc.
H04L41/0813G06F9/45558G06F9/5077G06F2009/45575G06F2209/5011
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 9,225,596
App. No.
13/886,024
Granted
Dec 29, 2015
Kind
B2
Abstract

Guest domains (virtual machines) may execute at a virtualization server. During execution, the guest domains may request various services to facilitate their operation. The virtualization server may disaggregate the services requested by the guest domains among various service domains. A service domain may be configured to provide one the services. The virtualization server may also maintain a pool of partially initialized service domains. When a guest domain requests a particular service, one of the partially initialized service domains may be selected from the pool, and the partially initialized service domain may complete initialization to become an initialized service domain. The initialized service domain may thus be configured to provide the service requested by a guest domain. The virtualization server may periodically replenish the pool of partially initialized service domains to ensure that a partially initialized service domain is available upon demand from one of the guest domains.

Claims (53)

1. A method for providing server virtualization comprising:

generating a partially initialized service domain by pausing a boot sequence during initialization of a new service domain;

receiving a request for a service;

writing to a storage location accessible by the partially initialized service domain configuration information corresponding to the service requested;

unpausing the boot sequence of the partially initialized service domain; and

completing initialization of the partially initialized service domain using the configuration information to transform the partially initialized service domain into an initialized service domain configured to provide the service requested.

2. The method of claim 1 wherein the partially initialized service domain is one of a plurality of partially initialized service domains, the method further comprising:

maintaining a queue of references respectively corresponding to the plurality of partially initialized service domains, wherein one of the references in the queue corresponds to the partially initialized service domain;

selecting the partially initialized service domain from the plurality of partially initialized service domains in response to receipt of the request; and

removing the reference corresponding to the partially initialized service domain from the queue upon selection.

3. The method of claim 1 wherein the initialized service domain provides the service to one or more guest domains operating at a virtualization server.

4. The method of claim 1 further comprising:

determining that processor usage has dropped below a predetermined threshold;

creating a new partially initialized service domain; and

adding a new reference corresponding to the new partially initialized service domain to a queue of references respectively corresponding to a plurality of partially initialized service domains.

5. The method of claim 4 wherein creating a new partially initialized service domain includes cloning an existing partially initialized service domain to obtain the new partially initialized service domain.

6. The method of claim 1 wherein pausing the boot sequence of the partially initialized service domain includes pausing the boot sequence such that the partially initialized service domain is configurable as one of a plurality of different types of initialized service domains.

7. The method of claim 6 wherein:

the partially initialized service domain does not utilize a processing resource in a paused state; and

the partially initialized service domain does utilize the processing resource in an unpaused state.

8. The method of claim 1 wherein the configuration information is an initialization script stored remotely relative to the partially initialized service domain.

9. The method of claim 1 wherein the initialized service domain is one of a software service domain, a hardware service domain, and a combined hardware and software service domain.

10. The method of claim 9 wherein:

the software service domain is selected from the group consisting of i) a network file system (NFS) service domain, ii) a domain name service (DNS) service domain, and iii) a network switching service domain; and

the hardware service domain is selected from the group consisting of iv) a processing service domain, v) a network service domain, vi) a storage service domain, and vii) a graphics service domain.

11. The method of claim 10 wherein the hardware service domain manages access to a plurality of hardware devices.

12. An apparatus for providing virtualization services comprising:

one or more processors; and

memory storing instructions that, when executed by one of the processors, cause the apparatus to

generate a partially initialized service domain by pausing a boot sequence during initialization of a new service domain,

receive a request for a service,

write to a storage location accessible by the partially initialized service domain configuration information corresponding to the service requested,

unpause the boot sequence of the partially initialized service domain, and

complete initialization of the partially initialized service domain using the configuration information to transform the partially initialized service domain into an initialized service domain configured to provide the service requested.

13. The apparatus of claim 12 wherein:

the partially initialized service domain is one of a plurality of partially initialized service domains; and

the instructions, when executed by one of the processors, further cause the apparatus to

maintain a queue of references respectively corresponding to the plurality of partially initialized service domains, wherein one of the references in the queue corresponds to the partially initialized service domain,

select the partially initialized service domain from the plurality of partially initialized service domains in response to receipt of the request, and

remove the reference corresponding to the partially initialized service domain upon selection.

14. The apparatus of claim 12 wherein:

the instructions, when executed by one of the processors, further cause the apparatus to

determine whether processor usage of one or more processors has dropped below a predetermined threshold, and

in response to a determination that processor usage has dropped below the predetermined threshold, create a new partially initialized service domain and add a new reference corresponding to the new partially initialized service domain to a queue of references respectively corresponding to a plurality of partially initialized service domains.

15. The apparatus of claim 12 wherein pausing the boot sequence of the partially initialized service domain comprises pausing the boot sequence such that the partially initialized service domain is configurable as one of a plurality of different types of initialized service domains.

16. The apparatus of claim 15 wherein pausing the boot sequence comprises withholding scheduling of execution of the boot sequence and unpausing the boot sequence includes scheduling execution of the boot sequence.

17. The apparatus of claim 16 wherein:

the instructions, when executed by one of the processors, further cause the apparatus to

receive, from the partially initialized service domain, a notification indicating that the boot sequence has reached a trigger point; and

pausing the boot sequence comprises pausing the boot sequence in response to receipt of the notification.

18. The apparatus of claim 12 wherein:

the configuration information is a set of key-value pairings;

the key-value pairings indicate a service domain type of the initialized service domain, a number of hardware devices to associate with the initialized service domain, and a number of guest domains to associate with the initialized service domain.

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 →
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 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 →
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 →
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 →
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 May 3, 2013
From: DUNN, ANDREW; BULPIN, JAMES
To: CITRIX SYSTEMS, INC.
Reel/Frame 030349/0069 →
Continuity (1)
Related Publication 20140330948A1 · Nov 6, 2014