Авторы веб-браузера Mozilla Firefox выпустили в бету 48-ю версию веб-браузера (Windows), в которой пользователей ожидает важная особенность. Веб-браузер наконец-то получил возможность разделения процессов по умолчанию. Такое событие является весьма существенным для пользователей Firefox, поскольку, ранее веб-браузер выполнял всю свою работу в одном процессе. На этом фоне он выглядел довольно бледно по сравнению со своими конкурентами MS Edge, Google Chrome, а также MS IE11. Кроме этого, отсутствие данной функции ограничивало возможности создания полноценного sandbox, а также сказывалось на стабильности работы.



Правда, пока речь не идет о разделении процесс-на-вкладку, а подразумевается разделение работы веб-браузера на основе двух процессов. Первый отвечает за работу с пользовательским интерфейсом 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)


  1. dartraiden
    08.06.2016 14:47
    +3

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

    https://www.opennet.ru/opennews/art.shtml?num=44564


    1. istui
      08.06.2016 15:05

      будет опция для включения?


      1. dartraiden
        08.06.2016 15:29
        +1

        browser.tabs.remote.autostart = true
        dom.ipc.processCount = равным кол-ву ядер или больше
        extensions.e10sBlockedByAddons = false

        Статус можно посмотртеть в about:support > «Многопроцессные окна»


        1. dartraiden
          08.06.2016 15:33

          extensions.e10sBlockedByAddons сбрасывается при перезапуске браузера, поэтому имеет смысл загнать его в user.js, откуда он будет подхватываться автоматически.


      1. Morozov
        08.06.2016 15:30

        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.


        1. Morozov
          08.06.2016 15:33

          Еще была статья на Хабре «Многопроцессный Firefox 44.b, оптимизация Electrolysis» https://habrahabr.ru/post/276321/


  1. ChALkeRx
    08.06.2016 14:52

    речь не идет о разделении процесс-на-вкладку


    К слову, в Chrome/Chromium не совсем «процесс-на-вкладку» — вкладки группируются, один процесс обрабатывает несколько вкладок. Причём часто — не связанные между собой сайты. Это можно увидеть в диспетчере задач браузера, или когда несколько вкладок падают одновременно из-за проблем на одной из них.

    Как в Edge — не могу сказать.


    1. napa3um
      08.06.2016 15:30

      Порождённые вкладки (и всякие всплывающие окошки) одного домена предполагают возможность управления ими из «родительской» вкладки (даже если эта возможность не используется), потому они все обрабатываются в рамках одного процесса. В остальных случаях всегда используется отдельный процесс на каждую вкладку. Не связанные между собой сайты, обрабатываемые в разных процессах, всё равно могут упасть одновременно (при ошибке в корневом процессе браузера, управляющего коммуникацией песочниц с GUI).


      1. ChALkeRx
        08.06.2016 15:37

        Хм. Спасибо.

        одного домена


        Вы в этом моменте уверены? Во-первых, у меня группируются вкладки с разных доменов.
        Во-вторых, см. https://habrahabr.ru/post/282880/.


        1. ChALkeRx
          08.06.2016 15:46

          Картинка, на всякий случай:



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


          Например, только что открыл Google, набрал в поиске слово «пример», понажимал средней кнопкой на первые пять ссылок — они все оказались в одном процессе.


      1. BlessMaster
        09.06.2016 04:13

        Это особенно заметно, когда в случае сбоя одновременно «падают» сразу несколько вкладок с разных сайтов.


        1. napa3um
          09.06.2016 05:57

          Дочитайте окончание комментария.


          1. BlessMaster
            10.06.2016 02:27

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


            1. napa3um
              10.06.2016 08:37

              Чуть внимательнее, ровно последнее предложение.


          1. ChALkeRx
            10.06.2016 09:49

            См. скриншот выше и пример воспроизведения.

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


            При этом упадёт всё целиком, скорее всего — и таких ошибок я не видел что-то, емнип.
            А вот падающую группу вкладок (которые работали в одном процессе) — вполне.


            1. napa3um
              10.06.2016 09:52

              Ваш ответ понятен, вы дополнили тот факт, что «с одного домена» — не слишком точное утверждение, что вкладка, порождённая из одного домена, может уже успеть «уйти» на другой домен. Совет дочитать мой комментарий до конца был адресован не вам.


              1. ChALkeRx
                10.06.2016 10:06

                Да-да, всё именно так.


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


                1. napa3um
                  10.06.2016 10:09

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


                  1. ChALkeRx
                    10.06.2016 10:30

                    Да-да. Но см. вопрос, на который вы отвечаете — там не было о «заведомо разных процессах».
                    Вопрос выглядел как

                    Это особенно заметно, когда в случае сбоя одновременно «падают» сразу несколько вкладок с разных сайтов.


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


                    1. napa3um
                      10.06.2016 10:33

                      Вам что-то ещё не понятно и мне нужно пояснить другие свои слова?


                      1. ChALkeRx
                        10.06.2016 10:40

                        Мне как раз всё понятно, я вам пытаюсь объяснить, что вот этот ваш ответ был не совсем верен.


                        1. napa3um
                          10.06.2016 10:44

                          Я вам объяснил, что он был верен и адресован не вам. Если объяснения вами не поняты, то, думаю, на этом стоит прекратить данную дискуссию, ни к чему хорошему она не приведёт.


  1. correy
    08.06.2016 15:48

    Почему Мозилла так упорно не хочет реализовывать принцип «процесс-на-вкладку»?


    1. izzholtik
      08.06.2016 16:53

      Почему, кстати, процесс, а не поток?


      1. inoyakaigor
        08.06.2016 17:39

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


        1. izzholtik
          15.06.2016 11:19

          Часто у вас потоки падают?


    1. Saffron
      08.06.2016 17:11

      Реализуй сам. Несложный скрипт и каждое новое окно мозиллы запускается отдельным процессом. Правда я не знаю, в чём тут профит, был один процесс на 2 гига памяти, станет десять по 400 мегабайт.


      1. correy
        08.06.2016 17:49
        -1

        Каждая вкладка живет своей жизнью, откуда вытекают плюсы по стабильности/безопасности. Спасибо за совет по реализации, но мой вопрос так и остался без ответа :D


        1. encyclopedist
          09.06.2016 00:07

          Мозилла то хочет, но не так просто это, занимает моного времени. Поэтому они идут маленькими шажками.


          1. correy
            09.06.2016 13:07
            -3

            Тут даже вопрос, почему все уже давно пришли, а Мозилла все еще идет…


        1. Saffron
          09.06.2016 13:51

          Ну так это не её зона ответственности. Гораздо проще это решается на уровне оконного менеджера. Вкладки многие из них поддерживают самостоятельно. Хотя небольшой скриптик для интеграции не помешал бы, хотя бы в рамках примера и документации.


    1. monah_tuk
      09.06.2016 09:22

      Забавная картинка: со стороны серверов хотят уменьшать число процессов/потоков у сервера до числа физических ядер (плюс минус HT) и асинхронно процессить больше число запросов, подключений. И это даёт выигрыш в производительности. Для HTTP серверов это применимо в полной мере.


      А вот со стороны тех, кто к ним подключается все хотят видеть всё в точности до наоборот :) Да, в одной вкладке может быть несколько подключений, но самих вкладок тоже может быть много.


      По мне, так в мозилле раздражает именно тормоза GUI, если кто-то затормозил вкладку. Это можно вынести в отдельный процесс (собственно — уже). А вот вкладки было бы неплохо процессить на пуле воркеров. ИМХО.


      1. BlessMaster
        10.06.2016 02:35

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


        1. monah_tuk
          10.06.2016 06:53

          Да это понятно. Вообще проблема 10K (или уже 1M актуальна?) известная тема. Интересно посмотреть на развитие варианта Мозиллы: процесс на GUI, процесс (судя по всему пул процессов в перспективе) для страниц. Судя по всему они почти серверный вариант и собираются делать.


          Меня лично в Мозилле раздражали(ют) только фризы GUI, фризы на реакцию при вводе текста на странице, падения от планинов. Второе починили, а вот падения вообще у меня случаются в год несколько раз, но по пальцам пересчитать можно — не слишком беспокоит.


    1. Darth_Malok
      09.06.2016 11:31
      +1

      День, когда это произойдёт, будет одним из грустнейших дней в моей жизни. Не таким грустным, когда убили оперу, конечно…

      За полтора года, что я пользуюсь FF браузер не падал ни разу. Вкладок несколько сотен (правда выгружаются неиспользуемые). Лично для меня многопроцессность не добавит стабильности. Что там ещё из плюсов? Безопасность? Вынести все вкладки в один процесс, запускающийся в песочнице — будет достаточно безопасно.

      Сейчас FF кушает свой гигабайт памяти и не раздражает меня кучей процессов в «диспетчере задач» в отличии от хромообразных.


      1. RavenStark
        09.06.2016 16:33

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


      1. BlessMaster
        10.06.2016 02:38

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


      1. Alexey2005
        10.06.2016 12:17

        Главный плюс здесь — скорость. С момента обновления на FF 46.0.1 включил этот многопроцессный режим и с тех пор не выключаю, т.к. теперь вкладки наконец перестали тормозить UI.
        Раньше стоило лишь загрузить что-то громоздкое, как весь UI начинал еле ворочаться. Например, панель управления MS Azure не позволяла браузеру работать с чем-то ещё — если уж она открыта, скроллинг тормозил на всех вкладках.
        Или вот Skype for Web, сравните его поведение в Chrome и FF без этой фичи. Во втором случае невозможно же пользоваться: начинает казаться, что они мне в браузер полный эмулятор .NET framework, написанный на JS, подгружают. А ведь мессенджер — это такая вещь, которая всегда должна быть открытой. И значит, браузер будет тормозить на постоянной основе, во всех вкладках.
        Вот поэтому и нужно разделение, чтоб тяжёлые вкладки висели отдельно и не мешали всему остальному, включая UI.


    1. hdfan2
      09.06.2016 15:55

      Потому что разработчики расширений уже заточились (не знаю точно, каким образом) на однопроцессность. Поэтому и включают пока только у тех, кто расширений не использует.


    1. DrPass
      09.06.2016 16:29

      Не знаю, но это один из нюансов, из-за которого я пользуюсь именно Мозиллой, а не Хромом. Это более эффективно, чем многопроцессность, список задач не загажен десятками клонов хрома, а гипотетический вопрос стабильности («падение одной страницы кладёт весь броузер»), честно говоря, я уже и не помню, когда мне досаждал. Последний раз не в этом году, уж точно.


    1. vvadzim
      10.06.2016 13:21

      Конкретно у меня однопроцессная мозилла справляется с тучей вкладок значительно легче, чем хром.
      Так что для кого-то процесс-на-вкладку может быть и киллер-фича, но для например меня это минус.
      Я бы предпочёл настраиваемое поведение, и для себя иметь возможность запускать все вкладки в одном процессе.


  1. dmitry_ch
    09.06.2016 10:36
    +3

    > Electrolysis

    Я понимаю, что «Электролиз», но прочитал поначала как электролис. И подумал, что такое название очень подходит к идее )


    1. hdfan2
      09.06.2016 15:55

      Э8с.


  1. ffs
    09.06.2016 12:47
    +1

    Тестировал на домашнем компьютере (i5-4670, 8гигов оперативки и ssd) этот электролиз, для меня особо ничего не изменилось, весь браузер так и вешается при тормозе из вкладки (к примеру при открытии twitch стрима в новой).