Storage system workload scheduling for deduplication

The described method optimizes workload scheduling in storage systems by co-scheduling correlated processes to enhance deduplication rates and cache performance, addressing inefficiencies in existing deduplication technologies.

JP7773842B2Active Publication Date: 2025-11-20INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2024519747
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-10-07
Filing Date
2022-08-09
Publication Date
2025-11-20
Estimated Expiration
2042-08-09

AI Technical Summary

Technical Problem

Existing storage systems face inefficiencies in deduplication due to limited memory and the challenge of optimizing workload scheduling for deduplication, leading to suboptimal deduplication rates and read caching performance.

Method used

A method and system for workload scheduling that determines dynamic deduplication correlations between processes, schedules them to maximize deduplication rates by co-scheduling correlated workloads, and utilizes an epoch graph to track recent deduplication behaviors.

Benefits of technology

Improves deduplication rates and read caching performance by scheduling workloads that are likely to share data in the deduplication database, enhancing deduplication efficiency and cache hit rates.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007773842000001
    Figure 0007773842000001
  • Figure 0007773842000002
    Figure 0007773842000002
  • Figure 0007773842000003
    Figure 0007773842000003
Patent Text Reader

Abstract

A computer-implemented method enables workload scheduling in a storage system for optimized deduplication. The method includes determining a dynamic deduplication correlation between workload processes in a previous time window. The workload process includes one or more tasks having defined execution timing parameters. The method further includes determining a deduplication ratio based on the deduplication correlation between the workload processes. The method further includes scheduling a plurality of workload processes based on a highest determined deduplication ratio among the determined deduplication ratios.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present disclosure relates to workload scheduling in storage systems, and more particularly to workload scheduling in storage systems that use deduplication. [Background technology]

[0002] Thin provisioning is the concept of storage not fully allocating available capacity. Storage is allocated only when it has to be used. Both block and file systems utilize equivalents of this concept. File systems are effectively thin provisioned by their nature (files can only be allocated at the time of creation), and block storage systems may implement thin provisioning by using a forward lookup structure to map allocated ranges to physical storage media. Storage can either be kept local to one volume or pooled among multiple volumes. Thin provisioning allows for the implementation of advanced space-saving techniques, such as compression and deduplication, because it only requires updating the forward lookup structure with the appropriate details (e.g., whether it is compressed or not, or pointing the forward lookup structure for the virtual address to another forward lookup structure entry containing the data in question). Summary of the Invention

[0003] According to an aspect of the present disclosure, a computer-implemented method for workload scheduling in a storage system for optimized deduplication is provided. The method includes determining a dynamic deduplication correlation between workload processes in a previous time window. The workload process includes one or more tasks having defined execution timing parameters. The method further includes determining a deduplication rate based on the deduplication correlation between the workload processes. The method further includes scheduling a plurality of workload processes based on a highest determined deduplication rate among the determined deduplication rates.

[0004] According to another aspect of the present disclosure, a computer system is provided that includes a memory and a processor communicatively coupled to the memory. The processor is configured to execute a method. The method includes determining a dynamic correlation of deduplication among workload processes in a previous time window. The workload process includes one or more tasks having defined execution timing parameters. The method further includes determining a deduplication ratio based on the deduplication correlation among the workload processes. The method further includes scheduling a plurality of workload processes based on a highest determined deduplication ratio among the determined deduplication ratios.

[0005] According to a further aspect of the present disclosure, a computer program product is provided. The computer program product includes a computer-readable storage medium having program instructions embodied thereon. The program instructions are executable by a processor to cause the processor to perform a method. The method includes determining a dynamic correlation of deduplication among workload processes in a previous time window. The workload process includes one or more tasks having defined execution timing parameters. The method further includes determining a deduplication ratio based on the deduplication correlation among the workload processes. The method further includes scheduling the plurality of workload processes based on a highest determined deduplication ratio among the determined deduplication ratios.

[0006] The computer-readable storage medium may be a non-transitory computer-readable storage medium, and the computer-readable program code may be executable by a processing circuit. [Brief explanation of the drawings]

[0007] The drawings included in this disclosure are incorporated in and form a part of this specification. They illustrate embodiments of the present disclosure and, together with the description, serve to explain the principles of the present disclosure. The drawings are merely illustrations of typical embodiments and are not limiting of the present disclosure.

[0008] [Figure 1] FIG. 1 is a flow diagram of an exemplary embodiment of a method according to an embodiment of the present disclosure.

[0009] [Figure 2] FIG. 1 is a flow diagram of an exemplary embodiment of a method flow associated with components of an exemplary embodiment of a system, according to an embodiment of the present disclosure.

[0010] [Figure 3A] FIG. 1 is a flow diagram of an exemplary embodiment of a method aspect, according to an embodiment of the present disclosure.

[0011] [Figure 3B] FIG. 1 is a flow diagram of an exemplary embodiment of a method aspect, according to an embodiment of the present disclosure.

[0012] [Figure 4A] FIG. 2 is a schematic diagram illustrating an exemplary embodiment of a data structure, according to an embodiment of the present disclosure.

[0013] [Figure 4B] FIG. 2 is a schematic diagram illustrating an exemplary embodiment of a data structure, according to an embodiment of the present disclosure.

[0014] [Figure 4C] FIG. 2 is a schematic diagram illustrating an exemplary embodiment of a data structure, according to an embodiment of the present disclosure.

[0015] [Figure 4D] FIG. 2 is a schematic diagram illustrating an exemplary embodiment of a data structure, according to an embodiment of the present disclosure.

[0016] [Figure 5] FIG. 1 is a block diagram of an exemplary embodiment of a system according to an embodiment of the present disclosure.

[0017] [Figure 6] FIG. 1 is a high-level block diagram of an exemplary computer system that may be used to implement one or more of the methods, tools, and modules, and any associated functionality described herein, according to embodiments of the present disclosure.

[0018] [Figure 7] FIG. 1 is a diagram of a cloud computing environment according to an embodiment of the present disclosure.

