1. A computer-implemented method for run-time task scheduling on a socket, the method comprising: allocating, by a scheduling module in an operating system, a task to a socket, wherein the socket comprises a plurality of processor cores and a micro code engine, wherein the micro code engine is an independent core configured to determine run-time core load metrics for the scheduling module, wherein the micro code engine is updated by the operating system; receiving, by the scheduling module, metrics from the micro code engine, wherein the metrics are calculated by the micro code engine based on data received from an event counter located on each of the plurality of processor cores, wherein the event counter determines instructions per cycle by counting core cycles of each one of the plurality of processor cores and a number of tasks executed by each one of the plurality of processor cores and dividing the counted number of tasks by the counted core cycles; determining, by the scheduling module, whether a socket level load is below a socket threshold value, wherein the socket level load is determined from analyzing a cache footprint of the plurality of processor cores received from the micro code engine; based on determining that the socket level load is below the socket threshold value, determining, by the scheduling module, whether a core level load for each processor core is below a core threshold value, wherein the core level load for each processor core is determined from the metrics received from the micro code engine; based on determining that the core level load for a processor core is below the core threshold value, determining, by the scheduling module, whether there is an available thread on the processor core; based on determining that there is an available thread, assigning, by the scheduling module, the task to the available thread; and based on determining that a nature of the task requires a fast execution, decreasing a Simultaneous Multi-Threading mode of the processor core to decrease a number of threads simultaneously running on the processor core.