1. A computer implemented method for scheduling tasks, comprising: receiving a task request from an application, the task requesting execution by a central processing unit (CPU), the task further having a signature representing at least one call to a method with an application programming interface (API); and estimating an execution time for the task based on at least one execution metric stored in a state model for the application, the state model being representative of a plurality of requested tasks by the application.