A computer-implemented method for monitoring by executing a graphics driver module as a thread on a processing circuit, a task of a graphics processing unit, the method comprising: receiving by the graphics driver module a request from an application for a completion status of the task; determining, by the graphics driver module when the task is complete; determining an average task completion time for the task; characterized in that: when it is determined by the graphics driver module that the application requests the completion status for the task in a loop and when it is determined by the graphics driver module that the average task completion time for the task is greater than or equal to a delay time, instructing by the graphics driver module the processing circuit to sleep for a sleep state time, wherein, while in a sleep state, putting by the processing circuit the execution of the graphics driver module thread to sleep and wherein, upon completion of the sleep state for the sleep state time, sending by the graphics driver module a response to the application indicating whether the task is complete or not complete based upon the completion status; when it is determined by the graphics driver module that the completion status for the task is not requested in a loop or when it is determined by the graphics driver module that the average task completion time is smaller than the delay time, sending by the graphics driver module a response to the application indicating that the task is not complete based upon the completion status. receiving by the graphics driver module a request from an application for a completion status of the task; determining, by the graphics driver module when the task is complete; determining an average task completion time for the task; characterized in that: when it is determined by the graphics driver module that the application requests the completion status for the task in a loop and when it is determined by the graphics driver module that the average task completion time for the task is greater than or equal to a delay time, instructing by the graphics driver module the processing circuit to sleep for a sleep state time, wherein, while in a sleep state, putting by the processing circuit the execution of the graphics driver module thread to sleep and wherein, upon completion of the sleep state for the sleep state time, sending by the graphics driver module a response to the application indicating whether the task is complete or not complete based upon the completion status; when it is determined by the graphics driver module that the completion status for the task is not requested in a loop or when it is determined by the graphics driver module that the average task completion time is smaller than the delay time, sending by the graphics driver module a response to the application indicating that the task is not complete based upon the completion status. when it is determined by the graphics driver module that the application requests the completion status for the task in a loop and when it is determined by the graphics driver module that the average task completion time for the task is greater than or equal to a delay time, instructing by the graphics driver module the processing circuit to sleep for a sleep state time, wherein, while in a sleep state, putting by the processing circuit the execution of the graphics driver module thread to sleep and wherein, upon completion of the sleep state for the sleep state time, sending by the graphics driver module a response to the application indicating whether the task is complete or not complete based upon the completion status; when it is determined by the graphics driver module that the completion status for the task is not requested in a loop or when it is determined by the graphics driver module that the average task completion time is smaller than the delay time, sending by the graphics driver module a response to the application indicating that the task is not complete based upon the completion status.