1. A method comprising: running a first job including a plurality of tasks, while also running a backup task for a given task of the plurality of tasks; generating a first list of features before the backup task is run and a second list of features at a time after the backup task finishes, wherein each feature of the first or second list of features describes an aspect of the execution of the backup task or the first job; determining, by one or more processors, usefulness of the backup task based on at least both the first list of features and the second list of features, where usefulness of the backup task is determined by whether the output of the backup task is used in order to complete the first job; assigning a usefulness label to the backup task based on at least the determined usefulness; generating, using a machine learning algorithm, a model of usefulness of backup tasks based on at least the first list of features and the assigned usefulness label; while running a second job having a second plurality of tasks, generating a list of features for each task of the second plurality of tasks; for each given task of the second plurality of tasks, determining a usefulness score based on at least the model and the lists of features for that task; selecting a subset of tasks from the second plurality of tasks based on at least the usefulness scores; and running a backup task for each task of the subset of tasks.