[0019] [Figure 8] FIG. 1 is a diagram of abstraction model layers according to an embodiment of the present disclosure.

[0020] While the embodiments described herein are susceptible to various modifications and alternative forms, specific features thereof have been shown by way of example in the drawings and will be described in detail. It is to be understood, however, that the particular embodiments described are not to be construed in a limiting sense. On the contrary, it is intended to cover all modifications, equivalents, and alternatives that are within the scope of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION

[0021] Deduplication works by utilizing an in-memory lookup table that contains partial hashes, or fingerprints, of recent writes. Incoming input / output (IO) operations are first hashed using an algorithm such as SHA-1 or SHA-256. That hash is then compared against the lookup table to determine if a match may exist within the system for this IO. If a potential match exists, the potential match is subject to a lookup to determine if a full hash is located within the storage system. If a full hash is located within the storage system, a reference is made to the virtual address and volume to which the write is being attempted that references the location of the potential match.

[0022] The size of the in-memory lookup table is one factor that determines whether a deduplication reference is found. In some virtualized storage controllers, deduplication lookups are limited to the memory available in the cluster, and deduplication can only be performed within an IO group. This is called the deduplication fingerprint database.

[0023] Job scheduling is a slightly different field from task scheduling. Job scheduling handles larger jobs, often in high-throughput computing domains, while task scheduling refers to how individual processes are allocated processing time. Various job schedulers exist that can handle scheduling long-running jobs, typically in high-throughput compute clusters. Some of these job schedulers support a concept known as co-scheduling, the principle that certain applications may support co-location on a given compute node. One illustrative example of co-scheduling may be an IO-bound process with a central processing unit (CPU)-intensive process and a graphics processing unit (GPU)-intensive process, since these processes may be able to coexist without adversely interacting with each other.

[0024] The described method and scheduling system determines the correlation between workload processes and deduplication and uses that correlation when scheduling workload processes. The goal is to schedule workload processes that are correlated with deduplication together, either simultaneously or closely in time, so that deduplication is more likely to occur. The result may be said to have achieved an optimized deduplication rate.

[0025] An optimized deduplication rate improves the hit rate in the deduplication fingerprint database, which is typically limited by memory. This also has the effect of improving read caching behavior for deduplicated reads if they are similar and correlated. Co-scheduling similar workloads increases the likelihood of finding problematic data already in cache.

[0026] A workload process may include an individual task or a recurring task. A workload process may be in the form of a long-running process of an IO operation. One example of a workload process may be a remote copy workload. However, any batch task or backup task may be subject to the described job scheduling algorithm. A workload process may be host-originated or storage-originated, and either may be controlled by the described scheduler system.

[0027] Referring to Figure 1, a flow diagram illustrates an exemplary embodiment of the described method 100 performed by a scheduling system. The scheduling system may be provided as part of a storage system in which deduplication is used.

[0028] At operation 101 of method 100, workload processes from hosts and / or storage systems are registered with a scheduling system. This includes providing metadata associated with each workload process regarding execution timing parameters of tasks within the workload process at operation 102. In one embodiment, the execution timing parameters may include a minimum frequency of the task (e.g., how often the task needs to be executed, e.g., daily, hourly, etc.) and an expected duration of the workload process. In another embodiment, the execution timing parameters may define a desired execution time of the task with a tolerance window to allow flexible allocation.

[0029] Based on the metadata, execution timing parameters, e.g., task execution windows, are defined for the workload processes, which allow for task execution flexibility in the workload processes that are used by the scheduling system to optimize deduplication.

[0030] For example, if you have a backup task that needs to run at least every X hours to provide a good backup, there is leeway as to when it can actually run, which is used in scheduling to optimize deduplication between workloads.

[0031] An exemplary workload process may be a long-running process, such as a Global Mirror with Change Volume (GMCV) relationship. The minimum frequency is determined by the desired recovery point objective (RPO), but running it more frequently may be harmless. The duration and throughput may be time-dependent functions, as they depend on the IOs being sent to the volume during the duration. Based on the previous history of a given operation, they may be estimated either through statistical mechanisms or machine learning approaches.

[0032] Additional non-timing execution parameters may also be defined by the metadata. Such parameters may define task targets. For example, a copy target may be defined as an execution parameter that may also be used to correlate workloads. Parameters related to task throughput may also be included in the metadata. Throughput may determine the bandwidth or IO operations per second of a given task. If a task is relatively input / output operations per second (IOPs) intensive, scheduling it with another task may be undesirable if it would exceed the system's available bandwidth.

[0033] In operation 103, method 100 determines a correlation between workload processes with respect to deduplication between the processes. For example, method 100 may determine a correlation between workload processes with respect to past or previous deduplication. The correlation can be based on recent past deduplication between the processes so that the correlation is kept up to date to provide a dynamic correlation. In this manner, the dynamic correlation can be determined in a previous time window immediately prior to or closely prior to the current time. This ensures that the deduplication relationship between two workloads used for scheduling is an up-to-date relationship.

[0034] Correlation can be determined when workload processes run within a defined time or within a defined throughput of each other. Workload processes can deduplicate from each other only if their fingerprints (e.g., hashes) are in a deduplication fingerprint database (e.g., a hash table), which is memory-limited. Fingerprints are aged out of the database if deduplication does not occur. If one workload occurs some time after another, it may not deduplicate even if the workloads would otherwise strongly deduplicate from each other, because the fingerprints are aged out of the database before a match can be found.

[0035] In one embodiment, correlation may be determined using a two-dimensional (2D) structure, such as a table or graph, that can be input to describe the correlation between any two given workload processes. The achieved deduplication ratio may be considered and / or utilized here. For example, for a given colocated run, two processes may be suggested to share deduplication behavior if a high deduplication ratio is achieved. In its simplest form, this table may simply be a list of the deduplication ratios achieved when the processes run within N minutes of each other, or within M terabytes of throughput of each other. (In other words, the deduplication database would still contain the details of this earlier process.)

