О перспективах выпуска мультипроцессового Firefox

14 Январь 2014

В начала года Билл Макклоски начал работать над проектом мультипроцессового Firefox, в чем ему помогает Дэвид Андерсон, Том Шустер, Марк Хаммонд и Фелипе Гомез. И вот наступило время, когда разработчики уже могут представить на суд общественности первые результаты проделанной работы.

«Файерфокс» всех версий всегда работал на однопроцессовой модели построения. На фоне повышения интереса к распаралелливанию потоков и задач, начался бум браузера Google Chrome (в нем впервые в один поток отделили процессы для интерфейса, а в другой поток – процессы для работы с контентом). Вскоре примеру Chrome последовали и другие игроки браузерного рынка, а в Mozilla даже запустили проект Electrolysis, ориентированный на адаптацию движка к работе с несколькими процессами.

Что вынудило американского разработчика ПО Mozilla Corp. переключиться на неизвестную для себя модель? Должно быть, у них есть весомые аргументы? Да, есть! На новой архитектуре они смогут значительно повысить отзывчивость браузера Firefox и его производительность. Основная цель разработок вообще сводится к уменьшению подвисания при выполнении стандартных операций (например, загрузке крупных страниц, наборе текста в веб-формате или прокрутке перегруженных элементами страниц).

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

  • Перемещение длинных операций в отдельный поток для сохранения отзывчивости главного процесса.
  • Разбиение длинных операций на части.
  • Реализация асинхронного ввода-вывода, чтобы исключить вероятность блокировки главного процесса более приоритетными дисковыми операциями.

Простейшие из описанных задач уже реализованы, а на «десерт» осталось только самое сложное.

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

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

Реализация мультипроцессового Mozilla Firefox позволит запускать каждый процесс веб-контента в песочнице с глубоким ограничением прав, что, по прогнозам разработчиков, позволит значительно повысить устойчивость браузера к разного рода атакам. Контролировать доступ к файловой системе в новом браузере будет главный процессор.

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

Посмотреть, что получилось у команды Билла Макклоски можно уже сегодня. Просто скачайте ночную сборку Mozilla Firefox и установите для параметра browser.tabs.remote значение true. Чтобы увидеть, как отдельные процессы потребляют системные ресурсы, создадите новый профиль about:memory.

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

На данный момент еще рано судить, когда Mozilla подготовит релиз мультипроцессового Firefox – у разработчиков еще очень много работы. Другую информацию о новой архитектуре читайте на личном блоге Билла Макклоски.


Скопируйте этот код и вставьте его в свой сайт или блог (HTML)
Скопируйте этот код и вставьте его на форум (BBcode)
Кликните, если это возможно
Комментариев нет.