Почему это так?
Может кто-нибудь объяснить, в каких случаях многопроцессорная обработка дает лучшие результаты?
Вот один прием.
Многопроцессорная обработкаПомогает только в том случае, если узким местом является ресурс, который не совместно используемый.
Общий ресурс (например, база данных) будет перемещаться в 8 различных направлениях, что не приносит реальной выгоды.
Чтобы найти ресурс без общего доступа, у вас должны быть независимые объекты.Как список, который уже в памяти.
Если вы хотите работать с базой данных, вам нужно запустить 8 вещей, которые больше не работают с базой данных.Таким образом, центральный запрос, который распределяет работу по отдельным процессорам, иногда может быть полезным.
Или 8 разных файлов.Обратите внимание, что файловая система - в целом - является общим ресурсом, и некоторые виды доступа к файлам включают совместное использование чего-либо, например, диска или каталога.
Или конвейер из 8 меньших шагов.Стандартный трюк Unix-конвейера query | process1 | process2 | process3 >file
работает лучше, чем что-либо еще, потому что каждый этап в конвейере полностью независим.
Вот еще один трюк.
Ваша компьютерная система (ОС, устройства, база данных)сеть и т. д.) настолько сложны, что упрощенные теории вообще не могут объяснить производительность.Вам нужно (а) провести несколько измерений и (б) попробовать несколько разных алгоритмов, пока вы не поймете все степени свободы.
Вопрос типа «Может ли кто-нибудь объяснить, в каких случаях многопроцессорная обработка дает лучшие результаты?»простого ответа нет.
Чтобы получить простой ответ, вам понадобится гораздо более простая операционная система.Меньше устройств.Нет базы данных и нет сети, например.Поскольку ваша ОС сложна, на ваш вопрос нет простого ответа.