Вот смотрите, к примеру такая задача. Есть переводное бюро, у которого есть заказ - минимум 1 раз в 10 минут публиковать перевод страницы из многотысячестраничной книги. В штате бюро есть один переводчик, который способен гарантированно переводить 1 страницу за 10 минут. В книге есть как простые куски текста, так и сложные - идиомы, там, спецтермины и т.п. Сложные куски равномерно распределены по страницам книги - на каждой странице есть 90% простого текста и 10% сложного. Перевод сложного куска требует в 9 раз больше времени, чем перевод простого. Соответственно, переводчик тратит 9 минут на перевод сложного текста и 1 минуту - на простой текст. Все идет замечательно, заказчик получает переведенный текст с требуемой периодичностью. Потом заказчик решил изменить условия контракта и потребовал выдавать страницу раз в 5 минут. Что делать директору бюро? Самое простое - это выгнать переводчика на мороз и взять другого, который способен гарантированно переводить страницу за 5 минут. Но директор решил, что он самый умный, нанял еще одного абсолютно такого же переводчика и "равномерно" их загрузил - каждому дал по полстраницы. Можно ли таким путем решить задачу? В общем случае - нет. Если в пределах страницы сложный текст распределен равномерно, то все ок, а если нет? Ведь если одному достанется полстраницы простого текста, а другому - полстраницы со сложным куском, то первый будет тратить на свою часть 0.5 минуты, а второй 9+0.4=9.4 минуты. Вместо 5 минут на страницу получаем 9.9 минут. Если для заказчика приемлемо, что В СРЕДНЕМ страница публикуется за 5 минут, то получаем прирост СРЕДНЕЙ производительности с равномерной СРЕДНЕЙ загрузкой персонала. Но если нужна ГАРАНТИРОВАННАЯ периодичность выдачи (т.е. процесс реального времени), то такой подход попросту неприемлем. Как же быть? Можно посадить трех человек, одному поручить только легкие куски, и пусть он ломится вперед, не дожидаясь остальных, а двое будут тратить на сложные куски по 4.5 минуты, но это НЕ равномерная загрузка. Можно заранее пробежаться по тексту, пометить страницы, где сложный текст распределен неравномерно и раскидать работу на этих страницах не так тупо, а по хитрому, но это потребует некоторого времени перед тем как начнется собственно процесс..
Есть конечно гораздо более хитрые и изощренные алгоритмы распределения нагрузки, но все равно, в реалтайм процессах с постоянно и непредсказуемо изменяющимся входом сказать заранее что выгоднее - один процесс или несколько параллельных, да еще и с условием равномерной загрузки - задача более чем сложная. Причем, еще гораздо сложнее, чем я тут расписывал.
Вот где реалтайм не нужен - архивирование, там, перекодирование видео и аудио - там на ура это проходит, и двухъядерный проц справляется почти в два раза быстрее одноядерного, при этом загружая ядра вполне себе равномерно.
Рассуждения дилетантские, понимаю, так что айтишники, сильно не пинайте.