La regla general para los subprocesos es que desea al menos un subproceso de trabajo "activo" (capaz de ejecutar sus comandos inmediatamente dado el tiempo de CPU) para cada "unidad de ejecución" disponible en la computadora. Una "unidad de ejecución" es un procesador de instrucciones lógicas, por lo que un servidor hiperprocesado Xeon de cuatro núcleos y cuatro núcleos tendría 32 UE (4 chips, 4 núcleos por chip, cada uno hipertreprocesado). Su Core i7 promedio tendría 8.
Un subproceso por UE es el uso más completo de la potencia de la CPU, siempre que los subprocesos siempre estén en funcionamiento; este casi nunca es el caso, ya que los subprocesos necesitan acceso a la memoria no almacenada en caché, el disco duro, los puertos de red, etc. que deben esperar y que no requieren atención activa de la CPU para funcionar. Por lo tanto, puede aumentar aún más la eficiencia general con más hilos en cola y con muchas ganas de ir. Esto tiene un costo; cuando una CPU cambia un subproceso, debe almacenar en caché los registros del subproceso, el puntero de ejecución y otra información de estado que normalmente se mantiene en el funcionamiento más interno de una UE y se accede muy rápidamente, permitiendo que otras UE en ese chip de la CPU lo recojan. También requiere hilos en el sistema operativo para decidir a qué hilo se debe cambiar. Por último, cuando una UE cambia hilos, pierde las ganancias de rendimiento de la canalización que utilizan la mayoría de las arquitecturas de procesador; Tiene que lavar la tubería antes de cambiar los hilos. Pero, como todo esto todavía lleva mucho menos tiempo en promedio que simplemente esperar que el disco duro o incluso la RAM vuelvan con información, vale la pena el costo.
Sin embargo, en general, una vez que se supera el doble del número de subprocesos "activos" que los de la UE, el sistema operativo comienza a gastar más de los subprocesos de programación de tiempo de la UE, y las UE pasan más tiempo intercambiando entre ellos, de lo que se gastan en la ejecución de subprocesos activos de programas. Este es el punto de las deseconomías de escala; en realidad, llevará más tiempo ejecutar un algoritmo multiproceso si agregara un subproceso adicional en este punto.
Por lo tanto, en general, desea mantener al menos tantos subprocesos en su programa como UE en la computadora, pero desea evitar tener más del doble de ese número que no está esperando o durmiendo.