Software partitioned multi-processor system with flexible resource sharing levels
First Claim
1. A computer system having a plurality of configurable system resources including processors, memory, and I/O circuitry different from the memory, the computer system comprising:
- an interconnection mechanism which electrically interconnects hardware components including the processors, memory and I/O circuitry so that each processor has electrical access to all of the memory and at least some of the I/O circuitry, such that the memory is configurable to allow data access by any one or more of the processors; and
a software mechanism that divides at least a portion of the plurality of system resources into a plurality of soft partitions, each soft partition including at least one processor, some private memory and some private I/O circuitry, with at least one operating system instance running in each soft partition;
wherein a first pair of operating system instances share a first subset of the plurality of system resources as a first sharing set, and wherein a second pair of operating system instances share a second subset of the plurality of system resources different from the first subset of operating system resources as a second sharing set; and
wherein each of said hardware components has an associated affinity handle which specifies a configuration that is more optimal than other possible configurations.
3 Assignments
0 Petitions
Accused Products
Abstract
Multiple instances of operating systems execute cooperatively in a single multiprocessor computer wherein all processors and resources are electrically connected together. The single physical machine with multiple physical processors and resources is subdivided by software into multiple partitions, each running a distinct copy, or instance, of an operating system. Each of the partitions has access to its own physical resources plus resources designated as shared. The partitioning is performed by assigning all resources with a configuration tree. None, some, or all, resources may be designated as shared among multiple partitions. Each individual operating instance will generally be assigned the resources it needs to execute independently and these resources will be designated as “private.” Other resources, particularly memory, can be assigned to more than one instance and shared. Shared memory is cache coherent so that instances may be tightly coupled, and may share resources that are normally allocated to a single instance. This allows previously distributed user or operating system applications which usually must pass messages via an external interconnect to operate cooperatively in the shared memory without the need for either an external interconnect or message passing. Examples of application that could take advantage of this capability include distributed lock managers and cluster interconnects. Newly-added resources, such as CPUs and memory, can be dynamically assigned to different partitions and used by instances of operating systems running within the machine by modifying the configuration.
360 Citations
48 Claims
-
1. A computer system having a plurality of configurable system resources including processors, memory, and I/O circuitry different from the memory, the computer system comprising:
-
an interconnection mechanism which electrically interconnects hardware components including the processors, memory and I/O circuitry so that each processor has electrical access to all of the memory and at least some of the I/O circuitry, such that the memory is configurable to allow data access by any one or more of the processors; and
a software mechanism that divides at least a portion of the plurality of system resources into a plurality of soft partitions, each soft partition including at least one processor, some private memory and some private I/O circuitry, with at least one operating system instance running in each soft partition;
wherein a first pair of operating system instances share a first subset of the plurality of system resources as a first sharing set, and wherein a second pair of operating system instances share a second subset of the plurality of system resources different from the first subset of operating system resources as a second sharing set; and
wherein each of said hardware components has an associated affinity handle which specifies a configuration that is more optimal than other possible configurations. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
a computer network; and
means for connecting at least a portion of the private I/O circuitry in each of the soft partitions to the computer network.
-
-
5. A computer system according to claim 3 wherein at least some of the memory is shared among the first pair of operating system instances and the second pair of operating system instances.
-
6. A computer system according to claim 5, further comprising:
-
a computer network; and
means for connecting at least a portion of the private I/O circuitry in each of the soft partitions to the computer network.
-
-
7. A computer system according to claim 5 wherein the shared part of memory comprises a shared cache-coherent memory.
-
8. A computer system according to claim 7 wherein the shared cache-coherent memory comprises a shared database cache.
-
9. A computer system according to claim 7 wherein the shared cache-coherent memory comprises a shared file system cache.
-
10. A computer system according to claim 7 wherein the shared cache-coherent memory comprises a shared lock cache.
-
11. A computer system according to claim 7 wherein the shared cache-coherent memory comprises a shared cluster interconnect.
-
12. A computer system according to claim 1, further comprising:
a software mechanism for tracking allocation of the plurality of system resources.
-
13. A computer system according to claim 12, wherein the software mechanism for tracking allocation includes a database that includes entries for the first sharing set and the second sharing set.
-
14. A computer system according to claim 1, further comprising:
a region of non-volatile memory configured to store data indicating allocation of the plurality of system resources.
-
15. A computer system according to claim 14, wherein the software mechanism that divides at least the portion of the plurality of system resources into the plurality of partitions uses the data stored in the region of non-volatile memory to allocate the plurality of system resources upon a reboot of at least a part of the computer system.
-
16. A computer system according to claim 1, wherein the first pair of operating system instances sharing the first sharing set are comprised in a different soft partition from the second pair of operating system instances sharing the second sharing set.
-
17. A method for operating a computer system having a plurality of configurable system resources including processors, memory, and I/O circuitry different from the memory, the method comprising the steps of:
-
(a) electrically interconnecting hardware components including the processors, memory and I/O circuitry so that each processor has electrical access to all of the memory and at least some of the I/O circuitry, such that the memory is configurable to allow data access by any one or more of the processors;
(b) forming a plurality of soft partitions, each soft partition including at least one processor, some private memory and some private I/O circuitry;
(c) running at least one operating system instance in each soft partition;
(d) creating a first pair of operating system instances which share a first subset of the plurality of system resources as a first sharing set; and
(e) creating a second pair of operating system instances which share a second subset of the plurality of system resources different from the first subset of operating system resources as a second sharing set;
(f) associating an affinity handle with each hardware component, said affinity handle specifies a configuration that is more optimal than other possible configurations. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32)
(f) dedicating all of the memory to the first pair of operating system instances and to the second pair of operating system instances.
-
-
19. A method according to claim 17 further comprising the steps of:
-
(g) dedicating at least some memory to each operating system instance in the first pair of operating system instances; and
(h) dedicating at least some memory to each operating system instance in the second pair of operating system instances.
-
-
20. A method according to claim 19, wherein the computer system further comprises a computer network, and the method further comprises the step of:
(i) connecting at least a portion of the private I/O circuitry in each of the soft partitions to the computer network.
-
21. A method according to claim 19 further comprising the step of:
(j) sharing at least some of the memory among the first pair of operating system instances and the second pair of operating system instances.
-
22. A method according to claim 21, wherein the computer system further comprises a computer network, and the method further comprises the step of:
(k) connecting at least a portion of the private I/O circuitry in each of the soft partitions to the computer network.
-
23. A method according to claim 21 wherein step (j) comprises the step of:
(j1) sharing a cache-coherent memory among the first pair of operating system instances and the second pair of operating system instances.
-
24. A method according to claim 23 wherein step (j1) comprises the step of:
(j1a) sharing a database cache among the first pair of operating system instances and the second pair of operating system instances.
-
25. A method according to claim 23 wherein step (j1) comprises the step of:
(j1b) sharing a file system cache among the first pair of operating system instances and the second pair of operating system instances.
-
26. A method according to claim 23 wherein step (j1) comprises the step of:
(j1c) sharing a lock cache among the first pair of operating system instances and the second pair of operating system instances.
-
27. A method according to claim 23 wherein step (j1) comprises the step of:
(j1d) sharing a cluster interconnect among the first pair of operating system instances and the second pair of operating system instances.
-
28. A method according to claim 17, further comprising the step of:
(l) tracking allocation of the plurality of system resources using software.
-
29. A method according to claim 28, wherein step (l) further comprises:
(l1) storing entries in a data base to track sharing sets.
-
30. A method according to claim 17, further comprising the step of:
(m) storing data indicating allocation of the plurality of system resources in a region of non-volatile memory.
-
31. A method according to claim 30, further comprising the steps of:
-
(n) rebooting at least part of the computer system;
(o) using the data stored in the region of the non-volatile memory to allocate the plurality of system resources in response to rebooting at least part of the computer system.
-
-
32. A method according to claim 17, wherein step (e) further comprises:
(e1) creating the second pair of operating system instances in a different software partition from the first pair of operating system instances.
-
33. A computer program product for operating a computer system having a plurality of configurable system resources including hardware components comprising processors, memory, and I/O circuitry different from the memory, and a mechanism for electrically interconnecting the processors, memory and I/O circuitry so that each processor has electrical access to all of the memory and at least some of the I/O circuitry, such that the memory is configurable to allow data access by any one or more of the processors, the computer program product comprising a computer usable medium having computer readable program code thereon including:
-
program code for forming a plurality of soft partitions, each soft partition including at least one processor, some private memory and some private I/O circuitry;
program code for running at least one operating system instance in each soft partition;
program code for creating a first pair of operating system instances which share a first subset of the plurality of system resources as a first sharing set;
program code for creating a second pair of operating system instances which share a second subset of the plurality of system resources different from the first subset of operating system resources as a second sharing set; and
program code for associating an affinity handle with each hardware component, said affinity handle specifies a configuration that is more optimal than other possible configurations. - View Dependent Claims (34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48)
program code for dedicating at least some memory to each operating system instance in the first pair of operating system instances; and
program code for dedicating at least some memory to each operating system instance in the second pair of operating system instances.
-
-
36. A computer program product according to claim 35, wherein the computer system further comprises a computer network, and the computer program product further comprises:
program code for connecting at least a portion of the private I/O circuitry in each of the soft partitions to the computer network.
-
37. A computer program product according to claim 35 further comprising program code for sharing at least some of the memory among the first pair of operating system instances and the second pair of operating system instances.
-
38. A computer program product according to claim 37, wherein the computer system further comprises a computer network, and the computer program product further comprises:
program code for connecting at least a portion of the private I/O circuitry in each of the soft partitions to the computer network.
-
39. A computer program product according to claim 37 wherein the program code for sharing at least some of the memory comprises program code for sharing a cache-coherent memory among the first pair of operating system instances and the second pair of operating system instances.
-
40. A computer program product method according to claim 39 wherein the program code for sharing cache-coherent memory comprises program code for sharing a database cache among the first pair of operating system instances and the second pair of operating system instances.
-
41. A computer program product according to claim 39 wherein the program code for sharing cache-coherent memory comprises program code for sharing a file system cache among the first pair of operating system instances and the second pair of operating system instances.
-
42. A computer program product according to claim 39 wherein the program code for sharing cache-coherent memory comprises program code for sharing a lock cache among the first pair of operating system instances and the second pair of operating system instances.
-
43. A computer program product according to claim 39 wherein the program code for sharing cache-coherent memory comprises program code for sharing a cluster interconnect among the first pair of operating system instances and the second a pair of operating system instances.
-
44. A computer program product according to claim 33, further comprising:
program code for tracking allocation of the plurality of system resources.
-
45. A computer program product according to claim 44, wherein the program code for tracking allocation further comprises program code for storing entries in a data base to track sharing sets.
-
46. A computer program product according to claim 33, further comprising:
program code for storing data indicating allocation of the plurality of system resources in a region of non-volatile memory.
-
47. A computer program product according to claim 46, further comprising:
program code for using the data stored in the region of the non-volatile memory to allocate the plurality of system resources in response to rebooting at least part of the computer system.
-
48. A computer program product according to claim 33, wherein the program code for creating the second pair of operating system instances further comprises program code for creating the second pair of operating system instances in a different soft partition from the first pair of operating system instances.
Specification