Почему при запуске firefox запускается пять процессов. Новый Firefox стал многопоточным и быстрым

Команда разработчиков Firefox выпустила новую версию браузера с номером 54. Главной особенностью обновленного Firefox является поддержка многопроцессного режима обработки веб-страниц, работа над которым велась восемь лет под кодовым названием Electrolysis (E10S). Представители Mozilla называют новую версию браузера «лучшим Firefox».

Первая версия мультипроцессного Firefox была представлена в августе прошлого года (версия 48). В ней работа с UI была вынесена в отдельный процесс, что делало интерфейс отзывчивым даже при высоких нагрузках на систему. В версии Firefox 54 разработчики пошли еще дальше, организовав работу в нескольких параллельных процессах: каждый со своими ресурсами RAM и CPU, управляемыми операционной системой.

Недостатком при таком подходе обычно остается высокое потребление памяти. Например, Google Chrome по умолчанию создает новый процесс для каждой вкладки и потребляет множество ресурсов. Однако, по словам главы маркетинга Firefox Райана Поллока (Ryan Pollock), в отличие от того же Chrome, Firefox не будет забирать себе всю оперативную память и замедлять работу компьютера пользователя.

В Mozilla отмечают, чтобы избежать излишнего потребления памяти, по умолчанию запускаются только четыре контент-процесса. Вероятно, число четыре - это золотая середина между потреблением памяти и преимуществами многопроцессорных систем. Однако количество процессов можно настроить, перейдя на вкладку about:config и изменив значение dom.ipc.processCount.

Сравнение потребления памяти браузеров ()

Пользователи отмечают, что Firefox 54 действительно работает быстрее, по сравнению с предыдущими версиями, и потребляет меньше ресурсов, чем Chrome. Однако если у вас установлены аддоны, которые не поддерживают многопоточную работу, вы не сможете воспользоваться новыми возможностями браузера. Подробную информацию о многопоточной работе Firefox вы найдете в посте Райана Поллока по ссылке .

В дополнение к многопроцессорной работе, Firefox 54 также получил несколько новых WebExtension API, для разработки дополнений, совместимых с другими браузерами. В релизе значатся API для создания боковых панелей, позволяющие размещать локальные HTML-файлы внутри панели. Также была добавлена возможность подключения собственного обработчика протоколов и возможность настройки about:newtab. Помимо этого, был внедрен Privacy API для управления настройками безопасности и приватности (networkPredictionEnabled, webRTCIPHandlingPolicy и hyperlinkAuditingEnabled).

В новом браузере была активирована sandbox-изоляция , ограничивающая доступ подпроцессов Firefox к файловой системе и другим процессам. В Linux изоляция системных вызовов реализована с применением Seccomp-bpf, а также User namespace и chroot. В Windows же применяются библиотеки sandboxbroker и sandboxtarget, разработанные и используемые компанией Google. Еще среди изменений, внедренных в Firefox 54, числится возможность создания и сохранения собственных устройств в Responsive Design Mode для тестирования сайтов (можно задать разрешение экрана, пропускную способность сети и др.).

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

И наконец, с выходом Firefox 54, Mozilla завершает процессы по закрытию канала с Aurora-версиями браузера. Теперь организация намерена использовать принцип поэтапной доставки обновлений для Release-канала, где новые функции, такие как Electrolysis, постепенно добавляются в браузеры небольшого числа пользователей. Если нововведение вызывает всплески отказов, или телеметрические данные указывают на возникающие сложности, Mozilla останавливает развертку обновления и дорабатывает решение.

Таким образом, процесс доставки продукта будет состоять из трех этапов: Nightly, Beta, Stable. Отказываясь от канала Aurora, разработчики надеются ускорить процесс выхода стабильных версий браузера на несколько месяцев.

Полный список изменений нового релиза вы можете найти на сайте разработчиков по ссылке .

P.S. О чем еще мы пишем в нашем блоге:

  • IaaS в мире музыки: как облако становится стандартом размещения аудиоконтента
  • Почему результат тестирования скорости диска в ноутбуке может быть лучше, чем у промышленного сервера в облаке?

