- PVSM.RU - https://www.pvsm.ru -
C января этого года Билл Макклоски вместе с Дэвидом Андерсоном работали над тем, чтобы сделать «Файерфокс» мультипроцессовым, в этом им помогали Том Шустер (evilpie), Фелипе Гомез и Марк Хаммонд. И теперь настал момент, когда они хотели бы узнать мнение сообщества о проделанной работе [1].
В «Файерфоксе» всегда использовалась однопроцессовая модель построения. Интерес к изменениям в области распараллеливания подстегнул выход браузера «Хром», в нём использовались один процесс для интерфейса и отдельные процессы для работы с контентом веб-страницы. (Тем не менее за шесть месяцев до «Хрома» несколько процессов начал использовать «Интернет эксплорер 8».) Вскоре, примеру «Хрома» последовали и некоторые другие браузеры, «Мозилла» начала проект Electrolysis [2] для адаптации движка «Гекко» к использованию нескольких процессов.
Что вынуждает «Мозиллу» переключаться на подобную модель построения своего браузера? В первую очередь это производительность и отзывчивость. Основной целью является уменьшение подвисания (jank), проявляющегося при стандартных операциях — загрузке особенно крупной страницы, наборе текста в веб-форме или прокрутке перегруженной элементами страницы.
Отзывчивость сегодня является несколько более важной, чем производительность. Часть работ была произведена в рамках проекта Snappy [3]. Основными задачами являлись:
Простейшие из этих задач уже были выполнены, сейчас остались наиболее трудные.
Другой необходимостью является безопасность. Сейчас, после обнаружения незакрытого бага в «Файерфоксе» злоумышленник может выполнить произвольный код на машинах пользователей. Для решения проблем безопасности используется множество техник и приёмов, но самым эффективным остаётся запуск кода в «песочнице».
Однако, размещение текущей однопроцессовой архитектуры «Файерфокса» в «песочнице» не представляется эффективным: режим песочницы не даёт процессу выполнять действия, которые он делать не должен, а текущая организация «Файерфокса» (особенно, с множеством дополнений) требует широкого доступа к сети и файловой системе. Мультипроцессовый «Файерфокс» будет обеспечивать работу каждого из процессов веб-контента в режиме песочницы с глубокими ограничениями, что, как надеются разработчики, позволит уменьшить количество уязвимостей в браузере. Контроль за доступом к файловой системе будет производиться главным процессом.
Кроме того, разработчики пытались повысить стабильность «Огненной лисы», даже несмотря на то, что «Файерфокс» остаётся самым стабильным браузером в мире [4]. Вместо падения целого браузера будет падать лишь процесс, ответственный за конкретную вкладку или элемент.
Уже сейчас можно попробовать посмотреть, что получилось. Для этого достаточно скачать ночную сборку [5] браузера и установить параметр browser.tabs.remote
равным true
. Разработчики настойчиво рекомендуют создать новый профиль. about:memory
уже отображает потребление для отдельных процессов.
Так выглядит окно мультипроцессного «Файерфокса». Подчёркнутое название вкладки отражает то, что её контент обрабатывается в отдельном процессе.
Так падает отдельная вкладка.
Первый вопрос, который возникает у большинства, связан с потреблением оперативной памяти. Пользователи убеждены, что больше процессов значит больше занятой памяти. Разработчики обещают ряд оптимизаций и внедрение определённых видов кэша, общих для нескольких процессов. Если в одном из них существуют какие-либо данные, записанные одним процессом, другой процесс сможет проверить их наличие и использовать данные из этого кэша вместо создания новых в своей области памяти. Подобная модель позволит как повысить безопасность, так и сохранить некоторое быстродействие.
С использованием бенчмарка MemBench и открытием 50 вкладок потребление памяти возросло всего лишь на 10 мегабайт (с 974 мегабайт до 984 мегабайт). С течением времени эта разница станет минимальной.
На данный момент остаётся неизвестным, когда мультипроцессовый «Файерфокс» достигнет стадии релиза — перед разработчиками стоит слишком много работы. Детали новой архитектуры отражены в публикации Билла Макклоски [6].
Автор: FakeFactFelis
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/razrabotka/50059
Ссылки в тексте:
[1] хотели бы узнать мнение сообщества о проделанной работе: http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/
[2] Electrolysis: https://wiki.mozilla.org/Electrolysis
[3] Snappy: https://wiki.mozilla.org/Performance/Snappy
[4] «Файерфокс» остаётся самым стабильным браузером в мире: http://habrahabr.ru/post/191308/
[5] скачать ночную сборку: http://nightly.mozilla.org/
[6] публикации Билла Макклоски: http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/#work
[7] Источник: http://habrahabr.ru/post/204982/
Нажмите здесь для печати.