
Правда, пока речь не идет о разделении процесс-на-вкладку, а подразумевается разделение работы веб-браузера на основе двух процессов. Первый отвечает за работу с пользовательским интерфейсом GUI, а второй за воспроизведение содержимого вкладок. Проект по разделению вкладок в Firefox называется Electrolysis (e10s), в документации к нему описаны особенности нового режима работы веб-браузера. Согласно изданию Ars Technica, Firefox может получить полное разделение процессов вкладок позднее в этом году.
Вышеуказанная функция уже была доступна пользователям бета-версии Firefox 47, но для ее включения в веб-браузере нужно было активировать специальную настройку.
Future versions of Firefox will run the browser UI in a separate process from web content. In the first iteration of this architecture, all browser tabs will run in the same process and the browser UI will run in a different process. In future iterations, we expect to have more than one content process. The project that's delivering multiprocess Firefox is called Electrolysis, sometimes abbreviated to e10s.
developer.mozilla.org/en-US/Firefox/Multiprocess_Firefox
Напомним, что Mozilla Firefox уже использует отдельный процесс для запуска там плагинов к веб-браузеру (plugin_container.exe), теперь то же правило будет применяться и к содержимому веб-страниц, посещаемых пользователем.

Новую версию веб-браузера можно скачать на ftp-сервере Mozilla или в бета-разделе. На момент написания поста, новая бета-версия была доступна только через ftp-сервер.
Отметим, что на сегодняшний день наиболее безопасными веб-браузерами для Windows 10 являются Google Chrome и MS Edge. Оба используют разделение процессов вкладок на 64-битной основе, а также опираются на sandbox для процессов на основе AppContainer. Кроме этого, оба браузера применяют специальные методы защиты от LPE-эксплойтов, используя методы т. н. win32k.sys lockdown. Некоторые из функций безопасности стали возможны именно за счет разделения функций работы веб-браузера на процессы, что позволило отделить главный GUI-процесс от запущенных процессов вкладок с sandboxed-содержимым. Недавно Google также изменила страницу загрузки Chrome для Windows таким образом, что ссылка на загрузку веб-браузера по умолчанию ведет на его 64-битную версию.
Комментарии (44)
ChALkeRx
08.06.2016 14:52речь не идет о разделении процесс-на-вкладку
К слову, в Chrome/Chromium не совсем «процесс-на-вкладку» — вкладки группируются, один процесс обрабатывает несколько вкладок. Причём часто — не связанные между собой сайты. Это можно увидеть в диспетчере задач браузера, или когда несколько вкладок падают одновременно из-за проблем на одной из них.
Как в Edge — не могу сказать.napa3um
08.06.2016 15:30Порождённые вкладки (и всякие всплывающие окошки) одного домена предполагают возможность управления ими из «родительской» вкладки (даже если эта возможность не используется), потому они все обрабатываются в рамках одного процесса. В остальных случаях всегда используется отдельный процесс на каждую вкладку. Не связанные между собой сайты, обрабатываемые в разных процессах, всё равно могут упасть одновременно (при ошибке в корневом процессе браузера, управляющего коммуникацией песочниц с GUI).
ChALkeRx
08.06.2016 15:37Хм. Спасибо.
одного домена
Вы в этом моменте уверены? Во-первых, у меня группируются вкладки с разных доменов.
Во-вторых, см. https://habrahabr.ru/post/282880/.ChALkeRx
08.06.2016 15:46Картинка, на всякий случай:
Но да, примерно понятно, каким образом они связаны между собой — если одна открывается из другой, а дальше в ней переходим куда-то ещё (на другой сайт) — они остаются в одном процессе.
Например, только что открыл Google, набрал в поиске слово «пример», понажимал средней кнопкой на первые пять ссылок — они все оказались в одном процессе.
BlessMaster
09.06.2016 04:13Это особенно заметно, когда в случае сбоя одновременно «падают» сразу несколько вкладок с разных сайтов.
napa3um
09.06.2016 05:57Дочитайте окончание комментария.
BlessMaster
10.06.2016 02:27Изначально заявлялось об изоляции процессов и повышенной безопасности в связи с этим. Не знаю насчёт безопасности, но стабильности это браузеру не добавило.
ChALkeRx
10.06.2016 09:49См. скриншот выше и пример воспроизведения.
Не связанные между собой сайты, обрабатываемые в разных процессах, всё равно могут упасть одновременно (при ошибке в корневом процессе браузера, управляющего коммуникацией песочниц с GUI).
При этом упадёт всё целиком, скорее всего — и таких ошибок я не видел что-то, емнип.
А вот падающую группу вкладок (которые работали в одном процессе) — вполне.napa3um
10.06.2016 09:52Ваш ответ понятен, вы дополнили тот факт, что «с одного домена» — не слишком точное утверждение, что вкладка, порождённая из одного домена, может уже успеть «уйти» на другой домен. Совет дочитать мой комментарий до конца был адресован не вам.
ChALkeRx
10.06.2016 10:06Да-да, всё именно так.
Но отсылкой на конец того комментария вы как бы утверждаете, что падения вкладок вместе происходит в основном от ошибок в корневом процессе, но на самом деле обычно это просто группа вкладок (возможно с разных сайтов), которая была открыта в такой последовательности, что они все обрабатываются в одном процессе.
napa3um
10.06.2016 10:09Отсылкой на конец того комментария я как бы предлагаю вариант, по которому могут упасть вкладки, управляемые заведомо разными процессами.
ChALkeRx
10.06.2016 10:30Да-да. Но см. вопрос, на который вы отвечаете — там не было о «заведомо разных процессах».
Вопрос выглядел как
Это особенно заметно, когда в случае сбоя одновременно «падают» сразу несколько вкладок с разных сайтов.
А это обычно случается не из-за ошибки в управляющем процессе, а просто от того, что эти несколько вкладок с разных сайтов работали в одном процессе, поэтому и упали вместе.napa3um
10.06.2016 10:33Вам что-то ещё не понятно и мне нужно пояснить другие свои слова?
ChALkeRx
10.06.2016 10:40Мне как раз всё понятно, я вам пытаюсь объяснить, что вот этот ваш ответ был не совсем верен.
napa3um
10.06.2016 10:44Я вам объяснил, что он был верен и адресован не вам. Если объяснения вами не поняты, то, думаю, на этом стоит прекратить данную дискуссию, ни к чему хорошему она не приведёт.
correy
08.06.2016 15:48Почему Мозилла так упорно не хочет реализовывать принцип «процесс-на-вкладку»?
izzholtik
08.06.2016 16:53Почему, кстати, процесс, а не поток?
inoyakaigor
08.06.2016 17:39Поток упав может потянуть за собой весь процесс, а процессы назависимы от родителей
Saffron
08.06.2016 17:11Реализуй сам. Несложный скрипт и каждое новое окно мозиллы запускается отдельным процессом. Правда я не знаю, в чём тут профит, был один процесс на 2 гига памяти, станет десять по 400 мегабайт.
correy
08.06.2016 17:49-1Каждая вкладка живет своей жизнью, откуда вытекают плюсы по стабильности/безопасности. Спасибо за совет по реализации, но мой вопрос так и остался без ответа :D
encyclopedist
09.06.2016 00:07Мозилла то хочет, но не так просто это, занимает моного времени. Поэтому они идут маленькими шажками.
Saffron
09.06.2016 13:51Ну так это не её зона ответственности. Гораздо проще это решается на уровне оконного менеджера. Вкладки многие из них поддерживают самостоятельно. Хотя небольшой скриптик для интеграции не помешал бы, хотя бы в рамках примера и документации.
monah_tuk
09.06.2016 09:22Забавная картинка: со стороны серверов хотят уменьшать число процессов/потоков у сервера до числа физических ядер (плюс минус HT) и асинхронно процессить больше число запросов, подключений. И это даёт выигрыш в производительности. Для HTTP серверов это применимо в полной мере.
А вот со стороны тех, кто к ним подключается все хотят видеть всё в точности до наоборот :) Да, в одной вкладке может быть несколько подключений, но самих вкладок тоже может быть много.
По мне, так в мозилле раздражает именно тормоза GUI, если кто-то затормозил вкладку. Это можно вынести в отдельный процесс (собственно — уже). А вот вкладки было бы неплохо процессить на пуле воркеров. ИМХО.
BlessMaster
10.06.2016 02:35Сервер обрабатывает подключения тысячами — процессы становятся дорогими, при этом ради экономии из него вырезаются всякие ненужные свистелки — один процесс справляется с большим количеством однотипных задач с кешируемым результатом. На клиенте всё наоборот — одновременных соединений/работающих вкладок единицы, при этом каждая страница обвешана свистелками по самое дальше некуда. Плюс сейчас тенденция часть работы переносить с сервера на клиент.
monah_tuk
10.06.2016 06:53Да это понятно. Вообще проблема 10K (или уже 1M актуальна?) известная тема. Интересно посмотреть на развитие варианта Мозиллы: процесс на GUI, процесс (судя по всему пул процессов в перспективе) для страниц. Судя по всему они почти серверный вариант и собираются делать.
Меня лично в Мозилле раздражали(ют) только фризы GUI, фризы на реакцию при вводе текста на странице, падения от планинов. Второе починили, а вот падения вообще у меня случаются в год несколько раз, но по пальцам пересчитать можно — не слишком беспокоит.
Darth_Malok
09.06.2016 11:31+1День, когда это произойдёт, будет одним из грустнейших дней в моей жизни. Не таким грустным, когда убили оперу, конечно…
За полтора года, что я пользуюсь FF браузер не падал ни разу. Вкладок несколько сотен (правда выгружаются неиспользуемые). Лично для меня многопроцессность не добавит стабильности. Что там ещё из плюсов? Безопасность? Вынести все вкладки в один процесс, запускающийся в песочнице — будет достаточно безопасно.
Сейчас FF кушает свой гигабайт памяти и не раздражает меня кучей процессов в «диспетчере задач» в отличии от хромообразных.RavenStark
09.06.2016 16:33Полностью соглашусь. А возможность группирования вкладок, хотя и специфическая, очень помогает в работе с разными веб и сетевыми приложениями.
BlessMaster
10.06.2016 02:38Вы просто попробуйте включить многопроцессный режим — он давно уже доступен для тестирования. Проблемы с выжиранием памяти нет, вкладки также грузятся по необходимости, при этом отзывчивость — небо и земля с тем, что без него. Падений так же не наблюдается.
Alexey2005
10.06.2016 12:17Главный плюс здесь — скорость. С момента обновления на FF 46.0.1 включил этот многопроцессный режим и с тех пор не выключаю, т.к. теперь вкладки наконец перестали тормозить UI.
Раньше стоило лишь загрузить что-то громоздкое, как весь UI начинал еле ворочаться. Например, панель управления MS Azure не позволяла браузеру работать с чем-то ещё — если уж она открыта, скроллинг тормозил на всех вкладках.
Или вот Skype for Web, сравните его поведение в Chrome и FF без этой фичи. Во втором случае невозможно же пользоваться: начинает казаться, что они мне в браузер полный эмулятор .NET framework, написанный на JS, подгружают. А ведь мессенджер — это такая вещь, которая всегда должна быть открытой. И значит, браузер будет тормозить на постоянной основе, во всех вкладках.
Вот поэтому и нужно разделение, чтоб тяжёлые вкладки висели отдельно и не мешали всему остальному, включая UI.
hdfan2
09.06.2016 15:55Потому что разработчики расширений уже заточились (не знаю точно, каким образом) на однопроцессность. Поэтому и включают пока только у тех, кто расширений не использует.
DrPass
09.06.2016 16:29Не знаю, но это один из нюансов, из-за которого я пользуюсь именно Мозиллой, а не Хромом. Это более эффективно, чем многопроцессность, список задач не загажен десятками клонов хрома, а гипотетический вопрос стабильности («падение одной страницы кладёт весь броузер»), честно говоря, я уже и не помню, когда мне досаждал. Последний раз не в этом году, уж точно.
vvadzim
10.06.2016 13:21Конкретно у меня однопроцессная мозилла справляется с тучей вкладок значительно легче, чем хром.
Так что для кого-то процесс-на-вкладку может быть и киллер-фича, но для например меня это минус.
Я бы предпочёл настраиваемое поведение, и для себя иметь возможность запускать все вкладки в одном процессе.
ffs
09.06.2016 12:47+1Тестировал на домашнем компьютере (i5-4670, 8гигов оперативки и ssd) этот электролиз, для меня особо ничего не изменилось, весь браузер так и вешается при тормозе из вкладки (к примеру при открытии twitch стрима в новой).
dartraiden
Новый режим будет включён в состав Firefox 48 и активирован по умолчанию для тестирования у примерно 1% пользователей, не использующих дополнения. В сентябрьском выпуске Firefox 49 планируется включить многопроцессный режим для всех пользователей, которые не используют дополнения.
https://www.opennet.ru/opennews/art.shtml?num=44564
istui
будет опция для включения?
dartraiden
browser.tabs.remote.autostart = true
dom.ipc.processCount = равным кол-ву ядер или больше
extensions.e10sBlockedByAddons = false
Статус можно посмотртеть в about:support > «Многопроцессные окна»
dartraiden
extensions.e10sBlockedByAddons сбрасывается при перезапуске браузера, поэтому имеет смысл загнать его в user.js, откуда он будет подхватываться автоматически.
Morozov
https://wiki.mozilla.org/Electrolysis#Enabling_and_Disabling_Electrolysis_on_Beta
Just go to about:config and toggle browser.tabs.remote.autostart to true. On your next restart, e10s should be active. To verify that it is active, go to about:support and look for a number higher than 0 in «Multiprocess Windows».
Если используются расширения, то — you can create and set to true a pref called browser.tabs.remote.force-enable.
Morozov
Еще была статья на Хабре «Многопроцессный Firefox 44.b, оптимизация Electrolysis» https://habrahabr.ru/post/276321/