Начиная с релизной версии Firefox 48, ускорить его можно изменив ряд параметров. Хотя данный функционал и был доступен ранее в бета-версиях, но официально Mozilla с 48 версии включила для 1% пользователей этот режим по умолчанию. Так что чем мы хуже? Основное изменение связано с использованием Многопроцессорного режима.
Большинству пользователей на обывательском уровне наверно понятно, что это несет более быстрое отображение сайтов и лучший отклик. Но помимо ускорения, это добавляет надежность, так как теперь одна зависшая вкладка не повлияет на работу остальных и всего браузера. Да и при открытии нескольких вкладок не будет уже таких блокирующих операций, как при работе в однопроцессорном режиме. А так же улучшение безопасности, теперь бяка-коду из-за изоляции будет сложнее получить ресурсы к компонентам браузера, но это в теории.
Чтобы убедиться что этот режим у вас включен, нужно зайти в пункт меню Справка - Информация для решения проблем - находим строку Многопроцессные окна.

Если стоит значение 0/1, то в адресной строке набираем


Стоит отметить, что при использовании этого режима для явного ускорение лисы, может быть не совместимым с установленными дополнениями. Проверить совместимость ваших дополнений можно на этой странице
Напоминаю, перед изменениями скопируйте файл prefs.js из папки с профилем, куда то в отдельное место и если будут проблемы, сможете все настройки вернуть обратно, просто вернув его на место. И так поехали.

Как ускорить Firefox

  • browser.tabs.remote.autostart – true
    многопроцессорный режим. Вся его прелесть раскрывается при очень динамичном серфинге. Но правда памяти кушает не много больше, чем в однопоточном режиме.
  • dom.ipc.processCount - 4
    сколько процессов будет использоваться. Можно ставить равным количеству ядер процессора
  • browser.tabs.remote.force-enable – true
    включение мультипроцессорного режима, даже если у вас установлены дополнения не совместимые с ним.
  • extensions.e10sBlockedByAddons – false
    расширения не блокируют работу многопроцессорности
  • extensions.e10sBlocksEnabling – false
    разрешить блокировку многопроцессорности
  • layers.async-pan-zoom.enabled – true
    асинхронный скроллинг при загрузке нескольких страниц
  • dom.ipc.plugins.asyncInit – true
    Асинхронная инициализация плагинов. Каждая страница, использующая эти плагины, инициализирует их при открытии, и этот процесс состоит из нескольких этапов во время которых чаще всего браузер и подвисает на некоторое время. Это параметр позволяет от этого избавиться.
  • javascript.options.asyncstack – true
    асинхронный вызов стеков
  • network.http.pipelining.aggressive – true
    В случае проблем с соединением (например сервер прерывает его) используются резервные механизмы для его поддержания
  • network.http.pipelining.max-optimistic-requests – 8
    Максимальное количество запросов в соединении, которое делает FireFox. Больше 8 заметного ускорения загрузки старницы не дает, но зато увеличивает нагрузку на сервер. В интернете очень много статей, где этот параметр явно больше. Не уверен, что это хорошо, ведь сервер должен вернуть ответ в строгой последовательности, а если была например временная проблема, то отображение сайта резко затормозится. Или вообще при большом значении, сервер может посчитать, что его просто ддосят с одного ip и заблокирует вас. Так что об ускорении уже речи идти не может.
  • browser.panorama.animate_zoom – false
    Параметр, отвечающий за анимацию "увеличения" вкладки при выборе её из панорамы (группы вкладок)
  • network.http.pipelining.maxsize – 524288
    вероятно это максимальный размер буфера конвейера
  • network.http.pipelining.ssl – true
    включает или выключает конвейерные запросы через SSL соединение (https)
  • network.http.proxy.pipelining – true
    Использовать несколько запросов в одном соединении с сервером, при использовании прокси.
    о конвейеризации
  • browser.cache.use_new_backend - 1
    включение новой системы HTTP кэширования. Позволяет исправить некоторые моменты с отзывчивостью интерфейса
  • memory.free_dirty_pages – true
    высвобождать не используемые страницы памяти. Освобождает память после закрытия вкладок. Положительно скажется на скорости работы Firefox
  • image.cache.timeweight – 100
    Задается вес, по которому определяется как удалять декодированное изображение из кэша. Значение ближе к нулю, акцент при удалении смещается на размер. Ближе к 1000, срок жизни изображения смещается на срок нахождения в кэше.

Если раньше вам казалось, что Лиса тормозила, то вам не казалось. FireFox быстрыми темпами развивается, что то добавляется, что то убирают. За несколько десятков релизов в Mozilla было добавлено столько всего не очень нужного и разношерстного, что вы очень удивитесь, как много всего он может без вашего ведома отсылать\собирать\отправлять куда-то и для какого-то анализа. Думаю в раскрою тему безопасности, так как это хоть и косвенно, но так же влияет на скорость работы самого браузера.
Ну и надеюсь после прочтения этой статьи и применении этих советов, хоть не много, но ускорение у вашего FireFox будет заметно.

