В ночных сборках Firefox появилась поддержка многопроцессного выполнения, подразумевающего вынос в разные процессы средств формирования интерфейса и обработчиков контента. Процесс, отвечающий за интерфейс, во многом напоминает базовый однопроцессный вариант Firefox, он формирует окружение браузера на основе XUL, выполняет дополнения, инициирует управление вкладками и обеспечивает вывод окна. Отличие состоит в том, что обработка содержимого вкладки выносится из данного базового процесса в отдельный внешний процесс.
Результат компоновки интерфейса и обработки контента формируется в виде слоёв, которые определяют содержимое окна. Например, панели, меню и результат обработки контента определяются в отдельных слоях. Из разных процессов слои передаются в систему отрисовки, которая занимается сведением (композитингом) серии слоёв в единое изображение, определяющее итоговое содержимое окна браузера.
Разделение компонентов для обработки контента и формирования интерфейса в разные процессы позволяет заметно ускорить работу браузера на многоядерных системах за счёт организации параллельного выполнения не блокирующих друг друга операций. Потребление памяти в многопроцессном режиме мало отличается от обычного однопроцессного режима, разница составляет около 10 Мб, при этом планируемые оптимизации позволят снизить этот показатель.
Проект по переводу Fierfox на многопроцессную архитектуру, развиваемый под кодовым именем Electrolysis, стартовал в 2009 году, но в 2011 году был приостановлен из-за наличия более простых путей повышения отзывчивости интерфейса, не требующих значительной переработки архитектуры браузера (например, оптимизация работы сборщика мусора, дробление длительно выполняемых операций или их выделение в отдельный поток, использования асинхронного ввода/вывода и вынос выполнения плагинов в отдельные процессы). Спустя два года, когда более простые варианты оптимизаций уже воплощены в жизнь, разработчики вернулись к идее обработки контента и пользовательского интерфейса в разных процессах.
Новый режим уже доступен в ночных сборках Firefox и может быть активирован через установку переменной browser.tabs.remote в настройках about:config. Разработка пока носит экспериментальный характер и не позволяет использовать некоторые возможности браузера, такие как средства для web-разработчиков, вывод на печать и сохранение страниц. Дополнения в новом режиме ведут себя по-разному, некоторые работают нормально, а с некоторыми возникают проблемы. В случае краха процесса, обрабатывающего содержимое вкладок, процесс, отвечающий за формирование интерфейса, продолжает работу и выводит предупреждение о крахе.
Раздельная обработка вкладок в разных процессах пока не поддерживается, в текущий момент возможна работа только одного процесса обработки контента. В будущем планируется обеспечение поддержки работы нескольких процессов обработки контента (отдельные обработчики для каждой вкладки).
Основные преимущества перехода к многопроцессной обработке: (http://www.opennet.ru/ope...)
Комментарии