[0036] In another embodiment, a more sophisticated approach to determining correlation may be to tag IOs associated with long-running processes in the deduplication database. This allows any process to be tagged with a count of deduplication references associated with a given process, as long as it remains in the deduplication fingerprint database. This costs a small amount of metadata per reference, which can be stored in the forward lookup structure itself rather than in the database when creating the reference or chunk.

[0037] At operation 104, method 100 generates an epoch graph structure for the plurality of workload processes having epochs spanning a given period of time, showing deduplication relationships between the plurality of registered workload processes. The epoch graph may be described as a slice of the entire correlation graph for the given period of time. The epoch graph structure may include a node for each workload process with connecting edges representing deduplication rates between the workload processes.

[0038] Over the course of a training period, e.g., 24 hours or a week, the number of deduplications between IO processes can be stored in an epoch graph structure. This is a continuous training period in a time window before the current time. In this way, the epoch graph provides a sliding time window to separately capture recent behavior. In this epoch graph, edges contain details of deduplication rates, e.g., total IOs and total number of deduplicated references. This is the current epoch of the system. Several of these epoch graphs can be stored to provide a continuous history of the system and to determine interactions between IO processes.

[0039] The epoch graph may be input as part of the operation to perform deduplication. In a simple implementation, counts of deduplication savings between workloads may be stored in the epoch graph.

[0040] According to at least one embodiment of the present disclosure, in operation 105, the epoch graph is pre-populated with related workload processes. Prior knowledge can be encoded into the system in this manner. This can be determined by user input: for example, two workloads sourced from a virtual desktop infrastructure (VDI) environment can be considered similar; or, as another example, a workload spawned from a container pod can be similar to a previous workload. This is particularly useful for new workloads that can be expected to have similarities with other related workloads. According to at least one alternative embodiment, method 100 can proceed from operation 104 to operation 106 without performing operation 105.

[0041] In operation 106, method 100 schedules multiple workload processes simultaneously or closely in time based on correlations between the workload processes and defined execution timing parameters of the workload processes to achieve an optimized deduplication rate. The scheduling may also take into account any additional non-timing execution parameters, such as task targets or throughput of a given task.

[0042] Scheduling is intended to be continuous with updated epochs and new workload processes affecting the recognition of deduplication relationships between workloads and therefore affecting scheduling.

[0043] When scheduling workload processes, such as long-running schedulable write IO operations, the epoch graph is used to preferentially schedule related processes close to each other if they fit within the same possible processing window of their execution timing parameters. This means that data from these processes is more likely to be retained in the deduplication database and therefore has a higher deduplication rate.

[0044] According to at least one embodiment of the present disclosure, in operation 107 of method 100, scheduling adjusts task regularity or execution time within the workload process as long as it meets any defined minimum or tolerance requirements defined in the metadata. According to at least one alternative embodiment, method 100 may proceed from operation 106 to operation 108 without performing operation 107.

[0045] According to at least one embodiment of the present disclosure, operation 108 of method 100 takes into account the throughput of the storage system over time and how this throughput may be affected by the scheduling algorithm, which affects how quickly deduplication references age out of the deduplication fingerprint database. According to at least one alternative embodiment, method 100 does not include performing operation 108.

[0046] A scheduling approach based on workload, rather than simply the amount of deduplication that exists between two given volumes, has advantages. A given volume may initially share many similarities with another volume; however, they may be subject to very different workloads. Two volumes of the same operating system may initially deduplicate very well; however, other workloads subsequently imposed on them may be very different.

[0047] An exemplary candidate for the described workload process scheduling is a remote copy process, specifically a volume such as a GMCV. The scheduling process can also be determined by additional execution parameters of the remote copy target (i.e., secondary / backup site). This allows multiple source sites to be scheduled to optimize their deduplication rates. In the instance of a remote copy volume that must have a minimum cycle type of one day, it may not be as relevant when the IO for that transfer actually occurs. This allows the freedom to be more sophisticated about scheduling when the IO actually occurs to improve deduplication rates.

[0048] The method may also be applicable to host-driven batch processes if they also register their tasks with a scheduler. For example, a backup task is one example of a long-running process, or indeed any other batch task that exists within a given cloud environment.

[0049] The scheduler system knows how workloads correlate with each other, and if there is some evidence that a workload on one storage controller may be correlated with another location (e.g., due to strong deduplication references with replicated workloads), it may be preferable to migrate the workload to a system where similar workloads typically reside.

[0050] For example, techniques such as non-disruptive volume migration may be used to move overloaded storage systems and volumes / workloads to the controller with the highest deduplication potential based on scheduler data, taking into account the selection of migration options for the volume / workload.

[0051] The scheduler system can also be leveraged in implementations such as three-site replication to allow scheduling knowledge based on deduplication behavior to be transferred across multiple deduplication storage systems.

[0052] Scheduling can be reduced to what is known as the "bin-packing" problem, which is finding optimal packing for jobs given various time windows. It is also closely related to the "knapsack" problem. The scheduling problem is NP-hard: even finding whether a given set of jobs can be executed simultaneously given various constraints is NP-complete. In the described case, it is essentially trying to pack "bags" in such a way as to maximize deduplication savings while still executing within a given time window or meeting required execution parameters.

[0053] Scheduling algorithms may utilize heuristics to solve these problems because the combinatorial search space is too large for a brute-force solution. These heuristics may be as simple as first-fit-decreasing. For example, choose the largest fitting job in the system and place it into the first time bin in which it fits. A simple variant that takes deduplication into account is to first place the given workload from the epoch graph constructed above that has the highest number of associated deduplication references. From there, the method may attempt to insert the most deduplication-enhancing workload into the time bin based on the deduplication predictions from the epoch graph. Scheduling algorithms may become more sophisticated to consider time constraints, bandwidth, etc.

[0054] Certain workloads may benefit more from this technique than others: container-based or virtual machine (VM) workloads may share common IO ranges with other workloads that also use such containers or VMs, regardless of whether the volumes are hosted by the same orchestrator.

[0055] A consequent property of the described mechanism is that co-scheduling related workload processes based on their correlated deduplication behavior means that if the workloads create references to each other (e.g., by performing a write), they are very likely to also perform similar reads (e.g., looking up the reference). Co-scheduling such workloads increases the likelihood that a given reference read by one volume is already present in the cache from another volume, thus improving the performance of such reads.

[0056] The benefits of the described method and system are higher deduplication savings and improved read cache hits versus deduplicated reference reads for co-scheduled workloads. Job scheduling is optimized for expected deduplication savings without prior knowledge of the data content.

[0057] Referring to FIG. 2, a block diagram 200 shows example system components illustrating the method flow of the system.

[0058] The deduplication storage system 240 may be provided with a host 220 that executes a host workload A 221 and a host workload B 222 on the deduplication storage system 240. The deduplication storage system 240 may operate with another storage system 230 that provides a replication workload C 231 and a replication workload D 232 on the deduplication storage system 240.

[0059] Scheduler system 210 may be provided with the described functionality, for example, the functionality described in method 100 of Figure 1. Host 220 may register 203 a workload, including tasks and frequencies, with scheduler system 210, which may notify 204 the host 220 when to execute tasks within the workload. Storage system 230 may also register 206 a workload, including tasks and frequencies, with scheduler system 210, which may notify 205 the storage system 230 when to execute tasks within the workload.

[0060] Scheduler system 210 receives notifications 207 from deduplication storage system 240 about deduplication relationships between workloads to build and maintain 201 epoch relationship graph 211. Task table 212 may also be maintained by scheduler system 210 with details 202 of registered workloads. Scheduler system 210 schedules workload processes for hosts, such as host 220, and storage systems, such as storage system 230, to optimize deduplication rates between workloads.

[0061] Because the scheduler system 210 can be a separate system from the deduplication storage system 240, the scheduler system 210 can be used to identify workloads within a larger distributed system that could otherwise be colocated / migrated.

[0062] Additionally, the scheduler system 210 can be utilized in implementations such as three-site replication to allow scheduling knowledge based on deduplication behavior to be transferred across multiple deduplication storage systems 240 .

[0063] 3A and 3B, flow diagrams 310, 320 illustrate an exemplary embodiment of initial write and reference creation and graph updates.

[0064] Figure 3A shows a flow diagram 310 for an initial write. A write IO is received (301). The write IO is created by registered workload X, and the IO is tagged as coming from workload X. The IO approaches the deduplication layer (302), and no deduplication candidates are found, so the IO is written to disk as a regular deduplication IO. Write forward lookup metadata is provided (311) as a virtual to physical address mapping with an indication of workload X: "VADDR 0xabcde > PADDR 0X1234 : WORKLOAD X."

[0065] An entry is added to the fingerprint database (303) and tagged with the workload that created it, X. The fingerprint database is updated to "FINGERPRINT (0xa512b) : cdisk - 0x41 : VADDR 0xabcde" (312).

[0066] FIG. 3B shows a flow diagram 320 for creating references and updating the workload graph for incoming IO writes.

[0067] A write IO is received (321). The write IO is created by registered workload Y, and the IO is tagged as coming from workload Y. The IO approaches the deduplication layer (322). The fingerprint database is checked (331) and a deduplication candidate is found in the fingerprint database: "FINGERPRINT (0xa512b) : cdisk - 0x41 : VADDR 0xabcde".

[0068] The forward lookup is checked (323) and the hash matches. It is selected to create a reference. The forward lookup finds "VADDR 0xabcde > PADDR 0X1234 : WORKLOAD X" (332).

[0069] A reference is created (324). Workload Y may be the same volume as workload X. The epoch graph is updated (325) to register that a reference has been created between workloads X and Y: "(X,Y)++; (Y,X)++; REFERENCES(X)++; REFERENCES(Y)++" (333).

[0070] With reference to FIGS. 4A-4D, an exemplary embodiment illustrates a possible simple scheduling algorithm that attempts to optimize deduplication savings based on creating an epoch graph.

[0071] This example makes a number of assumptions; among them is that the likelihood of a reference remaining over time is uniform. More sophisticated approaches are possible, and this is a simple, illustrative example of an approach that attempts to optimize deduplication when scheduling jobs.

[0072] 4A shows an epoch graph 410 created from a workload monitored over the course of a period such as days or weeks. For simplicity in this example, it is assumed that the system can only support a single workload at a time. Under more sophisticated scheduling algorithms, the problem can easily be extended to support co-scheduled concurrent workloads.

[0073] Figure 4B shows a fingerprint database 420 with a fixed size of 1500 entries of simulated states based on the epoch graph. The scheduling algorithm determines the next cycle of execution. For simplicity, it is assumed that each workload is scheduled once per cycle. Since G has the most references, it is selected to run first (421).

[0074] 4C shows that 906 entries belonging to G (i.e., in excess of 1500 entries) are aged out (421). For this heuristic, it is assumed that all entries belonging to the new workload will remain, and any existing ones will be aged out with a probability of remaining proportional to their count. Since A has the highest number of references among those that reference G, it is scheduled next (422).

[0075] 4D shows that the next workload is now scheduled. To do this, the expected fingerprint database count is used to determine which workload should be scheduled next.

[0076] In particular, the epoch graph 410 can be used to display the likelihood of a reference being present. So, if there are 1500 references in a table belonging to G, and the epoch table suggests that workload D constitutes 29% of the references made by G, it can be estimated that D still has 435 entries in the table from G. Since A has an estimated 1000 entries, it can also be calculated that it will provide an additional 150 entries using a similar calculation. If this is done for each remaining candidate workload, D is found to be the best candidate (423).

[0077] A 422 and G 421 are therefore aged out and D 423 is added to the schedule and fingerprint estimate. The scheduling algorithm may continue until all workloads have been scheduled.

[0078] A method for workload scheduling in a storage system for optimized deduplication includes determining dynamic deduplication correlations between workload processes in a previous time window, where the workload process includes one or more tasks having defined execution timing parameters. The method includes scheduling multiple workload processes simultaneously or closely in time based on the correlations between the workload processes in the time window and the defined execution timing parameters of the workload processes to achieve an optimized deduplication rate between the workload processes.

