Максимальная загрузка ЦП ограничена 1/N ЦП для БОЛЬШИНСТВА многопоточных приложений на любой ОС Win: ПОЧЕМУ?

Максимальная загрузка ЦП ограничена 1/N ЦП для БОЛЬШИНСТВА многопоточных приложений на любой ОС Win: ПОЧЕМУ?

Я в некоторой степени понимаю многопоточность и многозадачность, но знаю, что за пределами ОС большинство приложений Windows ограничены использованием только 1/N ЦП для усредненного максимального использования.

Это 50% для двухъядерного, 25% для 4 ЦП и 12,5% для всех 8 ЦП. Это не меняет результат, если использовать Procexp.exe для освобождения ЦП или выбора четных или нечетных ЦП.

Мой вопрос

Есть ли способ увеличить использование сверх этого лимита ОС? Я понимаю, если бы кто-то установил 100% для одного приложения. ОС могла бы выдать синий экран из-за не отвечающего аппаратного ввода-вывода в течение ожидаемого или требуемого периода ожидания, но даже 50% или 75% улучшили бы мои результаты.

Однако explorer.exe и т. п. в ОС иногда могут работать со скоростью 50% и более(?) при выполнении больших задач.

  • Обычно процессор простаивает на 98~99,5%, когда открыт только браузер и 10 вкладок (Brave)

Я использую Win7 i7-4770S Haswell 3.1GHz с 16 ГБ ОЗУ в LibreOffice SCALC.exe с электронной таблицей с 1,5 миллионами ячеек данных CV19 US и выполнил поиск/замену префикса ' text, чтобы попытаться преобразовать текст в номер ячейки для ежедневных дат (с некоторыми вариантами изтекст в значения) и он все еще работает (да) и очевидно, что я использовал неправильный метод.

Если невозможно изменить коэффициенты использования ОС, то следует ли мне переписать этот вопрос о преобразовании 400 текстовых записей в значение дат «1\20\2020» в значение для переформатирования по моему усмотрению.

  • Этот текстовый файл был загружен из репозитория GitHub для совокупных показателей ежедневной смертности в округах США JHU CV19 и импортирован в SCALC с использованием преобразования текста в столбцы.

SCALC все еще работает!», на уровне 12,5% по данным PERFMON с использованием 11 потоков.

Проблема началась с поиска и замены 1 символа в таблице с 1,5 миллионами ячеек. Я выбрал «similarity-option», что было ошибкой, но проблема не в Excel или Open Office Apps,многие приложения многопоточны, но в среднем ограничены 1/N процессорами, и изменить это невозможно. Я могу доказать это с помощью изображений, но некоторые из вас знают, что это правда.

Другие не понимают вопроса. Да, можно написать или сделать это в Windows, но не в готовых приложениях.

ПРИМЕР 1 Простое восстановление запуска большого файлового процесса заняло всего несколько секунд и достигло пика выше 20%. Он может достигать пика значительно выше 12,5% в среднем в течение секунды, но не поддерживаться, как я предполагаю, из-за ограничения пропускной способности памяти. (ТАК ЧТО, я полагаю, ничто не может улучшить это?)

введите описание изображения здесь

Здесь поиск и замена 0 на 0 в 1,5 миллионах ячеек. Среднее значение составило ровно 12,5% непосредственно перед тем, как я сделал снимок экрана.

введите описание изображения здесь

Здесь почти ТОЧНО 1/N или 12,5% всей рабочей нагрузки ЦП выделено на 1 приложение со многими потоками.

Я могу повторить этот тест на МНОГИХ ДРУГИХ ПРИЛОЖЕНИЯХ под Windows с этой архитектурой. Так это архитектура - шина кэша памяти ограничена и есть ли исправление?

Как уже писали на этом форуме, 1/N процессоров ограничены или 12,50%

Вот доказательство.

введите описание изображения здесь

Еще одно доказательство для многопоточного приложения MS i=использует только 1/N CPU % средний MAX

введите описание изображения здесь

Обновлять

Установил WordPerfect 2020 с QUattro Pro и запустил точно такой же многопоточный процесс и получил ТОЧНО ТОТ ЖЕ РЕЗУЛЬТАТ МАКСИМАЛЬНОЕ ИСПОЛЬЗОВАНИЕ ЦП на всех 8 ЦП = 1/8 = 12,5% введите описание изображения здесь

Пример №4

  • многопоточного процесса, снова использовавшего все ЦП, но в общей сложности только 1/N ЦП или 12,5%, — это Process Explorer Марка Руссиновича, он же PROCMON.exe., который был независим от всех других процессов, используя мало ресурсов.

Сомневаюсь, что Марк обладал способностью программировать многопоточность. :) (MS Fellow)

введите описание изображения здесь введите описание изображения здесь

Задержка моего ЦП на высоте введите описание изображения здесь

решение1

Не все задачи изначально можно разделить на задачи, которые могут одновременно выполняться на каждом ядре ЦП.

Каждое ядро ​​в вашем ЦП является полноценным процессором. Оно способно хранить информацию о состоянии выполнения одного аппаратного «потока». Каждое ядро ​​имеет свой собственный кэш и обработку данных независимо от каждого другого ядра. Они могут совместно использовать кэш и шину памяти, но в остальном они полностью разделены.

Этот поток примерно соответствует тому, что в программном обеспечении называется потоком.

Проблема, которую вы видите, заключается в том, что конкретная задача, выполняющая работу в этом программном обеспечении, по своей сути является однопоточной.

Один поток может выполняться только на одном ядре за раз. На 8-ядерном процессоре это означает, что один поток может использовать максимум 1/8 вашего процессора, или 12,5% согласно диспетчеру задач. На 4-ядерном процессоре это 1/4 или 25%.

Программа может иметь много потоков, но эти потоки могут работать только над вещами, которые совершенно не связаны друг с другом. Один поток может обрабатывать обновление данных, являющихся сценами, другой может обновлять GUI и так далее.

Чего потоки не могут делать, так это работать с одними и теми же данными одновременно, не взаимодействуя друг с другом, и именно это ограничение вы видите.

Чтобы использовать более одного ядра ЦП, выполняемая задача должна быть разделена и распределена по нескольким потокам. Такое разделение является проблемой программирования и ее реализация возлагается на инженеров-программистов. Является ли та или иная задача многопоточной, зависит от ее сложности и от того, может ли она быть разделена в первую очередь

  • содержит ли задача данные, которые можно разделить на независимые наборы данных для обработки отдельными потоками?
  • было ли написано программное обеспечение для разделения этой конкретной задачи на отдельные потоки?

Если данные полностью зависят от того, будут ли они обрабатываться определенным образом, то они никогда не будут использовать более одного ядра.

Если данные можно разделить, но для их разделения и повторного объединения требуется гораздо больше работы, то инженеры-программисты могут решить, что это не стоит усилий, и вместо этого ограничиться использованием одного потока/ядра.

Если данные можно разделить и программное обеспечение предназначено для этогозатемвы увидите, что используется более 1 ядра.

Я знаю, что для ряда задач Excel поддерживает многоядерные вычисления, но они полностью зависят от данных, не имеющих абсолютно никакой зависимости друг от друга.

Связанный контент