1. A method for performing thread scheduling, the method comprising: receiving thread objective data including a performance objective; sampling performance metric data points, wherein each data point varies as a function of scheduling quantum values; calculating a new scheduling quantum value by processing the performance metric data points according to the performance objective; and adjusting a current scheduling quantum value to the new scheduling quantum value.