1

Некоторые программы, такие как Firefox, используют максимум до 25% всех процессоров (только 1 поток).

Однако некоторые программы, такие как WinRAR, используют до 100% всех процессоров.

Как я могу заставить Firefox использовать все возможности процессора (например, WinRAR)?

У меня Windows 7 и процессор Intel Core-i5 (4 Thread).

5 ответов5

7

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

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

Firefox - это программа ввода-вывода.
Вы вводите URL или нажимаете на ссылку.
Firefox отправляет запрос на получение веб-страницы с удаленного сервера, а затем ожидает.
Когда веб-страница доставляется, Firefox обрабатывает этот ввод и отображает его на экране.
Затем Firefox ждет вашего следующего действия ввода.

Firefox - это программа, которая не получит (значительно) выгоды от параллелизма.
Таким образом, Firefox (по-видимому) реализован как однопоточная программа, использующая только одно ядро.
В то время как другие программы, требующие большого объема вычислений и реализованные как многопоточные, такие как WinRAR, выигрывают от параллелизма и выполняются на нескольких процессорах / ядрах.

5

Вы не можете, только разработчик программы может.

Единственный вариант, который у вас есть, если вы хотите, чтобы загрузка процессора составляла 100%, это открыть 4 копии программы, каждая копия будет занимать ядро.

3

Потоки в Windows работают до тех пор, пока не закончатся их кванты (временной интервал), они блокируются (например, делают ввод-вывод, который еще не завершен) или прерываются для выполнения чего-то с более высоким приоритетом, которое только что стало готовым.

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

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

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

1

Mozilla Firefox основан на программном обеспечении, которое было написано до того, как стали популярными процессоры с несколькими ядрами. В качестве такового он все еще использует один процесс со сложной системой потоков, который нелегко разделить на отдельные программы. Вы можете проголосовать и принять участие в проекте Электролиз :

Целью проекта является запуск веб-контента в отдельном процессе от самого Firefox. Двумя основными преимуществами этой модели являются безопасность и производительность. Безопасность улучшится, потому что процессы контента могут быть изолированы (хотя песочница процессов контента - это отдельный проект от Electrolysis). Производительность улучшится, потому что пользовательский интерфейс браузера не будет зависеть от низкой производительности кода контента (будь то макет или JavaScript). Кроме того, процессы контента могут быть изолированы друг от друга, что обеспечит аналогичные преимущества в плане безопасности и производительности.

Хотя платформа Gecko поддерживает несколько процессов, интерфейс Firefox не предназначен для их использования. Работа по поддержке внешнего интерфейса (включая надстройки) нескольких процессов была начата в начале 2013 года. Дорожная карта проекта имеет больше деталей.

Microsoft Internet Explorer и Google Chrome уже могут обрабатывать несколько вкладок одновременно, используя весь процессор, вместо того, чтобы возиться с потоками. Часто весь Firefox зависает из-за тривиальных вещей, таких как одна вкладка, отображающая снежинки в JavaScript.

1

Нет. Потоки - это решение, принятое разработчиком приложения, и они могут использоваться (или, по крайней мере, приносить пользу) только в определенных случаях. Кроме того, ЦП - это только один компонент, который может занимать время выполнения, и, таким образом, если он ожидает обновления на диске или высокоскоростного ОЗУ, то ЦП будет по-прежнему работать точно так же, как вы описали, несмотря на то, что приложение является многопоточным и многоядерный чип.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .