1461175715-25d49bf1-6217-4809-8d77-7402c9e06a62

1. A method for managing a system of heterogeneous applications comprising the steps of:
classifying a plurality of applications into a plurality of application types, wherein the plurality of applications comprises heterogeneous applications, and the heterogeneous applications comprise at least one interactive workload-type application and at least one non-interactive workload-type application;
classifying one or more of the plurality of applications in each of the plurality of application types into one or more collections;
computing a utility function of possible resource allocations for each of the one or more collections comprising the steps of: (i) obtaining an execution profile for each of the plurality of applications in a given one of the one or more collections; (ii) obtaining management policies for each of the plurality of applications; and (iii) computing the utility function for the given one of the collections in accordance with the execution profiles for the plurality of applications, service level agreement goals for the plurality of applications, and a state of the system;
computing an application placement that optimizes a global utility of the plurality of applications in accordance with the one or more utility functions; and
modifying placement and resource allocation of the plurality of applications in the system in accordance with the application placement;
wherein an execution profile for a given interactive workload-type application comprises an average number of processor cycles consumed by requests of a given flow associated with the given interactive workload-type application, and an execution profile for a given non-interactive workload-type application comprises the number of processor cycles used to complete a job associated with the given non-interactive workload-type application, the number of threads used by the job, and the maximum processor speed at which the job progresses.
2. The method of claim 1, wherein the steps of classifying the plurality of applications, classifying one or more of the plurality of applications, computing a utility function, computing an application placement, and modifying placement and resource allocation is performed periodically in response to system events.
3. The method of claim 1, wherein, in the step of obtaining an execution profile, the heterogeneous applications comprise all long-running applications known to the system.
4. The method of claim 1, further comprising the step of computing an intermediate utility function for each of the one or more of the plurality of applications based on a processing unit assigned to the one or more of the plurality of applications in the given one of the one or more collections.
5. The method of claim 4, further comprising the step of using the intermediate utility function to obtain a processing unit allocation for a given application to achieve a certain utility.
6. The method of claim 4, further comprising the step of using the intermediate utility function to obtain a resultant utility of a given application given total processing unit allocation to the given one of the one or more collections.
7. The method of claim 4, wherein, in the step of computing an intermediate utility function, the intermediate utility functions for each collection of applications are updated each time the placement of any application within the associated collection is changed as the algorithm progresses.
8. The method of claim 1, further comprising the step of calculating a speed at which each of the one or more of the plurality of applications must execute so as to obtain a resultant utility.
9. The method of claim 1, further comprising the step of calculating a minimum processing unit allocation assigned to each of the one or more of the plurality of applications, and the given one of the one or more collections, to achieve a resultant utility.
10. The method of claim 1, further comprising the step of determining a utility for the given one of the one or more collections of a given placement.
11. Apparatus for managing a system of heterogeneous applications, comprising:
a memory; and
at least one processor coupled to the memory and operative to: (i) classify a plurality of applications into a plurality of application types, wherein the plurality of applications comprises heterogeneous applications, and the heterogeneous applications comprise at least one interactive workload-type application and at least one non-interactive workload-type application; (ii) classify one or more of the plurality of applications in each of the plurality of application types into one or more collections; (iii) compute a utility function of possible resource allocations for each of the one or more collections comprising the steps of: (a) obtaining an execution profile for each of the plurality of applications in a given one of the one or more collections; (b) obtaining management policies for each of the plurality of applications; and (c) computing the utility function for the given one of the collections in accordance with the execution profiles for the plurality of applications, service level agreement goals for the plurality of applications, and a state of the system; (iv) compute an application placement that optimizes a global utility of the plurality of applications in accordance with the one or more utility functions; and (v) modify placement and resource allocation of the plurality of applications in the system in accordance with the application placement;
wherein an execution profile for a given interactive workload-type application comprises an average number of processor cycles consumed by requests of a given flow associated with the given interactive workload-type application, and an execution profile for a given non-interactive workload-type application comprises the number of processor cycles used to complete a job associated with the given non-interactive workload-type application, the number of threads used by the job, and the maximum processor speed at which the job progresses.
12. The apparatus of claim 11, wherein the operations of classifying the plurality of applications, classifying one or more of the plurality of applications, computing a utility function, computing an application placement, and modifying placement and resource allocation is performed periodically in response to system events.
13. The apparatus of claim 11, wherein, in the operation of obtaining an execution profile, the heterogeneous applications comprise all long-running applications known to the system.
14. The apparatus of claim 11, wherein the processor is further operative to compute an intermediate utility function for each of the one or more of the plurality of applications based on a processing unit assigned to the one or more of the plurality of applications in the given one of the one or more collections.
15. The apparatus of claim 14, wherein the processor is further operative to use the intermediate utility function to obtain a processing unit allocation for a given application to achieve a certain utility.
16. The apparatus of claim 14, wherein the processor is further operative to use the intermediate utility function to obtain a resultant utility of a given application given total processing unit allocation to the given one of the one or more collections.
17. The apparatus of claim 14, wherein, in the operation of computing an intermediate utility function, the intermediate utility functions for each collection of applications are updated each time the placement of any application within the associated collection is changed as the algorithm progresses.
18. A method for making a computer implemented process for the management of a system of heterogeneous applications comprising the steps of:
instantiating first computer instructions onto a non-transitory computer readable medium, the first computer instructions configured to classify a plurality of applications into a plurality of application types, wherein the plurality of applications comprises heterogeneous applications, and the heterogeneous applications comprise at least one interactive workload-type application and at least one non-interactive workload-type application;
instantiating second computer instructions onto a non-transitory computer readable medium, the second computer instructions configured to classify one or more of the plurality of applications in each of the plurality of application types into one or more collections;
instantiating third computer instructions onto a non-transitory computer readable medium, the third computer instructions configured to compute a utility function of possible resource allocations for each of the one or more collections comprising the steps of: (i) obtaining an execution profile for each of the plurality of applications in a given one of the one or more collections; (ii) obtaining management policies for each of the plurality of applications; and (iii) computing the utility function for the given one of the collections in accordance with the execution profiles for the plurality of applications, service level agreement goals for the plurality of applications, and a state of the system;
instantiating fourth computer instructions onto a non-transitory computer readable medium, the fourth computer instructions configured to compute an application placement that optimizes a global utility of the plurality of applications in accordance with the one or more utility functions; and
instantiating fifth computer instructions onto a non-transitory computer readable medium, the fifth computer instructions configured to modify placement and resource allocation of the plurality of applications in the system in accordance with the application placement;
wherein an execution profile for a given interactive workload-type application comprises an average number of processor cycles consumed by requests of a given flow associated with the given interactive workload-type application, and an execution profile for a given non-interactive workload-type application comprises the number of processor cycles used to complete a job associated with the given non-interactive workload-type application, the number of threads used by the job, and the maximum processor speed at which the job progresses.

