Patent Description:
A periodic operation is an operation that occurs at regular intervals. For example, in a data replication operation, data such as files are periodically replicated from one storage location to another.

When executing a periodic operation, system resources are consumed. For example, replicating a file consumes disk input/output, memory, and network bandwidth, among other resources. The more operations that are performed at the same time, the higher the utilization level of the resources. When managing the scheduling of numerous periodic activities, it becomes difficult to select an optimal start time to avoid interference with previously scheduled activities.

<CIT> discloses a technique for using gathered system activity to determine when to schedule a procedure that requires a certain number of consecutive time slots. The technique comprises determining a threshold point that distinguishes low activity from high activity, and finding at least one "lull time window" in which a sufficient number of consecutive time slots have a low activity. The procedure is then scheduled to be performed during time slots in the "lull time window".

The dependent claims concern optional elements of some embodiments of the present invention.

A new operation is scheduled to be periodically executed. In an example, the new operation is a data replication operation. In a data replication operation, data may be copied from one data center to another data center. Other examples of operations that may be periodically executed include performing a virus scan, or saving a document as the document is edited by a user.

A start time for a new operation, to be periodically executed, is determined based on the start times of one or more previously scheduled operations. Candidate start times for the new operation are compared with start times of the one or more previously scheduled operations. The difference in value between a candidate start time and a start time of a previously scheduled operation is used to compute a cost for the candidate start time. In an embodiment, the cost for a candidate start time decreases in proportion to the difference in the values of the candidate start time and each of the start times of the one or more previously scheduled operations. A candidate start time, of all the candidate start times, with a lowest corresponding cost is selected as the start time for the new operation.

<FIG> illustrates an operation scheduling framework <NUM> in accordance with one or more embodiments. An operation scheduler <NUM> schedules periodic activities using a cost determination engine <NUM>. As illustrated in <FIG>, the operation scheduling framework <NUM> includes an operation scheduler <NUM>, a cost determination engine <NUM>, and a data repository <NUM>. In one or more embodiments, the operation scheduling framework <NUM> may include more or fewer components than the components illustrated in <FIG>. The components illustrated in <FIG> may be local to or remote from each other. The components illustrated in <FIG> may be implemented in software and/or hardware. Each component may be distributed over multiple applications and/or machines. Multiple components may be combined into one application and/or machine. Operations described with respect to one component may instead be performed by another component.

In one or more embodiments, the operation scheduler <NUM> includes hardware and/or software components for scheduling an operation for periodic execution. The operation scheduler <NUM> schedules operations <NUM> to improve a balance of the use of resources <NUM> across different time periods. Resources include, but are not limited to, memory such as random access memory (RAM); disk input/output (I/O) components, hardware processors, and network resources such as bandwidth. As an example, if hundreds of operations <NUM> were executed at the same time, the execution of the operations would significantly burden the resources <NUM>. Further, many operations <NUM> take a discrete amount of time to complete. Thus, if two operations that each take a minute to complete were scheduled to start thirty seconds apart, the operations would overlap, burdening resources, although the operations do not have the same start time.

In an embodiment, the data repository <NUM> is any type of storage unit and/or device (e.g., a file system, database, collection of tables, or any other storage mechanism) for storing data. Further, the data repository <NUM> may include multiple different storage units and/or devices. The multiple different storage units and/or devices may or may not be of the same type or located at the same physical site. Furthermore, the data repository <NUM> may be implemented or may execute on the same computing system as the operation scheduler <NUM> and the cost determination engine <NUM>. Alternatively or additionally, the data repository <NUM> may be implemented or executed on a computing system separate from the operation scheduler <NUM> and the cost determination engine <NUM>. The data repository <NUM> may be communicatively coupled to the operation scheduler <NUM> or cost determination engine <NUM> via a direct connection or via a network.