Интересное видео, которое реально помогает ускорить загрузку страниц и снизить потребление трафика. Но! После её применения, на сайтах может перестать отображаться часть контента. Как пример, включите ее и обновите эту страницу. У вас может пропасть видео в конце этой статьи.

Так уж сложилось, что Firefox использует однопроцессорную модель, и реальность такова, что такой подход с учётом динамики развития сети и частичной связки с XUL вызывает, мягко говоря, много неудобств. Один процесс должен обрабатывать несколько потоков, что очень сильно сказывается на производительности браузера в целом. Отзывчивость Firefox оставляла желать лучшего, когда тот же Google Chrome прекрасно рендерил тяжёлые страницы, что никак не сказывалось на производительности других вкладок.

Такое положение вещей заставляло многих переходить на хром, а кто не хотел - искал пути решения в виде разного рода оптимизаций, которые по большому счёту из-за нелогичного подхода распределения потоков или банального желания настрочить что-то в блог просто усугубляли ситуацию. Теперь один процесс должен был не просто работать, а очень быстро работать! В конечном итоге и разработчики сами прекрасно понимали, что одно дело - мало памяти, другое - низкая скорость работы, которая в основном оправдана старыми связками с XUL. На деле: открываем в Firefox несколько вкладок сразу, скролим их и в момент загрузки видим, что все тормозит - ни о каком плавном серфинге речи быть не могло.

«Мозилла» начала проект Electrolysis для адаптации движка «Гекко» к использованию нескольких процессов. Что вынуждает «Мозиллу» переключаться на подобную модель построения своего браузера? В первую очередь, это производительность и отзывчивость. Основной целью является уменьшение подвисания (jank), проявляющегося при стандартных операциях - загрузке особенно крупной страницы, наборе текста в веб-форме или прокрутке перегруженной элементами страницы.

Предлагаю воспользоваться новыми функциями многопроцессорной модели (к сожалению, по умолчанию они отключены, так как еще в разработке). Все функции проверены самим автором, и их значения подобраны для максимально быстрой и стабильной работы. Основной упор сделан на производительность и отзывчивость Firefox в условиях агрессивного серфинга. Потребление памяти в сравнении с однопроцессорным режимом должно вырасти где-то на 12%-17% с учетом форсированного использования аппаратного ускорения, а без него не более, чем на 10%.

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

Оптимизация

Применимо на всех версиях выше 44beta

Правим about:config:

Browser.tabs.remote.autostart - true (включить многопроцессорность для вкладок) layers.async-pan-zoom.enabled - true dom.ipc.plugins.asyncInit - true (асинхронность плагинов) javascript.options.asyncstack;true layers.acceleration.force-enabled = true (отключить при проблемах с видео) network.http.max-connections = 512 network.http.pipelining = true network.http.pipelining.aggressive = true network.http.pipelining.max-optimistic-requests = 32 network.http.pipelining.maxrequests = 96 network.http.pipelining.maxsize = 600000 network.http.pipelining.ssl = true network.http.proxy.pipelining = true browser.cache.use_new_backend - 1 (новая система кеширования) memory.free_dirty_pages - true browser.tabs.animate = false image.cache.timeweight = 100 browser.display.show_image_placeholders - false nglayout.initialpaint.delay;0 (создать целое) browser.display.auto_quality_min_font_size - (-1)

Browser.display.focus_ring_on_anything (Логическое) = false browser.display.focus_ring_width (Целое) = 0

Защита

Network.dns.disableIPv6 - false network.dns.disablePrefetch - true network.predictor.enabled - false network.predictor.cleaned-up - true network.prefetch-next - false browser.send_pings - false network.http.speculative-parallel-limit - 0 (ноль) privacy.trackingprotection.enabled;true (защита от жучков) browser.safebrowsing.enabled;false browser.safebrowsing.malware.enabled;false datareporting.healthreport.service.enabled;false browser.safebrowsing.downloads.remote.enabled;false extensions.blocklist.enabled - false extensions.getAddons.cache.enabled - false browser.chrome.toolbar_tips - false media.video_stats.enabled - false dom.battery.enabled - false media.peerconnection.enabled=false

Устройства

Dom.gamepad.enabled;false dom.vr.oculus.enabled;false dom.vibrator.enabled

Отключить Hello