[0079] 5, an exemplary embodiment of scheduler system 210 is shown. Scheduler system 210 may include at least one processor 501, circuitry for performing the functions of the described components, which may be a hardware module, or a software unit running on at least one processor. Multiple processors executing parallel processing threads may be provided to enable parallel processing of some or all of the functions of the components. Memory 502 may be configured to provide computer instructions 503 to the at least one processor 501 to perform the functions of the components.

[0080] The scheduler system 210 includes a workload registration component 510 for registering a workload process with the system, including providing metadata of execution timing parameters associated with tasks of the workload process.

[0081] The scheduler system 210 includes a deduplication correlation component 520 for determining dynamic correlation of deduplication between workload processes in a previous time window. The deduplication correlation component 520 includes an epoch graph component 522 for generating an epoch graph structure for a plurality of workload processes for the time window, where the epoch graph structure includes deduplication rates based on past deduplication between the workload processes. The epoch graph component 522 may include an update component 523 for populating the epoch graph as deduplication is performed. The epoch graph component 522 may also include a pre-population component 524 for pre-populating the epoch graph structure with known related workload processes.

[0082] The deduplication correlation component 520 may include a historical correlation component 525 that determines historical deduplication correlation between workload processes by determining deduplication between two processes running within a defined time or within a defined throughput of each other such that the deduplication database still contains the earlier workload process. The historical correlation component 525 determines historical deduplication correlation between workload processes by tagging the input / output (IO) operations of the workload processes in the deduplication database and counting deduplication references between the workload processes.

[0083] The scheduler system 210 includes a workload scheduling component 530 for scheduling multiple workload processes simultaneously or closely in time based on correlations between the workload processes in a time window and defined execution timing parameters of the workload processes to achieve optimized deduplication rates among the workload processes.

[0084] The workload scheduling component 530 may include a throughput component 531 to consider the throughput of the storage system over time when scheduling multiple workload processes, including how the throughput is affected by the scheduling.

[0085] The workload scheduling component 530 may use, for example, a bin packing problem to find optimal packing for workload processes considering various time windows to maximize deduplication savings while still executing within execution timing parameters.

[0086] The scheduler system 210 may be separate from the deduplication storage system and may include a migration component 540 for identifying workload processes within the distributed system that may be migrated to optimize deduplication.

[0087] The scheduler system 210 may include a scheduling sharing component 550 for transferring scheduling knowledge based on deduplication behavior across multiple deduplication storage systems.

[0088] 6 illustrates a block diagram of components of a computing system that may be used for scheduler system 210, according to one embodiment of the present disclosure. It will be appreciated that FIG. 6 is intended to be an illustration of one implementation only and is not intended to suggest any limitation with regard to the environments in which various embodiments may be implemented. Many modifications to the illustrated environment may be made.

[0089] The computing system may include one or more processors 602, one or more computer-readable RAMs 604, one or more computer-readable ROMs 606, one or more computer-readable storage media 608, device drivers 612, read / write drives or interfaces 614, and network adapters or interfaces 616, all interconnected via a communications fabric 618. The communications fabric 618 may be implemented with any architecture designed to pass data and / or control information between processors (e.g., microprocessors, communications and network processors, etc.), system memory, peripheral devices, and any other hardware components in the system.

[0090] One or more operating systems 610 and application programs 611 are stored on one or more computer-readable storage media 608 for execution by one or more of the processors 602 through one or more of the respective RAMs 604 (which typically include cache memory). In accordance with embodiments of the present disclosure, in the illustrated embodiment, each of the computer-readable storage media 608 may be an internal hard drive magnetic disk storage device, CD-ROM, DVD, memory stick, magnetic tape, magnetic disk, optical disk, semiconductor storage device, e.g., RAM, ROM, EPROM, flash memory, or any other computer-readable storage medium capable of storing computer programs and digital information.

[0091] The computing system may also include a R / W drive or interface 614 for reading from and writing to one or more portable computer-readable storage media 626. Application programs 611 on the computing system may be stored on one or more of the portable computer-readable storage media 626 and read and loaded into the respective computer-readable storage media 608 via the respective R / W drive or interface 614.

[0092] The computing system may also include a network adapter or interface 616, such as a TCP / IP adapter card or a wireless communication adapter. Application programs 611 on the computing system may be downloaded to the computing device from an external computer or external storage device via a network (e.g., the Internet, a local area network, or other wide area network or wireless network) and the network adapter or interface 616. From the network adapter or interface 616, the programs may be loaded into the computer-readable storage medium 608. The network may include copper wire, fiber optic, wireless transmissions, routers, firewalls, switches, gateway computers, and edge servers.

[0093] The computing system may also include a display screen 620, a keyboard or keypad 622, and a computer mouse or touchpad 624. The device driver 612 interfaces to the display screen 620 for imaging, the keyboard or keypad 622, the computer mouse or touchpad 624, and / or the display screen 620 for pressure sensing of alphanumeric input and user selections. The device driver 612, the R / W drive or interface 614, and the network adapter or interface 616 may include hardware and software stored in the computer readable storage medium 608 and / or ROM 606.

[0094] The present invention may be a system, method and / or computer program product integrated at any possible level of technical detail. The computer program product may include a computer-readable storage medium (or media) having computer-readable program instructions that cause a processor to perform aspects of the present invention.

[0095] A computer-readable storage medium may be a tangible device that can hold and store instructions for use by an instruction execution device. The computer-readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes the following: portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disc read-only memory (CD-ROM), digital versatile disk (DVD), memory sticks, floppy disks, mechanically encoded devices such as punch cards or ridge structures in grooves on which instructions are recorded, and any suitable combination of the foregoing. As used herein, computer-readable storage media should not be construed as transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (e.g., light pulses through a fiber optic cable), or electrical signals transmitted through wires.