In an embodiment, the data repository <NUM> includes an operation execution schedule <NUM> and resource descriptions <NUM>. The operation execution schedule <NUM> may be a list of scheduled operations and their associated start times. As an example, the operation execution schedule <NUM> may indicate that a file backup operation is to be executed every Friday at 9pm. As another example, the operation execution schedule <NUM> may indicate that a virus scan is to be executed daily at 2am. The operation execution schedule <NUM> may be stored as a function (e.g., an initial start time and an interval used to compute all other start times for the periodically scheduled operation).

In an embodiment, resource descriptions <NUM> describe the resources available for executing the operations <NUM>. Resource descriptions <NUM> may identify, for example, a number of hardware processors available for execution and the processing speed of each processor. The operation execution schedule <NUM> and resource descriptions <NUM> may be stored in contiguous memory locations or non-contiguous memory locations of the data repository <NUM>.

In an embodiment, the operation scheduler <NUM> schedules an operation <NUM> at an execution interval <NUM>. For example, an operation may need to be periodically executed every <NUM> minutes. In this case, the operation scheduler <NUM> would configure a ten-minute execution interval for execution of the operation. The execution interval may be specified, for example, in milliseconds, seconds, minutes, hours, weeks, months, or years. A time period during which an operation may be executed may also be specified. For example, an operation is to be executed every hour, but may not be executed in the first five minutes after the start of the hour. In this case, the time period for execution of the operation is the latter fifty-five minutes of each hour.

In an embodiment, a cost determination engine <NUM> includes hardware and/or software for determining a cost <NUM> associated with a candidate start time. The cost determination engine <NUM> may receive a request to determine the cost <NUM> for one or more candidate start times from the operation scheduler <NUM>. The cost determination engine <NUM> may determine the cost <NUM> based at least in part on the operation execution schedule <NUM>.