Browser.newtabpage.directory.ping - оставить пустую строку browser.newtabpage.directory.source - оставить пустую строку browser.aboutHomeSnippets.updateUrl - оставить пустую строку

Теперь качество работы повыситься в разы. Удачи.

Компании Mozilla Corporation выпала нелегкая судьба постоянно мириться со вторым местом. Ее браузер Mozilla Firefox сначала старался выбороть первенство у навязанного компанией Microsoft Internet Explorer, потом у мегапопулярной в середине 2000-х годов Opera на движке Presto. В конце 2000-х годов у Огненного Лиса появился его нынешний главный конкурент – браузер Google Chrome. А в последнее время еще и нарастает угроза в виде перспективного браузера в составе Windows 10 Microsoft Edge. Но в Mozilla Corporation рук не опускают, свято верят в светлое будущее Firefox и, начиная с версии браузера 48, поставляют его с многопроцессным режимом работы в целях ускорения работы. Для большей части пользователей браузера этот режим поставляется в перспективе быть задействованным, но он не активен по умолчанию.

1. О многопроцессном режиме Mozilla Firefox

Многопроцессный режим, он же Electrolysis, он же e10s – это технология многопоточной обработки данных, благодаря которой сам браузер, открытые в нем вкладки и внедренные в него дополнения могут работать в рамках не одного, а нескольких активных процессов. Пользователи смогут получить небольшой прирост производительности при работе с Интернетом посредством Mozilla Firefox. Правда, отчетливо заметным такой прирост будет только на слабых компьютерных устройствах. Многопроцессный режим призван ускорить запуск сайтов и в целом увеличить отзывчивость работы браузера. Кроме увеличения производительности, за счет внедрения многопроцессного режима усилится стабильность и безопасность браузера.

Многопроцессный режим Mozilla Firefox работает не так, как у Google Chrome. У последнего активные вкладки и расширения выделены во множество отдельных процессов. У Mozilla Firefox же после активации многопроцессного режима в довесок к процессу самого браузера появится лишь один дополнительный процесс, который будет обеспечивать работу открытых вкладок и установленных дополнений. В скором будущем Mozilla Corporation планирует увеличить число активных процессов браузера.

Основных недостатков у многопроцессного режима Mozilla Firefox два – увеличенное потребление оперативной памяти и несовместимость с этим режимом некоторых дополнений.

2. Как задействовать многопроцессный режим Mozilla Firefox

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

На этой странице в таблице «Сведения о приложении» ищем графу «Папка профиля» и жмем кнопку «Показать папку».

В проводнике откроется папка профиля браузера, в которой необходимо найти файл с названием «prefs» и расширением «.js». Нужно сделать копию этого файла и хранить ее в каком-то надежном месте.

Теперь можем приступать к активации многопроцессного режима. Набираем в адресной строке:

Жмем кнопку с надписью «Я принимаю на себя риск».

browser.tabs.remote.autostart

Это параметр задействования многопроцессного режима. Двойным кликом меняем предустановленное значение этого параметра с «false» на «true».

Затем в поле поиска вписываем:

extensions.e10sBlockedByAddons

Активация этого параметра необходима на тот случай, если дополнения Firefox, не адаптированные под работу с многопроцессным режимом, будут блокировать его. Здесь необходимо двойным кликом значение по умолчанию «true» заменить на «false».

Чтобы наиболее полно ощутить эффект от многопроцессного режима работы Firefox, можно установить задействование браузером нескольких ядер процессора компьютера. В поле поиска параметров вводим:

Двойным кликом открываем окошко редактирования значения. Вместо установленного по умолчанию значения «1» вписываем «2», «4» или «8» в соответствии с выделяемым браузеру количеством ядер процессора.

По завершении редактирования параметров скрытых настроек перезапускаем браузер.

Чтобы отключить многопроцессный режим работы Firefox, необходимо, соответственно, проделать все действия наоборот. Но проще вернуть браузер к дефолтным настройкам, заменив в папке профиля браузера файл prefs.js в текущей редакции на ранее сделанную копию.

Отличного Вам дня!

Зачем браузеру нужно несколько процессов? Многопроцессная архитектура повышает безопасность и стабильность: если где-то произойдёт сбой, то он не утянет разом за собой всё остальное.

На самом деле приём со множеством процессов уже давно используют другие браузеры, причём значительно более агрессивно, чем Firefox. К примеру, Chrome и все обозреватели на базе Chromium (современная Opera, Яндекс.Браузер и прочие) и вовсе могут показывать в диспетчере задач десятки процессов в памяти, если у вас загружено много вкладок.

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

