При использовании 2 ядер любое количество процессов, превышающее 2, должно разделять процессорное время. Вы будете нести издержки при переключении процессов, и у вас никогда не будет более двух процессов, выполняющихся одновременно. Лучше всего, чтобы на двух ядрах работали непрерывно два процесса.
Относительно того, почему вы увидели колебания в производительности, когда столкнулись с большим количеством процессов, я должен был бы предположить, что ваша ОС тратит больше времени на переключение между процессами, чем фактически выполняет работу, выполняющую сортировку. Время, необходимое для переключения задач, является артефактом планировщика вашей ОС, объема памяти, используемого отдельными задачами, кэширования, потенциального использования пространства подкачки и т. Д. *
Если вы хотите максимизировать производительность параллельных процессов, количество одновременно работающих процессов должно быть равно числу процессоров, умноженному на количество ядер на каждом процессоре. В вашем случае два. Меньше, чем ваши ядра бездействуют, ничего не делая, больше у вас есть процессы, бездействующие в ожидании времени на ядре процессора.