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

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

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

Результат компоновки интерфейса и обработки контента формируется в виде слоёв, которые определяют содержимое окна. Например, панели, меню и результат обработки контента определяются в отдельных слоях. Из разных процессов слои передаются в систему отрисовки, которая занимается сведением (композитингом) серии слоёв в единое изображение, определяющее итоговое содержимое окна браузера.

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

Потребление памяти в многопроцессном режиме мало отличается от обычного однопроцессного режима, разница составляет около 10 Мб, при этом планируемые оптимизации позволят снизить этот показатель.

Проект по переводу Fierfox на многопроцессную архитектуру, развиваемый под кодовым именем Electrolysis, стартовал в 2009 году, но в 2011 году был приостановлен из-за наличия более простых путей повышения отзывчивости интерфейса, не требующих значительной переработки архитектуры браузера (например, оптимизация работы сборщика мусора, дробление длительно выполняемых операций или их выделение в отдельный поток, использования асинхронного ввода/вывода и вынос выполнения плагинов в отдельные процессы).

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

Новый режим уже доступен в ночных сборках Firefox и может быть активирован через установку переменной browser.tabs.remote в настройках about:config. Разработка пока носит экспериментальный характер и не позволяет использовать некоторые возможности браузера, такие как средства для web-разработчиков, вывод на печать и сохранение страниц.

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

Раздельная обработка вкладок в разных процессах пока не поддерживается, в текущий момент возможна работа только одного процесса обработки контента. В будущем планируется обеспечение поддержки работы нескольких процессов обработки контента (отдельные обработчики для каждой вкладки).

Основные преимущества перехода к многопроцессной обработке:

*   Оптимизация для многоядерных процессоров. В текущем виде для обработки всех страниц и интерфейса пользователя используется только одно ядро CPU, все остальные ядра простаивают и не участвуют в обеспечении работы браузера (за исключением ситуаций с выполнением плагинов).

Несмотря на попытки использования многопоточности и вынос за пределы основного цикла обработки событий выполнения таких операций, как декодирование изображений, видео и звука, осуществление сетевых операций и ввода/вывода, по прежнему остаются однопоточными подсистема DOM (Document Object Model), функции формирования содержимого окна, парсинг HTML и выполнение JavaScript, т.е. для обработки контента может быть задействовано только одно ядро CPU.

*   Предсказуемое потребление памяти. В длительно выполняемых процессах, при постоянном выделении и освобождении памяти разного размера со временем растет фрагментация и остается все больше небольших "дыр" от ранее освобожденных объектов, которые располагаются вперемешку с занятыми блоками памяти.

В ситуации запроса памяти для размещения нового объекта, часто приходится запрашивать новые блоки у операционной системы, несмотря на наличие достаточно большого числа свободных областей во внутренней "куче", размер которых по отдельности меньше запрошенного блока.

В случае обработки web-страниц разными процессами занятые процессом блоки памяти после завершения процесса полностью отдаются обратно операционной системе, а не остаются в "резерве", закрепленными за одним процессом в надежде, что эта память понадобится в будущем.

Таким образом, обработка каждой вкладки отдельным процессом может привести к заметной экономии памяти (общие данные между процессами не дублируются, через мапинг используется только одна копия) и избавлению от проблемы с постоянным ростом размера процесса.

*   Защита от сбоев. В случае выхода за пределы допустимой границы буфера или при возникновении другой нештатной ситуации при использовании однопроцессной модели обработки, крах процесса приведет к закрытию всех окон и вкладок.

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

Современные операционные системы позволяют перевести процесс в "режим пониженных прав", при котором блокируется доступ к большому числу системных ресурсов.

В случае эксплуатации уязвимости в таком процессе, код злоумышленника будет ограничен в своих возможностях и не сможет выйти за пределы "песочницы". Для совершения атаки в подобных ситуациях требуется эксплуатация еще одной уязвимости в более привилегированном управляющем процессе.

Источник: http://www.opennet.ru/opennews/art.shtml?num=38598

Мультипроцессовый Firefox

Всегда интересовало, как браузеры с одним процессом на вкладку будут вести себя при большом количестве открытых табов. У меня сейчас, например, открыто 100 вкладок, и это не предел - лисе от такого количества не поплохеет? :sick:

Юзер пишет

Всегда интересовало, как браузеры с одним процессом на вкладку будут вести себя при большом количестве открытых табов. У меня сейчас, например, открыто 100 вкладок, и это не предел - лисе от такого количества не поплохеет? :sick:

