1. A non-transitory tangible computer-readable storage medium having stored thereon a computer program for implementing a method of workload aware dynamic CPU processor core allocation in a host computer system, the computer program including a set of instructions which, when executed by a computer, cause the computer to perform a method comprising the steps of: predicting estimated individual workloads for each emulation in a set of emulations for each decision period of a set of decision periods over a predictive time span; using, by a Mixed Integer Programming (MIP) engine, the predicted estimated individual workloads for each emulation in the set of emulations, a set of constraints, and an optimization function, to determine sets of CPU processor cores to be allocated to each emulation during each decision period over the predictive time span; and dynamically allocating, by the host computer system, the sets of CPU processor cores to each emulation during each decision period over the predictive time span based on an output from the MIP engine; wherein when the CPU processor cores of the host computer system are homogeneous, the set of constraints comprises: a first constraint specifying that for all decision periods, the sum of the number of CPU processor cores assigned to all of the emulations is equal to a total number of CPU processor cores in the host computer system; and a second constraint specifying that for all decision periods, the normalized workload of each emulation, during the decision period, is less than the amount of collective processing capacity of the set of CPU processor cores allocated to that emulation.