A computer program product comprising a computer usable storage memory having stored therein computer usable program code for allocating a plurality of cores in a multi-core processing environment, the computer usable program code, which when executed by a computer hardware system, causes the computer hardware system to perform:
- allocating, dynamically, the plurality of cores into a plurality of different service pools, each of the plurality of service pools corresponding to a particular function;
- loading, into each of the plurality of cores, a soft co-processor corresponding to a particular function associated with a particular service pool to which a particular core is assigned;
- receiving, from a primary processor, a request to offload a selected function;
- determining that a service pool associated with the selected function does not include an available soft co-processor to perform the selected function;
- reallocating a core, from a free core pool, to the service pool associated with the selected function;
- loading, into the reallocated core, a soft co-processor configured to perform the selected function;
- selecting, from the service pool associated with the selected function, an available soft co-processor;
- and
- assigning the selected co-processor to perform the selected function.