The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.

1. A doping device for injecting two types of dopants into a semiconductor melt, the doping device comprising:
a first dopant accommodating portion that is shaped in a cylinder having a bottom, the first dopant accommodating portion including an opening on an upper portion thereof and supporting from below a first dopant that is solid at normal temperature and evaporated near a surface of the semiconductor melt;
a second dopant accommodating portion that includes a dopant holder that holds a second dopant that is solid at normal temperature and liquefied near the surface of the semiconductor melt, and a communicating hole formed in the dopant holder, and a cover portion that covers the second dopant held by the dopant holder, the second dopant being liquefied by a heat of the semiconductor melt and being injected into the semiconductor melt through the communicating hole; and
a guide that comprises a cylinder body of which a lower end is opened and an upper end is closed, the guide portion being adapted to accommodate both of the first dopant accommodating portion and the second dopant accommodating portion and guiding the first dopant evaporated by the heat of the semiconductor melt into the semiconductor melt at a position different from a position at which the liquefied second dopant is injected into the semiconductor melt through the communicating hole.
2. The doping device according to claim 1, wherein the communicating hole is shaped in an elongated hole.
3. The doping device according to claim 1, wherein the second dopant accommodating portion includes a conduit tube provided on a lower portion of the dopant holder for delivering the liquefied second dopant flowed from the communicating hole to the surface of the semiconductor melt.
4. The doping device according to claim 1, wherein a vent for degassing is provided on a part of the cover portion of the second dopant accommodating portion.
5. The doping device according to claim 4, wherein:
the second dopant accommodating portion is disposed below the first dopant accommodating portion,
a plurality of hook-shaped engaging pieces are provided on a bottom of the first dopant accommodating portion,
the cover portion of the second dopant accommodating portion is provided by a cylinder body having an open upper end, the cover portion having a plurality of projections provided on an upper outer circumference,
the second dopant accommodating portion is suspended from the first dopant accommodating portion by engaging the plurality of projections with the plurality of engaging pieces, and
a space is provided between the bottom of the first dopant accommodating portion and an upper end surface of the second dopant accommodating portion while the second dopant accommodating portion is suspended.
6. A method for manufacturing a silicon monocrystal by growing a crystal after injecting two types of dopants into a semiconductor melt using a doping device, wherein the doping device comprises (i) a first dopant accommodating portion that supports from below a first dopant that is solid at normal temperature and evaporated near a surface of the semiconductor melt, (ii) a second dopant accommodating portion that includes a dopant holder that holds a second dopant that is solid at normal temperature and liquefied near the surface of the semiconductor melt, and a communicating hole formed in the dopant holder, the second dopant being liquefied by a heat of the semiconductor melt and being injected into the semiconductor melt through the communicating hole, and (iii) a guide that guides the first dopant evaporated by the heat of the semiconductor melt into the semiconductor melt at a position different from a position at which the liquefied second dopant is injected into the semiconductor melt through the communicating hole, and wherein the method comprises:
simultaneously injecting into the semiconductor melt the first dopant and the second dopant using the doping device; and
growing a silicon monocrystal.