Мультипроцесорний Firefox 44.b, оптимізація Electrolysis

Так вже склалося, що Firefox використовує однопроцесорних модель і реальність така, що такий підхід з урахуванням динаміки розвитку мережі та часткової зв'язки з XUL викликає, м'яко кажучи, багато незручностей. Один процес повинен обробляти декілька потоків, що дуже сильно позначається на продуктивності браузера в цілому. Чуйність Firefox залишала бажати кращого, коли той же Google Chrome чудово рендерил важкі сторінки, що ніяк не позначалося на продуктивності інших вкладок.

Таке становище змушувало багатьох переходити на хром, а хто не хотів — шукав шляхи рішення у вигляді різного роду оптимізацій, які за великим рахунком через нелогічного підходу розподілу потоків або банального бажання настрочити щось у блог просто погіршували ситуацію. Тепер один процес повинен був не просто працювати, а дуже швидко працювати! В кінцевому підсумку і розробники самі чудово розуміли, що одна справа — мало пам'яті, інша — низька швидкість роботи, яка в основному виправдана старими зв'язками з XUL. На ділі: відкриваємо в Firefox декілька вкладок відразу, скролим їх і в момент завантаження бачимо, що все гальмує — ні про яке плавному серфінгу мови бути не могло.

«Мозілла» розпочала проект Electrolysis для адаптації движка «Гекко» до використання декількох процесів. Що змушує «Мозиллу» перемикатися на подібну модель побудови свого браузера? В першу чергу, це продуктивність і чуйність. Основною метою є зменшення підвисання (jank), що проявляється при стандартних операції — завантаження особливо великої сторінки, наборі тексту у веб-формі або прокручування перевантаженою елементами сторінки.

Пропоную скористатися новими функціями багатопроцесорної моделі (на жаль, за замовчуванням вони відключені, так як ще в розробці). Всі функції перевірені самим автором, і їх значення підібрані для максимально швидкої і стабільної роботи. Основний упор зроблений на продуктивність і чуйність Firefox в умовах агресивного серфінгу. Споживання пам'яті в порівнянні з однопроцесорним режимом має зрости десь на 12%-17% з урахуванням форсованого використання апаратного прискорення, а без нього не більше, ніж на 10%.

Так як проект тільки розвивається і не є повністю стабільним, редагуйте в новому профілі а потім порівняйте результат. Посилатися на свої результати вважаю недоречним, з-за вогкості проекту. Результати просто-напросто можуть відрізнятися кардинально.

Оптимізація

Застосовується на всіх версіях вище 44beta

Правимо about:config:

browser.tabs.remote.autostart — true (включити багатопроцесорність для вкладок)
layers.async-pan-zoom.enabled — true
dom.ipc.plugins.asyncInit — true (асинхронність плагінів)
javascript.options.asyncstack;true
layers.acceleration.force-enabled = true (відключити при проблемах з відео)
network.http.max-connections = 512
network.http.pipelining = true
network.http.pipelining.aggressive = true
network.http.pipelining.max-optimistic-requests = 32
network.http.pipelining.maxrequests = 96
network.http.pipelining.maxsize = 600000
network.http.pipelining.ssl = true
network.http.proxy.pipelining = true
browser.cache.use_new_backend — 1 (нова система кешування)
memory.free_dirty_pages — true
browser.tabs.animate = false
image.cache.timeweight = 100
browser.display.show_image_placeholders — false
nglayout.initialpaint.delay;0 (створити ціле)
browser.display.auto_quality_min_font_size — (-1)

Прибрати рамку обводящую посилання під час кліку:

browser.display.focus_ring_on_anything (Логічне) = false
browser.display.focus_ring_width (Ціле) = 0

Захист

network.dns.disableIPv6 — false
network.dns.disablePrefetch — true
network.predictor.enabled — false
network.predictor.cleaned-up — true
network.prefetch-next — false
browser.send_pings — false
network.http.speculative-parallel-limit — 0 (нуль)
privacy.trackingprotection.enabled;true (захист від жучків)
browser.safebrowsing.enabled;false
browser.safebrowsing.malware.enabled;false
datareporting.healthreport.service.enabled;false
browser.safebrowsing.downloads.remote.enabled;false
extensions.blocklist.enabled — false
extensions.getAddons.cache.enabled — false
browser.chrome.toolbar_tips — false
media.video_stats.enabled — false
dom.battery.enabled — false
media.peerconnection.enabled=false

Пристрою

dom.gamepad.enabled;false
dom.vr.oculus.enabled;false
dom.vibrator.enabled

Відключити Hello

loop.enabled;false

Реклама і снипеты Firefox

browser.newtabpage.directory.ping — залишити порожній рядок
browser.newtabpage.directory.source — залишити порожній рядок
browser.aboutHomeSnippets.updateUrl — залишити порожній рядок

Тепер якість роботи підвищитися в рази. Удачі.

Джерело: Хабрахабр
  • avatar
  • 0

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.