The cost for a particular candidate start time may correspond to any value which may be interpreted on a scale relative to costs for other candidate start times. As an example, the cost for one candidate start time may be <NUM> out of <NUM>, whereas the cost for another candidate start time may be <NUM> out of <NUM>. In another example, the cost may be presented as letters (e.g., A, B, C, D.

An increase in cost of a candidate start time for a new operation represents an increase in estimated resource utilization. As an example, a cost for a candidate start time (for a new operation) on the high end of a cost scale may reflect that other previously scheduled operations start at respective times that are close to the candidate start time for the new operation. When the start times, of the previously scheduled operations, are close to the candidate start time for the new operation, there is high likelihood of concurrent access to the resources used by both the previously scheduled operations and the new operation. A cost for a candidate start time (for a new operation) on the low end of a cost scale may reflect that other previously scheduled operations start at respective times that are far from the candidate start time for the new operation. When the start times, of the previously scheduled operations, are far from the candidate start time for the new operation, there is low likelihood of concurrent access to the resources used by both the previously scheduled operations and the new operation. Accordingly, the cost determination engine <NUM> may determine the cost <NUM> for a new operation based, at least in part, on the start times of previously scheduled operations.

<FIG> illustrates an exemplary set of operations for scheduling a start time for a periodic operation, in accordance with one or more embodiments. One or more operations illustrated in <FIG> may be modified, rearranged, or omitted altogether. Accordingly, the particular sequence of operations illustrated in <FIG> should not be construed as limiting the scope of one or more embodiments.

In an embodiment, the operation scheduler receives a request for scheduling a start time for a new operation <NUM>. For example, the operation scheduler may receive a request from a user to schedule a periodic operation. The request may indicate that data is to be copied from a local machine to cloud storage every day at the same time of day. A schedule may specify a first time (e.g., one week after creation) at which the system is to begin periodically replicating data from primary storage to secondary storage. A system may schedule an operation as part of a larger process.

Subsequent to receiving a request to schedule a start time for a new operation, the operation scheduler determines whether other operations have been previously scheduled (Operation <NUM>). If no other operations are scheduled, the operation scheduler may schedule the new operation at an arbitrary time (Operation <NUM>). Scheduling the operation at an "arbitrary time" as referred to herein, includes using any algorithm to determine the start time which is not based on previously scheduled operations. The operation scheduler may select a start time that is at the beginning of a time period during which the new operation may be scheduled. Alternatively, the operation scheduler may schedule the new operation based on historic usage statistics. As an example, the operation scheduler may receive a request to schedule a new operation once daily. The operation scheduler determines that no other operations have been previously scheduled. As a result, the operation scheduler determines usage statistics to select a time for scheduling the new operation. The operation scheduler determines that system resources are typically used from 7am to 6pm and not typically used from 6pm to 7am. Based on the low or no usage period from 6pm to 7am, the operation scheduler schedules the new operation for 6pm daily. Usage statistics, as described above, may be used in combination with the cost analysis for candidate start times described herein.

If other operations are previously scheduled, the operation scheduler determines a start time for the new operation based at least on previously scheduled operations. The operation scheduler identifies the previously scheduled operations from an operation execution schedule (Operation <NUM>). For example, the operation scheduler may determine that a periodic operation has been previously scheduled to execute every fifteen minutes: at the start of every hour, fifteen minutes after the start of each hour, thirty minutes after the start of every hour, and forty-five minutes after the start of each hour. As another example, the operation scheduler may identify three operations scheduled for periodic execution at respective times. The three operations may be scheduled for execution once every minute, once per day, and once per month, respectively.

In an embodiment, the operation scheduler identifies candidate start times for the new operation based on the interval at which the new operation is to be scheduled (Operation <NUM>). The operation scheduler selects a time period corresponding to a length of the interval at which the new operation is to be scheduled. As an example, an operation scheduler receives a request at <NUM>:55pm to schedule a new operation every fifteen minutes. The operation scheduler identifies a fifteen-minute time period from 9pm to <NUM>:15pm based on the interval size of fifteen minutes. In this example, the time period is selected to start five minutes after the time the request is received (9pm is five minutes after <NUM>:55pm). However, the time period may be selected after any amount of time subsequent to when the request is received. Subsequent to determining the time period, the operation scheduler selects a set of candidate start times within the time period. The candidate start times may be selected at any level of granularity (e.g., every minute within the time period, every thirty seconds within the time period, etc.). Continuing the example, the operation scheduler may select candidate start times every minute within the fifteen-minute time period from 9pm to <NUM>:15pm (e.g., <NUM>:00pm, <NUM>:01pm, <NUM>:02pm. <NUM>:14pm). Alternatively, the operation scheduler may select candidate start times every two minutes (e.g., <NUM>:00pm, <NUM>:02pm, <NUM>:04pm. <NUM>:14pm).

In an embodiment, the operation scheduler selects multiple time periods corresponding to the interval for scheduling the new operation. The cost analysis for a particular candidate start time is computed using an average of the start times, from each of the multiple time periods, that correspond to the candidate start time. Continuing the above example, the operation scheduler may select fifteen-minute time periods from 9pm to <NUM>:15pm, <NUM>:<NUM> to <NUM>:30pm, <NUM>:30pm to <NUM>:45pm, and <NUM>:<NUM> to 10pm. The candidate start time <NUM>:01pm from the first time period corresponds to the candidate start times <NUM>:16pm, <NUM>:31pm, and <NUM>:46pm (one minute after the start of each time period). Determining the cost for any candidate start time (e.g., <NUM>:01pm), described below in further detail, may include averaging the costs determined for candidate start times <NUM>:01pm, <NUM>:16pm, <NUM>:31pm, and <NUM>:46pm. Analyzing the candidate start time (one minute from the start of each time period) across different time periods may be necessary to incorporate the effect of less frequently executed operations that have been previously scheduled. A previously scheduled operation may be scheduled for execution every thirty minutes. The previously scheduled operation may only be determined for two intervals (<NUM>:15pm to <NUM>:30pm and <NUM>:45pm to 10pm) of the four time intervals (<NUM>:15pm to <NUM>:30pm, <NUM>:30pm to <NUM>:45pm, and <NUM>:<NUM> to 10pm). As a result, consideration of only the first time period (<NUM>:00pm to <NUM>:15pm) which does not include the previously scheduled operation may not yield a complete cost analysis. Other possible calculations of incorporating the previously scheduled operation in the cost analysis may include multiplying a fraction of (a) the interval of the new operation to (b) the interval of the previously scheduled time interval (<NUM> minutes/<NUM> minutes) to a cost component associated with the previously scheduled time interval. Examples below further describe the above computation and alternate computations that may be executed in accordance with one or more embodiments.

In an embodiment, the cost determination engine determines the cost associated with candidate start times for the new operation (Operation <NUM>). As described above, the candidate start times within a time period may be identified. The cost determination engine may determine a cost for each candidate start time based on the start times, of previously scheduled operations, within the same time period. Specifically, the cost determination engine determines the cost based at least on a difference value between (a) a candidate start time for the new operation and (b) each start time within the same time period of previously scheduled operations. The cost determination engine executes a function which computes a cost that decreases in proportion to the increase in the difference values. The function may compute a cost that exponentially decreases in proportion to the increase in the difference values. A difference value of zero is computed when the candidate start time is the same as a start time of a previously scheduled operation.

As noted above, the cost determination engine determines the cost based at least on a difference value between (a) a candidate start time for the new operation and (b) each start time within the same time period of previously scheduled operations. Computing the difference value for the candidate start time with respect to multiple start times, within the same time period, of one or more previously scheduled operations results in multiple difference values. The cost determination engine assigns a cost component (and/or weight) to each difference value resulting in multiple cost components. The cost for the candidate start time is computed as a function of the multiple cost components.

Continuing the above example, a particular time period from <NUM>:00am to <NUM>:15am is selected for scheduling a first execution of a new operation that is to be periodically executed every fifteen minutes. Within the particular time period, the start times <NUM>:00pm, <NUM>:01pm, <NUM>:02pm, <NUM>:03pm. <NUM>:14pm are identified as candidate start times for the new operation. The cost determination engine identifies a start time of one previously scheduled operation as <NUM>:07pm. The difference values for each of the candidate start times may be computed as follows:.

As illustrated above, the candidate start times of <NUM>:<NUM> and <NUM>:<NUM> correspond to the highest difference with the start time <NUM>:<NUM> of the previously scheduled operation. The cost determination engine computes a lowest cost (of all costs computed for the various candidate start times) for the candidate start times <NUM>:<NUM> and <NUM>:<NUM> based on the highest difference value.

The cost determination engine computes a highest cost for the candidate start time <NUM>:<NUM> which has the lowest difference value ('<NUM>') with the start time <NUM>:<NUM> of the previously scheduled operation.

In an embodiment, the cost determination engine analyzes the start times of multiple different previously scheduled operations. The cost determination engine determines a cost for each candidate start time for a new operation based on the start times of the multiple different previously scheduled operations. The cost determination engine determines a cost component attributable to each previously scheduled operation. The interval of each previously scheduled operation is used to determine a weight assignable to the cost component attributable to each of the previously scheduled operations. As an example, a first previously scheduled operation, that is scheduled twice as frequently as a second previously scheduled operation, may have a weight assignment that is twice the weight assignment of the second previously scheduled operation. Example computations relating to multiple different previously scheduled operations, which should not be construed as limiting the scope of the claims, are described below.

In an embodiment, the operation scheduler receives the cost for each of the candidate start times from the cost determination engine. The operation scheduler selects a candidate start time with the lowest cost as a start time for the periodic execution of the new operation (Operation <NUM>). The operation scheduler schedules the execution of the new operation in the operation execution schedule. The operation scheduler may compute all start times based on the interval and specify the computed start times. The operation scheduler may note a function in the operation execution schedule which includes the initial start time and the interval.

<FIG> illustrates an example in which the operation scheduler schedules an operation to be performed every <NUM> minutes. Thus, the operation scheduler identifies fifteen potential candidate start times, one for every minute in the interval. The operation scheduler further identifies two previously scheduled start times 304a, 304b. Considering one particular candidate start time <NUM> at minute <NUM>, the operation scheduler determines the difference in time between the candidate start time <NUM> and each scheduled start time 304a, 304b. Counting in a clockwise fashion, the difference in time is <NUM> minutes for start time 304a and <NUM> minutes for start time 304b. But, counting in a counterclockwise fashion, the difference in time is <NUM> minutes for start time 304a and the difference in time is <NUM> minutes for start time 304b. Thus, it is possible to overestimate the time difference between periodic operations. Representing the possible candidate start times in a circular fashion enables the selection of the shortest difference in time, regardless of direction. For example, the operation scheduler may represent candidate start times as a circular array.

<FIG> illustrate exemplary operations for calculating the cost for a particular candidate start time. One or more operations described herein may be modified, rearranged, or omitted altogether. Accordingly, the particular sequence of operations illustrated described below should not be construed as limiting the scope of one or more embodiments.

<FIG> illustrates an example in which an operation is to be performed every <NUM> minutes. This may be referred to as a "new operation" or a "first operation. " Because there are five minutes in the interval, the operation scheduler identifies five possible starting minutes. Five candidate start times (numbered <NUM>-<NUM>) are shown in circular representation 400a.

In the example shown in <FIG>, there is one previously scheduled operation 402a (also referred to herein as a "second operation") in this interval. In <FIG>, the number of previously scheduled operations for each minute in the interval is shown in brackets. In this case, there is only one operation scheduled, at minute <NUM>. Hence, the time slot for minute three contains a <NUM> in brackets, while the time slots for the other four minutes contain zeroes in brackets.

In an embodiment, the operation scheduler determines the cost for a particular candidate start time as a function of the difference between the particular candidate start time and the start time of the second operation. To ensure that the cost increases with proximity to the start time of the second operation, the operation scheduler sets the lowest cost for the candidate start time farthest from the start time of the second operation. This lowest cost could be set to any number; by way of example here, it is set to one. The cost for each successively nearer candidate start time may then be multiplied by a constant ("K"), such that the cost increases as the particular candidate start time approaches the start time of the second operation. For example, a constant of K = <NUM> will be used here.

In <FIG>, there is a second operation 402a scheduled to be performed at minute <NUM>. There are two farthest start times from the second operation start time, at minutes <NUM> and <NUM>. Thus, minutes <NUM> and <NUM> are each assigned a cost of <NUM>. Stepping towards the second operation start time 402a, minutes <NUM> and <NUM> are next. The cost associated with minutes <NUM> and <NUM> is <NUM> x <NUM> = <NUM> (the cost for the next-farthest candidate start time multiplied by K= <NUM>). Stepping towards the second operation start time 402a once again, minute <NUM> is next. The cost for minute <NUM> is <NUM> x <NUM> = <NUM> (the cost for the next-farthest candidate start time times K = <NUM>).

Thus, the cost grows in an exponential fashion as the difference between the particular start time and the start time of the second operation decreases. It has been found that this yields a satisfactory distribution of start times.

Having calculated a cost for each potential candidate start time, the operation scheduler selects the start time with the lowest cost, to minimize interference between operations. In this particular example, minutes <NUM> and <NUM> each have a cost of <NUM>. Either of these start times could be selected with minimal interference from the second operation. In an embodiment, the operation scheduler selects the first in time of the minimum cost alternatives (minute <NUM> here). Alternatively, the operation scheduler could choose one of the minimum cost alternatives randomly, such as with a random number generator.

<FIG> illustrates an example in which a first operation is to be performed every five minutes. Five candidate start times (numbered <NUM>-<NUM>) are shown in circular representation 400b. Multiple operations (a "second operation," "third operation," etc.) have already been scheduled to occur in this particular interval. As indicated by the numbers in brackets, there are four previously scheduled operations at minute <NUM> (402b), <NUM> previously scheduled operation at minute <NUM>, and so forth. In the following example, the operation scheduler takes these different quantities of previously scheduled operations into account in calculating a cost.

In an embodiment, the cost for each particular candidate start time is a function of a weight factor that varies with the difference in time between a particular candidate start time and each other potential start time. The cost is also a function of the number of scheduled operations at a given start time, or "counts. " The counts for each candidate start time are shown in brackets in <FIG>.

In an embodiment, the operation scheduler sets the lowest weight Wmin and the highest weight Wmax to specified values. For example, the operation scheduler sets Wmin equal to <NUM>, for the time farthest from the particular candidate start time for which the cost is being calculated. The operation scheduler sets Wmax equal to <NUM>, for the particular candidate start time for which the cost is being calculated. Other values could, however, be selected for Wmin and Wmax.

The operation scheduler then determines a weight for each remaining potential start time by multiplying the weight of the next farthest start time from the particular candidate start time by a constant K. This constant is equal to the Nth root of the ratio of the maximum weight value to the minimum weight value, where N is the number of steps from the most distant time to the start time for which the cost is being calculated: <MAT>.

For example, to determine the cost for a candidate start time at minute <NUM> (402b), the maximum weight value is <MAT>.

There are two potential start times which are most distant from the particular candidate start time 402b, at minutes <NUM> and <NUM>. These start times are <NUM> minutes from the particular candidate start time 402b, thus, N = <NUM>. The weight is set to Wmin = <NUM> for minutes <NUM> and <NUM>.

Stepping in towards the particular candidate start time at minute <NUM>, the next nearest start times are at minutes <NUM> and <NUM>. The weight for minutes <NUM> and <NUM> is: <MAT>.

Using these weights, the operation scheduler determines the cost as the sum of the weighted count values. Thus, for the candidate start time at minute <NUM>, the cost is: <MAT>.

Executing the above process for each of the four remaining candidate start times in the interval yields a cost of <NUM> for minute <NUM>, <NUM> for minute <NUM>, <NUM> for minute <NUM>, and <NUM> for minute <NUM>. Thus, the start time candidate with the lowest cost is at minute <NUM>.

The counts values described above need not be integers. Consider the case in which the operation scheduler receives a request to schedule a first operation, while a second operation has already been scheduled. The first operation is to be performed more frequently than the second operation. For example, the second operation is scheduled to be executed on a daily basis, and the first operation is to be executed once per hour. There are <NUM> candidate start times for the new hourly operation. There is only one hour in the day in which the second operation occurs. Thus, the second daily operation will only collide with the new hourly operation one time out of every <NUM> hourly updates. In this case, the counts value for this time slot is <NUM>/<NUM> = <NUM>.

As another example, the operation scheduler receives a request for scheduling a start time for a new operation, to be executed every <NUM> minutes. The operation scheduler identifies a previously scheduled operation that is to be executed every <NUM> minutes at <NUM> minutes after the hour. In this case, the operation scheduler applies a counts value of <NUM>/<NUM> = <NUM> to the eighth candidate starting time for the new operation.

In an embodiment, if the operation scheduler receives a request to schedule an operation to occur at an interval greater than or equal to an hour, the hour and minute of the start time may be independently selected. The operation scheduler may select an hour and minute together by considering the <NUM> minutes in a day. Alternatively, the hour, the minute, or both may be specified independently. For instance, the operation scheduler may receive a request to schedule an operation during a specified hour. In another example, the operation scheduler sets the minute to begin an operation to a default value.

For example, the operation scheduler receives a request to perform an operation every day during the hour commencing at 3pm. The operation scheduler must then select the minute within that hour. To determine the starting minute within the chosen hour, the operation scheduler identifies candidate start times for every possible hour and minute combination in a day, but then restricts the cost determination to <NUM> candidate start times - only considering the sixty minutes in the hour commencing at 3pm.

Similarly, the operation scheduler may receive a request to schedule an operation with a particular minute for the starting time. For example, the operation scheduler receives a request that an operation occurs every day at <NUM> minutes after the hour, and the operation scheduler further receives a request to determine the best hour at which to commence the operation. In this case, the operation scheduler creates candidate start times for every hour and minute in a day, but restricts the cost determination to only include the fifth minute in every hour.

In an embodiment, the operation scheduler bifurcates the selection process for weekly or greater operation frequencies. This is useful for efficiency of computation. For example, computing the cost using a single array for a weekly update would require a <NUM>,<NUM>-element array. As an alternative, more efficient method, the operation scheduler splits the selection process into two steps.

For a new weekly update, first, the operation scheduler selects a day of the week. There are only <NUM> potential days within the week to choose from. The operation scheduler identifies scheduled start times for the execution of other operations. Operations scheduled to be executed daily or multiple times per day are ignored, as daily operations do not affect one day of the week more than another. Similarly, operations scheduled to be performed monthly are ignored, because monthly operations will fall on a given day of the week with equal likelihood. Thus, for selecting the day of the week, the operation scheduler only considers scheduled weekly updates. Given a chosen day of the week, the operation scheduler then selects an hour and minute of the day from the <NUM>,<NUM> minutes in a day.

Similarly, to schedule a monthly operation, the operation scheduler selects a day within the month first. The operation scheduler selects the day of the month from the first <NUM> days of a month, as this is the number of days that are guaranteed to appear in a month. The operation scheduler only considers other previously scheduled monthly operations, as each weekly, daily, or smaller interval has the same impact on the day of the month. Given a chosen day of the month, the operation scheduler then selects the hour and minute of the day.

Embodiments are directed to a system with one or more devices that include a hardware processor and that are configured to perform any of the operations described herein and/or recited in any of the claims below.

In an embodiment, a non-transitory computer readable storage medium comprises instructions which, when executed by one or more hardware processors, causes performance of any of the operations described herein and/or recited in any of the claims.

Any combination of the features and functionalities described herein may be used in accordance with one or more embodiments. In the foregoing specification, embodiments have been described with reference to numerous specific details that may vary from implementation to implementation. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.

The special-purpose computing devices may be hard-wired to perform the techniques, or may include digital electronic devices such as one or more application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs),or network processing units (NPUs) that are persistently programmed to perform the techniques, or may include one or more general purpose hardware processors programmed to perform the techniques pursuant to program instructions in firmware, memory, other storage, or a combination. Such special-purpose computing devices may also combine custom hard-wired logic, ASICs, FPGAs, or NPUs with custom programming to accomplish the techniques.

