Представлен план перевода Firefox на многопроцессную архитектуру выполнения, при которой обработка интерфейса и контента каждой вкладки производится отдельными процессами, что позволяет увеличить безопасность, повысить надёжность, оптимизировать высвобождение системе неиспользуемой памяти и заметно ускорить работу браузера на многоядерных системах за счёт организации параллельного выполнения не блокирующих друг друга операций. В настоящее время режим обработки вкладок в отдельных процессах доступен для тестирования в ночных сборках Firefox и активируется через установку переменной «browser.tabs.remote.autostart» в настройках about:config.
План перевода основной ветки Firefox на многопроцессную архитектуру включает следующие этапы:
18 июля — доведение режима многопроцессной работы до готовности использования типовым пользователем ветки Nightly, но не включение такого режима по умолчанию;
21 июля — шесть недель с момента начала цикла разработки Firefox 34 будут выделены на тестирование режима многопроцессной работы и оценки его совместимости с дополнениями;
1 сентября — после старта цикла разработки Firefox 35 ожидается включение многопроцессного режима по умолчанию в ветке Nightly для прохождения второго этапа тестирования;
13 октября — начало разработки ветки Firefox 36, в которую будет интегрирована поддержка многопроцессного режима. Выпуск Firefox 36 ожидается 16 февраля следующего года.
Наиболее значительные препятствия на пути внедрения многопроцессной архитектуры возникают из-за проблем с совместимостью с дополнениями. В текущем виде совместимость с дополнениями оставляет желать лучшего, например, пока не работает большинство популярных дополнений, включая Adblock Plus, Tab Mix Plus, HTTPS-Everywhere, LastPass, Video DownloadHelper, Greasemonkey. Из работающих дополнений можно отметить Web Developer, Test Pilot и Flagfox. В общем виде, из 27 протестированных дополнений сразу заработали только 2 дополнения и ещё 4 удалось запустить после внесения изменений.
Основные преимущества перехода к многопроцессной обработке:
Оптимизация для многоядерных процессоров. В текущем виде для обработки всех страниц и интерфейса пользователя используется только одно ядро CPU, все остальные ядра простаивают и не участвуют в обеспечении работы браузера (за исключением ситуаций с выполнением плагинов). Несмотря на попытки использования многопоточности и вынос за пределы основного цикла обработки событий выполнения таких операций, как декодирование изображений, видео и звука, осуществление сетевых операций и ввода/вывода, по прежнему остаются однопоточными подсистема DOM (Document Object Model), функции формирования содержимого окна, парсинг HTML и выполнение JavaScript, т.е. для обработки контента может быть задействовано только одно ядро CPU.
Предсказуемое потребление памяти. В длительно выполняемых процессах, при постоянном выделении и освобождении памяти разного размера со временем растет фрагментация и остается все больше небольших «дыр» от ранее освобожд
Добавил
X86 13 Июля 2014