[0096] The computer-readable program instructions described herein may be downloaded from a computer-readable storage medium to each computing / processing device or to an external computer or external storage device via a network, such as the Internet, a local area network, a wide area network, and / or a wireless network. The network may comprise copper transmission cables, optical transmission fiber, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and transfers the computer-readable program instructions for storage in a computer-readable storage medium in the respective computing / processing device.

[0097] The computer-readable program instructions for carrying out the operations of the present invention may be either assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, configuration data for an integrated circuit, or source or object code written in any combination of one or more programming languages, including object-oriented programming languages ​​such as Smalltalk®, C++, or the like, and procedural programming languages ​​such as the “C” programming language or the like. The computer-readable program instructions may execute entirely on the user's computer, as a standalone software package, partially on the user's computer, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be to an external computer (e.g., via the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA) may execute computer readable program instructions to personalize the electronic circuitry by utilizing state information of the computer readable program instructions to perform aspects of the present invention.

[0098] Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.

[0099] These computer-readable program instructions may be provided to a processor of a computer or other programmable data processing apparatus to produce a machine, such that the instructions, executed by the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams. These computer-readable program instructions may also be stored on a computer-readable storage medium that can instruct a computer, programmable data processing apparatus and / or other device to function in a particular manner, such that the computer-readable storage medium having instructions stored therein has an article of manufacture including instructions that implement aspects of the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.

[0100] The computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device and cause the computer, other programmable apparatus, or other device to perform a series of operational steps to create a computer-implemented process, such that the instructions executing on the computer, other programmable apparatus, or other device implement the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.

[0101] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in a flowchart or block diagram may represent a module, segment, or portion of instructions, including one or more executable instructions for implementing a specified logical function. In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the figures. For example, two blocks shown in succession may actually be realized as a single step, executed concurrently, substantially concurrently, partially, or fully in an overlapping manner, or the blocks may possibly be executed in reverse order, depending on the functionality involved. It should also be noted that each block of the block diagrams and / or flowchart diagrams, and combinations of blocks in the block diagrams and / or flowchart diagrams, may be implemented by a special-purpose hardware-based system that performs the specified functions or operations or executes a combination of special-purpose hardware instructions and computer instructions.

[0102] Although this disclosure includes detailed descriptions of cloud computing, it will be understood that implementation of the teachings described herein is not limited to cloud computing environments. Rather, embodiments of the present invention can be implemented in conjunction with any other type of computing environment now known or later developed.

[0103] Cloud computing is a service delivery model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal administrative effort or interaction with the service provider. The cloud model may include at least five characteristics, at least three service models, and at least four deployment models.

[0104] The properties are as follows:

[0105] On-Demand Self-Service: Cloud customers can unilaterally provision computing capacity, such as server time and network storage, automatically as needed, without requiring human interaction with the service provider.

[0106] Wide network access: Capabilities are available over the network and accessed through standard mechanisms that facilitate use by heterogeneous thin or thick client platforms (e.g., cell phones, laptops, and PDAs).

[0107] Resource Pooling: A provider's computing resources are pooled to serve multiple customers using a multi-tenant model, with various physical and virtual resources dynamically allocated and reallocated according to demand. Location independence exists in that customers generally have no control over or knowledge of the exact location of the provided resources, but may be able to specify location at a higher level of abstraction (e.g., country, state, or data center).

[0108] Rapid Elasticity: Capacity can be rapidly and elastically provisioned, possibly automatically, to quickly scale out and rapidly released to quickly scale in. To the consumer, the capacity available for provisioning often appears unlimited and can be purchased in any amount at any time.

[0109] Metering Services: Cloud systems automatically control and optimize resource usage by leveraging metering capabilities appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts) at some level of abstraction. Resource usage can be monitored, controlled, and reported, thereby providing transparency to both providers and consumers of the services utilized.

[0110] The service model is as follows:

[0111] Software as a Service (SaaS): The consumer is offered the ability to use a provider's applications running on a cloud infrastructure. The applications are accessible from a variety of client devices through a thin-client interface such as a web browser (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.

[0112] Platform as a Service (PaaS): The ability offered to a consumer is to deploy consumer-created or acquired applications, written using programming languages ​​and tools supported by the provider, onto a cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, or storage, but does have control over the deployed applications and, in some cases, the application-hosting environment configuration.

[0113] Infrastructure as a Service (IaaS): The ability provided to a customer is to provision processing, storage, network, and other basic computing resources, and the customer can deploy and run any software, which may include operating systems and applications. The customer does not manage or control the underlying cloud infrastructure, but does have control over the operating system, storage, deployed applications, and possibly limited control over selected networking components (e.g., host firewalls).

[0114] The deployment model is as follows:

[0115] Private Cloud: Cloud infrastructure is operated exclusively for the organization. It may be managed by the organization or a third party and may exist on-premise or off-premise.

[0116] Community Cloud: Cloud infrastructure is shared by multiple organizations to support a specific community with shared concerns (e.g., mission, security requirements, policies, and regulatory compliance considerations). It may be managed by the organization or a third party and may exist on-premises or off-premises.

[0117] Public Cloud: Cloud infrastructure is made available to the general public or large industry organizations and is owned by organizations that sell cloud services.

[0118] Hybrid Cloud: This cloud infrastructure is a composite of two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technologies that allow for data and application portability (e.g., cloud bursting for load balancing between clouds).

[0119] Cloud computing environments are service-oriented with an emphasis on statelessness, low coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure that comprises a network of interconnected nodes.

[0120] Referring now to FIG. 7, an exemplary cloud computing environment 50 is shown. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 10 with which local computing devices used by cloud users, such as, for example, a personal digital assistant (PDA) or cellular phone 54A, a desktop computer 54B, a laptop computer 54C, and / or an automobile computer system 54N, may communicate. The nodes 10 may communicate with each other. They may be physically or virtually grouped (not shown) in one or more networks, such as a private cloud, a community cloud, a public cloud, or a hybrid cloud, or combinations thereof, as described hereinabove. This enables the cloud computing environment 50 to provide infrastructure, platforms, and / or software as a service for which cloud users are not required to maintain resources on their local computing devices. It is understood that the types of computing devices 54A-N shown in FIG. 7 are intended for illustrative purposes only, and that the computing nodes 10 and the cloud computing environment 50 may communicate with any type of computerized device over any type of network and / or network-addressable connection (e.g., using a web browser).