Не знаю как он себя будет вести, но сейчас падает даже при попытке открыть даже одну вкладку. :)

Возрадуйтесь же владельцы семпронов и селеронов! :lol:

Возрадуйтесь же владельцы семпронов и селеронов! :lol:

Что это такое?))

Hastla пишет

Что это такое?))

Лучше тебе не знать :D

Но новость радует, наконец-то многозадачность доплелась и до лиса, только, полагаю, это в релиз попадёт не скоро...

Что это такое?))

Hastla, :)

Celeron

Sempron

лучше бы они на это дело свои силы бросили, чем этот мерзкий Астралис пилить..

Это вообще странное решение, польза будет только если одновременно грузить много вкладок, на отзывчивость интерфейса почти никак не повлияет. :/
Лично я буду отключать этот костыль, хоть и имею 6 ядер.

dennius пишет

лучше бы они на это дело свои силы бросили, чем этот мерзкий Астралис пилить..

Категорически не согласен! Австралис больше пользы принесет чем это штампование процессов.

В наше время гуй куда более важен чем небольшое улучшение теоретической скорости загрузка браузером сразу всех ядер. ;)

dennius

лучше бы они на это дело свои силы бросили, чем этот мерзкий Астралис пилить..

Так и представляю картину маслом, как гендиректор Mozilla в понедельник вбегает в отдел дизайнеров и специалистов по UI толкая перед собой тележку забитую книжками.
- Друзья, вчера я прочел на русском форуме, что движок значительно важнее UI. Забудьте про XUL, Javascript, CSS и HTML. Всем до обеда выучить C++ и к концу дня выдать по 150 строк кода.
С этими словами он начинает раздавать с тележки книги "С++ для чайников"

banbot а что, Australis улучшает показатели обработки скриптов? CSS, HTML?
ЕМНИП тот же Хром стал популярен в основном за счёт быстрого запуска, быстрой работы браузера и скриптов (и не в последнюю очередь за счет навязчивой рекламы, конечно же)

dennius пишет

Australis улучшает показатели обработки скриптов? CSS, HTML?

Вы предлагаете расформировать дизайнерский отдел?

dennius
Судя по вашим запросам, вам нужно поставить IE 11. По заявлениям Microsoft у них и JavaScript быстрее всех, и аппаратное ускорение крутое, и многопроцессность раньше чем в Chrome появилась.
Интерфейс, правда, как будто пьяные орки создавали. Ну так это же неважно, правда :rolleyes: ?

littleleshy пишет

Вы предлагаете расформировать дизайнерский отдел?

Да вообще то не нужен он. И не загружен полностью, уже третий раз логотип меняют на "более современный". Беда даже не в том, что они в своём отделе ерундой занимаются, но ведь они на другие отделы влияют!

Опупум пишет

Да вообще то не нужен он

Опупум пишет

они в своём отделе ерундой занимаются

Скажите это всем, кто учит дизайнеров, учится на дизайнера или уже получил диплом дизайнера.

littleleshy пишет

Скажите это всем, кто учит дизайнеров, учится на дизайнера или уже получил диплом дизайнера.

Пусть заходят сюда и читают, что мне за ними бегать что-ли?
Да и речь то идёт именно о конкретном отделе, - выхлоп от них никудышный.

littleleshy пишет

Вы предлагаете расформировать дизайнерский отдел?

Если вам интересно мое мнение, то перестановки не помешали бы. Имхо, со времен Ширетоко, или когда там рыжая кнопка появилась, никаких хороших дизайнерских решений в настольной версии я не увидел. За исключением менеджера загрузок, он и правда хорош.

banbot пишет

Судя по вашим запросам, вам нужно поставить IE 11. По заявлениям Microsoft у них и JavaScript быстрее всех, и аппаратное ускорение крутое, и многопроцессность раньше чем в Chrome появилась.
Интерфейс, правда, как будто пьяные орки создавали. Ну так это же неважно, правда :rolleyes: ?

Либо вы читать не умеете, либо я - писать :blush:
Да, я - за реальные улучшения браузера, чем за косметические. Интерфейс я и сам себе запилю. Шкурками + аддонами + userchrome + custom buttons и т.д. В свое время перешел на лису именно из-за того, что есть возможность САМОМУ допилить то, что не нравится. В Аустралисе, кроме убогого интерфейса (субъективно, исправимо, поэтому несущественно) нет ничего нового по-настоящему полезного. Более того, урезаны возможности по кастомизации, и это его самый жирный минус