Firefox создаёт меньше процессов, чем Chrome?

Как мы уже сказали, Mozilla подошла к вопросу с несколькими процессами куда более осторожно, чем та же Google.

Изначально разработчики сделали для Firefox лишь один дополнительный процесс, куда выводились плагины (не путать с расширениями), – plugin-container.exe. Таким образом, у Firefox впервые появилось 2 процесса.

Однако время шло и требовало от компании всё же не уступать конкурентам в плане стабильности и безопасности. В итоге в этом году была завершена давно тестировавшаяся полноценная многопроцессная архитектура Firefox.

Преимущество по меньшему потреблению памяти Firefox не теряет, даже если использует свою многопроцессность на максимум (8 CP – 8 процессов для обработки контента)

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

Впрочем, с процессами у Firefox дела обстоят все равно не так, как у Chrome. Если детище Google запускает в отдельных процессах буквально всё и вся (каждую вкладку, каждое расширение), то Firefox разбивает различные элементы на группы. В итоге процессов получается совсем не так много, как у главного конкурента.

Отсюда заметно меньшее потребление памяти и в некоторых случаях меньшая нагрузка на CPU. Ведь огромное число процессов в Chromium-браузерах может грузить даже не самый слабый процессор. А вот Mozilla в итоге пришла к компромиссному и, на наш взгляд, наиболее разумному решению.

Вдобавок Firefox использует иной механизм вкладок по требованию в отличие от того, что применяется в Chrome и браузерах на основе Chromium.

Если эти веб-обозреватели автоматически последовательно загружают в фоне вкладки с предыдущей сессии, то «огненный лис» делает это лишь при явном обращении (клике) по вкладке, тем самым, не создавая лишних процессов, когда в них нет необходимости. Это также способствует меньшему потреблению ресурсов.

Как уменьшить число процессов Firefox?

В отличие Google, Mozilla практически позволяет пользователю самому регулировать, сколько процессов в памяти использовать браузеру.

Видите, как в диспетчере задач висят несколько процессов firefox.exe (или firefox.exe *32 в случае использования 32-разрядных версий) и хотите их убрать/отключить – не проблема. Откройте настройки, прокрутите вниз раздел «основное», дойдя до подраздела «производительность»:

Если вы снимете флажок с параметра «Использовать рекомендуемые настройки производительности», то перед вами появится настройка числа процессов обработки контента.

На выбор предлагаются варианты от 1 до 7 процессов (если памяти у вас более 8 ГБ, то процессов может предлагаться и больше, чем 7):

На этом моменте стоит сделать несколько важных уточнений.

Во-первых, речь идёт о процессах для обработки контента. Если вы укажете здесь, например, всего 1 процесс, то общее число процессов в памяти уменьшится, однако лишь одну копию firefox.exe вы все равно не получите, т. к. помимо контента Firefox выводит в отдельные процессы ещё и обработку интерфейса.

Во-вторых, уменьшение числа процессов имеет смысл на компьютерах с небольшим объёмом «оперативки» и крайне слабым железом. В свою очередь, на более-менее приемлемом железе многопроцессность не ухудшит производительность, а, наоборот, будет способствовать ей, пусть и ценой увеличенного потребления памяти.

Есть ли выгода от уменьшения числа процессов?

Если говорить о нашем собственном примере, то для ПК с 8 ГБ ОЗУ изначально было предложено 4 процесса по обработке контента. При этом в памяти при открытии большого числа вкладок могло отображаться до 7 процессов.

Когда мы установили число процессов контента равным 1, перезапустили браузер и заново прокликали по всем вкладкам, чтобы они загрузились, в памяти предсказуемо осталось только 4 процесса.

Из них 3 предназначены для самого браузера и 1 процесс как раз для обработки контента, причём последний легко отличить, т. к. при открытии приличного числа вкладок он начинает забирать себе памяти значительно больше остальных:

В Firefox при этом у нас было открыто 15 различных сайтов. В изначальном режиме (7 процессов) суммарное потребление памяти составило около 1,5 ГБ. Когда же процессов осталось лишь четыре, то в сумме они забирали около 1,4 ГБ (см. скриншоты выше).

Мы повторяли эксперимент несколько раз, каждый из них «выигрыш» оперативной памяти составлял всего 100-150 МБ. При этом стоит учитывать, что производительность браузера от перехода на 1 процесс для контента могла быть снижена. Таким образом, смысл уменьшения числа процессов, как видите, весьма невелик.