[0121] Referring now to Figure 8, there is shown a set of functional abstraction layers provided by cloud computing environment 50 (Figure 7). It should be understood in advance that the components, layers, and functions shown in Figure 8 are intended to be illustrative only, and embodiments of the present disclosure are not limited thereto. As shown, the following layers and corresponding functions are provided:

[0122] Hardware and software layer 60 includes hardware and software components. Examples of hardware components include: mainframe 61; RISC (reduced instruction set computer) architecture-based servers 62; servers 63; blade servers 64; storage devices 65; and network and networking components 66. In some embodiments, software components include network application server software 67 and database software 68.

[0123] The virtualization layer 70 provides an abstraction layer from which the following examples of virtual entities can be provided: virtual servers 71; virtual storage 72; virtual networks, including virtual private networks 73; virtual applications and operating systems 74; and virtual clients 75.

[0124] In one example, management layer 80 may provide the functions described below. Resource provisioning 81 provides dynamic procurement of computing and other resources used to execute tasks within the cloud computing environment. Metering and pricing 82 provides cost tracking as resources are utilized within the cloud computing environment and billing or invoicing for the consumption of these resources. In one example, these resources may include application software licenses. Security provides identity verification of cloud users and tasks and protection of data and other resources. User portal 83 provides access to the cloud computing environment for users and system administrators. Service level management 84 provides cloud computing resource allocation and management so that required service levels are met. Service level agreement (SLA) planning and fulfillment 85 provides proactive provisioning and procurement of cloud computing resources to anticipate future requirements according to SLAs.

[0125] The workload tier 90 provides examples of functions for which a cloud computing environment may be utilized. Examples of workloads and functions that may be provided from this tier include: mapping and navigation 91, software development and lifecycle management 92, virtual classroom instruction delivery 93, data analytics processing 94, transaction processing 95, and workload scheduling processing 96.

[0126] The computer program product of the present disclosure comprises one or more computer-readable hardware storage devices having computer-readable program code stored therein, the program code being executable by one or more processors to implement the methods of the present disclosure.

[0127] The computer system of the present disclosure comprises one or more processors, one or more memories, and one or more computer-readable hardware storage devices, the one or more hardware storage devices containing program code executable by the one or more processors via the one or more memories to implement the methods of the present disclosure.

[0128] The description of various embodiments of the present disclosure has been presented for illustrative purposes, but is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope of the described embodiments. The terms used herein have been selected to best explain the principles of the embodiments, practical applications, or technical improvements over technologies found in the market, or to enable others skilled in the art to understand the embodiments disclosed herein.

[0129] Improvements and modifications may be made to the above without departing from the scope of the present disclosure. 。 [Item 1] 1. A computer-implemented method for workload scheduling in a storage system for optimized deduplication, comprising: determining a dynamic correlation of deduplication between workload processes in a previous time window, where the workload process comprises one or more tasks having defined execution timing parameters; determining a deduplication ratio based on the dynamic correlation of the deduplication between the workload processes; and scheduling a plurality of workload processes based on a highest determined deduplication ratio among the determined deduplication ratios; A computer-implemented method comprising: [Item 2] scheduling the plurality of workload processes includes scheduling the plurality of workload processes closely in time; Item 1. The computer-implemented method of item 1. [Item 3] scheduling the plurality of workload processes includes scheduling the plurality of workload processes simultaneously; Item 1. The computer-implemented method of item 1. [Item 4] registering a workload process with a scheduler system, the registering comprising providing metadata of execution timing parameters associated with the one or more tasks of the corresponding workload process; Item 1. The computer-implemented method of item 1, further comprising: [Item 5] Item 10. The computer-implemented method of item 1, wherein the execution timing parameters are used to determine an execution window of a workload task, the execution timing parameters comprising at least one of: an expected duration of the workload process, a minimum frequency of tasks in the workload process, or a desired execution time window. [Item 6] Item 10. The computer-implemented method of item 1, wherein the previous time window is a sliding time window. [Item 7] Item 10. The computer-implemented method of item 1, wherein the previous time window has one of a fixed duration and a variable duration depending on the throughput of the storage system. [Item 8] determining the dynamic correlation of deduplication among the workload processes in the previous time period includes generating an epoch graph structure for the plurality of workload processes for a sliding time window; the epoch graph structure comprises a deduplication ratio based on past deduplication between the workload processes; Item 1. The computer-implemented method of item 1. [Item 9] pre-populating said epoch graph structure with known relevant workload processes; Item 9. The computer-implemented method of item 8, further comprising: [Item 10] determining historical deduplication correlation between workload processes by determining deduplication between two processes running within a defined time of each other such that the deduplication database still includes the earlier workload process; Item 9. The computer-implemented method of item 8, further comprising: [Item 11] determining historical deduplication correlation between workload processes by determining deduplication between two processes running within a defined throughput of each other such that the deduplication database still includes the earlier workload process; Item 9. The computer-implemented method of item 8, further comprising: [Item 12] determining historical deduplication correlations between workload processes by tagging input / output (IO) operations of the workload processes in a deduplication database and counting deduplication references between the workload processes; Item 9. The computer-implemented method of item 8, further comprising: [Item 13] Item 9. The computer-implemented method of item 8, wherein the step of scheduling multiple workload processes uses the epoch graph structure when scheduling to preferentially schedule highly related processes near each other while complying with the execution timing parameters. [Item 14] Item 10. The computer-implemented method of item 1, wherein scheduling a plurality of workload processes takes into account the throughput of the storage system over time and how the throughput is affected by the scheduling. [Item 15] Item 1. The computer-implemented method of item 1, wherein the step of scheduling multiple workload processes uses a bin-packing problem to find optimal packing for the workload processes considering various time windows to maximize deduplication savings while still executing within the execution timing parameters. [Item 16] Item 10. The computer-implemented method of item 1, wherein the step of scheduling a plurality of workload processes is used to identify workload processes within the distributed system that can be migrated to optimize deduplication. [Item 17] Item 10. The computer-implemented method of item 1, wherein the scheduling is leveraged to enable scheduling knowledge based on deduplication behavior to be transferred across multiple deduplication storage systems. [Item 18] memory; and a processor communicatively coupled to the memory wherein the processor: determining a dynamic correlation of deduplication between workload processes in a previous time window, where the workload process comprises one or more tasks having defined execution timing parameters; determining a deduplication ratio based on the dynamic correlation of the deduplication between the workload processes; and scheduling a plurality of workload processes based on a highest determined deduplication ratio among the determined deduplication ratios; 10. A computer system configured to perform a method comprising: [Item 19] 20. The computer system of claim 18, wherein the method further comprises registering a workload process with a scheduler system, the registering comprising providing metadata of execution timing parameters associated with the one or more tasks of the workload process. [Item 20] 1. A computer program product comprising a computer-readable storage medium having program instructions embodied thereon, the program instructions causing a processor to: determining a dynamic correlation of deduplication between workload processes in a previous time window, where the workload process comprises one or more tasks having defined execution timing parameters; determining a deduplication ratio based on the dynamic correlation of the deduplication between the workload processes; and scheduling a plurality of workload processes based on a highest determined deduplication ratio among the determined deduplication ratios; a computer program product executable by the processor to cause the processor to perform a method comprising:

Claims

1. 1. A computer-implemented method for workload scheduling in a storage system for optimized deduplication, comprising: determining a dynamic correlation of deduplication between workload processes in a previous time window, where the workload process comprises one or more tasks having defined execution timing parameters; determining a deduplication ratio based on the dynamic correlation of the deduplication between the workload processes; and scheduling a plurality of workload processes based on a highest determined deduplication ratio among the determined deduplication ratios; A computer-implemented method comprising:

2. scheduling the plurality of workload processes includes scheduling the plurality of workload processes closely in time; The computer-implemented method of claim 1 .

3. scheduling the plurality of workload processes includes scheduling the plurality of workload processes simultaneously; The computer-implemented method of claim 1 .

4. registering a workload process with a scheduler system, the registering comprising providing metadata of execution timing parameters associated with the one or more tasks of the corresponding workload process; The computer-implemented method of claim 1 , further comprising:

5. 4. The computer-implemented method of claim 1, wherein the execution timing parameters are used to determine an execution window for a workload task, the execution timing parameters comprising at least one of: an expected duration of the workload process, a minimum frequency of a task in the workload process, or a desired execution time window.

6. The computer-implemented method of claim 1 , wherein the previous time window is a sliding time window.

7. The computer-implemented method of claim 1 , wherein the previous window of time has one of a fixed duration and a variable duration depending on the throughput of the storage system.

8. determining the dynamic correlation of deduplication among the workload processes in the previous time period includes generating an epoch graph structure for the plurality of workload processes for a sliding time window; the epoch graph structure comprises a deduplication ratio based on past deduplication between the workload processes; A computer-implemented method according to any one of claims 1 to 3.

9. pre-populating said epoch graph structure with known relevant workload processes; The computer-implemented method of claim 8 further comprising:

10. determining historical deduplication correlation between workload processes by determining deduplication between two processes running within a defined time of each other such that the deduplication database still includes the earlier workload process; The computer-implemented method of claim 8 further comprising:

11. determining historical deduplication correlation between workload processes by determining deduplication between two processes running within a defined throughput of each other such that the deduplication database still includes the earlier workload process; The computer-implemented method of claim 8 further comprising:

12. determining historical deduplication correlations between workload processes by tagging input / output (IO) operations of the workload processes in a deduplication database and counting deduplication references between the workload processes; The computer-implemented method of claim 8 further comprising:

13. 9. The computer-implemented method of claim 8, wherein scheduling a plurality of workload processes uses the epoch graph structure when scheduling to preferentially schedule highly related processes near each other while complying with the execution timing parameters.

14. 4. The computer-implemented method of claim 1, wherein scheduling a plurality of workload processes takes into account the throughput of the storage system over time and how the throughput is affected by the scheduling.

15. 4. The computer-implemented method of claim 1, wherein the step of scheduling multiple workload processes uses a bin-packing problem to find optimal packing for the workload processes considering various time windows to maximize deduplication savings while still executing within the execution timing parameters.

16. 4. The computer-implemented method of claim 1, wherein the step of scheduling a plurality of workload processes is used to identify workload processes within the distributed system that can be migrated to optimize deduplication.

17. The computer-implemented method of claim 1 , wherein the scheduling is leveraged to enable scheduling knowledge based on deduplication behavior to be transferred across multiple deduplication storage systems.

18. memory; and a processor communicatively coupled to the memory wherein the processor: determining a dynamic correlation of deduplication between workload processes in a previous time window, where the workload process comprises one or more tasks having defined execution timing parameters; determining a deduplication ratio based on the dynamic correlation of the deduplication between the workload processes; and scheduling a plurality of workload processes based on a highest determined deduplication ratio among the determined deduplication ratios; 10. A computer system configured to perform a method comprising:

19. 20. The computer system of claim 18, wherein the method further comprises registering a workload process with a scheduler system, the registering comprising providing metadata of execution timing parameters associated with the one or more tasks of the workload process.

20. A processor comprising: determining dynamic correlation of deduplication between workload processes in a previous time window, where the workload process comprises one or more tasks having defined execution timing parameters; determining a deduplication ratio based on the dynamic correlation of the deduplication between the workload processes; and scheduling a plurality of workload processes based on a highest determined deduplication rate among the determined deduplication rates; A computer program for executing

Citation Information

Patent Citations

  • Information pushing method and device, computer device and storage medium

    CN113434301A

  • A system, method, and computer program product for scheduling processes to achieve spacesavings.

    JP2015517147A

  • Systems and methods for scheduling tasks using sliding time windows

    JP2017004511A

  • Managing data deduplication in storage systems

    US9449011B1