Volatile media include dynamic memory, such as main memory <NUM>. Common forms of storage media include, for example, a floppy disk, a flexible disk, hard disk, solid state drive, magnetic tape, or any other magnetic data storage medium, a CD-ROM, any other optical data storage medium, any physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, NVRAM, any other memory chip or cartridge, content-addressable memory (CAM), and ternary content-addressable memory (TCAM).

Storage media are distinct from but may be used in conjunction with transmission media. Transmission media participate in transferring information between storage media. For example, transmission media include coaxial cables, copper wire and fiber optics, including the wires that comprise bus <NUM>.

Claim 1:
A computer readable medium comprising instructions which, when executed by one or more hardware processors (<NUM>), cause performance of operations comprising:
identifying a particular time period during which a first operation is to be executed, wherein the first operation is to be periodically executed;
identifying a plurality of candidate start times (<NUM>) within the particular time period for executing the first operation, wherein the plurality of candidate start times (<NUM>) comprises a first candidate start time (<NUM>) and a second candidate start time (<NUM>);
determining one or more scheduled start times (304a, 304b) scheduled for execution of one or more other operations, wherein the one or more scheduled start times (304a, 304b) comprise a respective scheduled start time (304a, 304b) of each respective operation of said one or more other operations;
characterized by:
determining a first cost (<NUM>) for the first candidate start time (<NUM>) based at least on a first time difference between the first candidate start time (<NUM>) and a particular scheduled start time (304a, 304b) of a second operation of said one or more other operations, wherein the first cost (<NUM>) increases with proximity between the first candidate start time (<NUM>) and the particular scheduled start time (304a, 304b) of the second operation;
determining a second cost (<NUM>) for the second candidate start time (<NUM>) based at least on a second time difference between the second candidate start time (<NUM>) and the particular scheduled start time (304a, 304b) of the second operation, wherein the second cost (<NUM>) increases with proximity between the second candidate start time (<NUM>) and the particular scheduled start time (304a, 304b) of the second operation; and
responsive at least to determining that the first cost is lower than the second cost, selecting the first candidate start time (<NUM>) for executing the first operation.