dennius
Загрузки нужно все же допиливать - мне не понравились. Их ужимать стилем надо, загруженные файлы из списка при перезапуске браузера исчезают, зато в библиотеке неудобной остаются. Плюс всего 3 строчки, какой толк в них?

Сам де австралис на протяжении всего тестирования все больше из грязи вылезает, однако никак не вылезет :-) Мне лично менюшка нравится особенно в сочетании с СВ. Однако она до сих пор не может заменить обычную. Где например есть пункт показать страницу без стиля, та что в меню - вид.

Юзер

Всегда интересовало, как броузеры с одним процессом на вкладку будут вести себя при большом количестве открытых табов. У меня сейчас, например, открыто 100 вкладок, и это не предел - лисе от такого количества не поплохеет? :sick:

Работает медленно, но работает. :)

dennius

лучше бы они на это дело свои силы бросили, чем этот мерзкий Астралис пилить..

Там разные отделы разными вещами занимаются. Дизайнерский отдел всё равно не потянет разработку движка. А вот если речь о назначении приоритетов и выделении финансов, то тут я полностью согласен.

VINRARUS

В наше время гуй куда более важен

И с этим отчасти соглашусь. Именно поэтому лучше бы они этот Австралис выкинули в мусорку до выпуска, а оставили бы из него только новую кнопку с меню для мобильной версии, где ей самое место.

banbot

Так и представляю картину маслом, как гендиректор Mozilla в понедельник вбегает в отдел дизайнеров и специалистов по UI толкая перед собой тележку забитую книжками.
- Друзья, вчера я прочел на русском форуме, что движок значительно важнее UI. Забудьте про XUL, Javascript, CSS и HTML. Всем до обеда выучить C++ и к концу дня выдать по 150 строк кода.

Ерунда, этого просто не может быть — хотя бы потому, что гендиректор Mozilla не может читать по-русски.  А жа-аль… ;)

littleleshy

Вы предлагаете расформировать дизайнерский отдел?

По меньшей мере, сокращения и кадровые перестановки пошли бы ему только на пользу.

banbot

вам нужно поставить IE 11. …
Интерфейс, правда, как будто пьяные орки создавали.

Да вот кто бы теперь говорил. Хотя с тем, что интерфейс у IE 11 не фонтан, соглашусь — всё тот же Хром, только чуть отличаются значки и вкладки прямоугольные.


Опупум

Да вообще то не нужен он. И не загружен полностью, уже третий раз логотип меняют на "более современный".

Знаете, чем, согласно поговорке, занимаются коты? Вот и дизайнерский отдел Mozilla туда же…

okkamas_knife

тутже появится 100500 тем оформления причем таких которые будут востребованы юзерами.

И тут же, вот прямо на следующий день, все поотвалятся! ;)

littleleshy

Скажите это всем, кто учит дизайнеров, учится на дизайнера или уже получил диплом дизайнера.

А вы не обобщайте.

dennius

Имхо, со времен Ширетоко, или когда там рыжая кнопка появилась, никаких хороших дизайнерских решений в настольной версии я не увидел

И с этим я скорее согласен.

За исключением менеджера загрузок, он и правда хорош.

Вот с этим не очень, мне старый с несколькими дополнениями, которые теперь не работают, больше нравился.
А самые, на мой взгляд, удобные менеджеры загрузок (из встроенных по умолчанию) — в старой Opera и в нынешнем SeaMonkey.
Вот на что не мешало бы посмотреть дизайнерам Mozilla. Но они не этим заняты.

Да, я - за реальные улучшения броузера, чем за косметические. Интерфейс я и сам себе запилю. Шкурками + аддонами + userchrome + custom buttons и т.д. В свое время перешел на лису именно из-за того, что есть возможность САМОМУ допилить то, что не нравится. В Аустралисе, кроме убогого интерфейса (субъективно, исправимо, поэтому несущественно) нет ничего нового по-настоящему полезного. Более того, урезаны возможности по кастомизации, и это его самый жирный минус

Опять же, согласен практически со всем сказанным. Но вот насчёт исправимо — это только пока дополнения-костыли, возвращающие прежнюю функциональность, работают.

И, кстати, нет никаких гарантий, что завтра или послезавтра вообще все подобные расширения с AMO не захотят выкинуть, взяв пример сами-знаете-с-какой-компании.