1461045975-e0cf64ff-120a-4a92-803d-ec15ba22a3a0

1. A method comprising:
generating an integer program identifying a set of hosts and devices to be connected by an interconnection fabric;
defining decision variables of the integer program for links in the interconnection fabric and for data flows along the links, wherein the decision variables include binary link used variables that each has one of two binary values depending upon whether the corresponding one of the links is used or unused;
weighting the flows as a function of respective bandwidths of the flows; and
solving, by a computer system, the integer program to minimize total hops taken by the flows, weighted by the respective bandwidths.
2. The method of claim 1, further comprising generating an output representing a connectivity of the hosts and the devices to a given interconnect topology for the interconnection fabric.
3. The method of claim 2, wherein the flows are between the hosts and devices through the interconnection fabric.
4. The method of claim 1, wherein a selected one of the flows is prioritized by applying a larger weight to it.
5. The method of claim 1, further comprising defining constraints comprising bandwidth limitations for the integer program.
6. The method of claim 1, further comprising defining, for the integer program, a port limit constraint for a host or device.
7. The method of claim 1, further comprising defining a hop count limitation constraint in an integer programming language.
8. The method of claim 1, further comprising:
defining an objective function that reduces a value based on an aggregate, over the flows, of the bandwidth of each respective flow times a number of hops used by the respective flow,
wherein solving the integer program considers the objective function.
9. A non-transitory computer readable medium having an integer program stored thereon for determining connection of hosts and devices to an interconnection fabric having links for handling flows between the hosts and devices, the program comprising:
for each flow and for each link in the interconnection fabric, a binary variable having a different value depending on whether or not the flow travels along the link;
for each link, a binary variable having a different value depending on whether the link is used or unused;
a plurality of constraints representative of physical limitations of the interconnection fabric, including a port limit constraint; and
an expression of an objective function to be optimized, wherein the objective function reduces an aggregate, over the flows, of a bandwidth of each corresponding flow times a number of hops used by the corresponding flow.
10. The computer readable medium of claim 9, wherein the plurality of constraints further include constraints for links in the interconnection fabric, the constraints for links comprising bandwidth limitations.
11. The computer readable medium of claim 9, wherein the plurality of constraints further include constraints for links in the interconnection fabric, the constraints for links comprising an amount of flow that a switch in the interconnection fabric can handle.
12. The computer readable medium of claim 9, wherein the port limit constraint is representative of port limits for a host or a device.
13. The computer readable medium of claim 9, wherein the objective function minimizes a sum, over the flows of the bandwidth of each corresponding flow times the number of hops used by the corresponding flow.

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 method for adaptively ranking and scheduling monitoring tasks, comprising:
utilizing a processing resource to execute instructions stored on a non-transitory medium to:
determine an updated ranking for each of a number of monitoring tasks by analyzing historical measurements of each of the number of monitoring tasks; and
schedule an order of execution for each of the number of monitoring tasks based on the updated ranking for each of the number of monitoring tasks.
2. The method of claim 1, wherein utilizing comprises utilizing the processing resource to execute each of the number of monitoring tasks based on the scheduled order of execution.
3. The method of claim 2, wherein utilizing comprises utilizing the processing resource to provide feedback on execution of each of the number of monitoring tasks as historical data.
4. The method of claim 1, wherein analyzing the historical measurements of each of the number of monitoring tasks comprises analyzing a measurement of variability in the historical measurements of each of the number of monitoring tasks.
5. The method of claim 4, wherein analyzing the measurement of variability comprises analyzing at least one of an entropy calculation of the historical measurements of each of the number of monitoring tasks, a variance calculation of the historical measurements of each of the number of monitoring tasks, and a calculation of predictability of the historical measurements of each of the number of monitoring tasks.
6. The method of claim 5, wherein analyzing the calculation of the predictability of the measurements of each of the number of monitoring tasks comprises analyzing a time series of the historical measurements of each of the number of monitoring tasks.
7. A non-transitory machine-readable medium storing a set of instructions that, when executed, cause a processing resource to:
assign an initial ranking for each of a number monitoring tasks by a predetermined expected variability of a monitoring task resource type associated with each of the number of monitoring tasks;
determine an updated ranking for each of the number of monitoring tasks, wherein the updated ranking for each of the number of monitoring tasks is based on a score comprising weighted historical measurements for each of the number of monitoring tasks;
schedule an order of execution for each of the number of monitoring tasks based on the updated ranking for each of the number of monitoring tasks; and
execute each of the number of monitoring tasks based on the order of execution.
8. The medium of claim 7, wherein the instructions, when executed, cause the processing resource to provide feedback on execution of each of the number of monitoring tasks as historical data.
9. The medium of claim 7, wherein the instructions that cause the processing resource to determine cause the processing resource to determine the updated ranking for each of the number of monitoring tasks based on the score comprising a measurement of historical execution of each of the number of monitoring tasks.
10. The medium of claim 9, wherein the instructions that cause the processing resource to determine cause the processing resource to determine the weighted measurement comprising an anti-starvation calculation and an execution time for each of the number of monitoring tasks.
11. The medium of claim 10, wherein the anti-starvation calculation comprises a measurement of a time each of the number of monitoring tasks previously waited for execution and a measurement of a number of times each of the number of monitoring tasks was outrun by other monitoring tasks.
12. A system for ranking and scheduling monitoring tasks, the system comprising a processing resource in communication with a memory resource, wherein the memory resource includes a set of instructions and wherein the processing resource is designed to carry out the set of instructions to:
determine an updated ranking for each of the number of monitoring tasks, wherein the updated ranking for each of the number of monitoring tasks is based on a score comprising historical measurements of each of the monitoring tasks;
update a schedule with the updated ranking for each of the number of monitoring tasks;
schedule an order of execution for each of the number of monitoring tasks based on the updated ranking for each of the number of monitoring tasks;
send each of the number of monitoring tasks to an execution queue;
execute each of the number of monitoring tasks based on the order of execution; and
provide feedback on execution of each of the number of monitoring tasks as historical data.
13. The system of claim 12, wherein the processing resource is designed to carry out the set of instructions to determine the updated ranking for each of the number of monitoring tasks based on a score comprising a measurement of a threshold crossing probability for each of the number of monitoring tasks.
14. The system of claim 13, wherein the processing resource is designed to carry out the set of instructions to determine the measurement of the threshold crossing probability by calculating of proximity of a measurement for each of the number of monitoring tasks to at least one of a number of predetermined thresholds for each of the number of monitoring tasks and a calculation of a change in proximity of a subsequent measurement for each of the monitoring tasks to the at least one of the number of predetermined thresholds in relation to a preceding measurement of each of the number of monitoring tasks to the at least one of the number of predetermined thresholds for each of the number of monitoring tasks.
15. The system of claim 12, wherein the processing resource is designed to carry out the set of instructions to assign normalized weighted values to each of a number of measurements for each of the number of monitoring tasks and wherein the score comprises a weighted average calculated for a particular monitoring task from the assigned normalized weighted values of the number of measurements of the particular monitoring task.