Статьи

Прискорення і настройка Chromium / Chrome / яндекс.браузер / Vivaldi на Linux

У цій статті розглянемо, як вичавити всі соки з хромиум і максимально прискорити його або інший браузер на його движку (Chromium, Google Chrome, Opera, Vivaldi, Яндекс і ін.). За рахунок включення багатьох експериментальних можливостей по винесу обчислень з процесора на відеокарту і включення використання знаходяться в розробці програмних алгоритмів. За рахунок цього наш улюблений хромиум стане працювати швидше, може перестати гальмувати або моргати екраном.

Поїхали!

Як зробити резервну копію всього профілю браузера (настройки, історія. Закладки та ін.), Написано в кінці статті.

Заходимо за адресою chrome: // gpu (Так, саме так наберіть в адресному рядку або скопіпастьте)!
Заходимо за адресою   chrome: // gpu   (Так, саме так наберіть в адресному рядку або скопіпастьте)
Як бачите, у мене скрізь зелена напис «Hardware accelerated», що говорить, що дана функція використовує апаратне прискорення за рахунок виносу обчислень на відеокарту, а «Enabled» говорить, що програмний алгоритм включений.

Тепер зайдіть в chrome: // flags .Тут і будемо виробляти б о більшу частину настройки.
Тепер зайдіть в   chrome: // flags
На скріншоті червоним прямокутників виділив # ignore-gpu-blacklist. Далі все опції з цього списку буду називати саме ось так. Можна натиснути Ctrl + F і знайти настройку по її скопіпащенному назвою.

Тепер у нас відкриті і chrome: // gpu, і chrome: // flags. Дивимося, які параметри є в chrome: // gpu, і, якщо параметр не зелений, а жовтий або червоний, в chrome: // flags змінюємо відповідну настройку. Обережно, деякі настройки можуть зробити роботу браузера нестабільною, залежить від заліза.

Canvas - апаратне прискорення відтворення кинувся
У chrome: // flags це # ignore-gpu-blacklist
Вимкнути ючается включенням опції # disable-accelerated-2d-canvas

CheckerImaging - суть в тому, що растеризация картинки прибрана з залежності від растеризации решти населених пунктів області, з якою пов'язана картинка, що дозволяє малювати веб-сторінку, не чекаючи закінчення обробки картинки, як-то так. Кажуть, сайт Юлмарт починає отрісовиваться набагато швидше.
Це параметр командного рядка --enable-features = "CheckerImaging", докладніше нижче.

Flash, Flash Stage3D, Flash Stage3D, Flash Stage3D Baseline profile - апаратне прискорення декодування флеш-контенту
Теж # ignore-gpu-blacklist

Compositing - апаратне прискорення накладення шарів
Швидше за все, теж # ignore-gpu-blacklist, я не зустрічав, щоб це було не працювало (було зеленим) «з коробки».

Multiple Raster Threads - розпаралелювання на кілька потоків процесу растеризации векторних елементів веб-сторінки
# enable-gpu-rasterization -> Force-enabled for all layers / Примусово для всіх верств.
Включення цієї опції також може допомогти, якщо у вас моргає екран при перегляді сайтів, в т.ч. вконтакте, і відео.

Native GpuMemoryBuffers - виключається додатковий буфер при копіюванні елементів між CPU і GPU, за замовчуванням вимкнено, чому - докладно написано по посиланню.
Це параметр командного рядка --enable-native-gpu-memory-buffers, докладніше нижче.

Rasterization - застосування відеокарти для растеризації
# enable-gpu-rasterization

Video Decode - апаратне прискорення декодування відео (при перегляді відео декодується)
Video Encode - аналогічно кодування
Входить в # ignore-gpu-blacklist

WebGL, WebGL2 - підтримка рендеринга на відеокарті набору інструкцій OpenGL, що входять в стандарт WebGL; автоматично вимикається, якщо драйвер відеокарти їх не підтримує.
Входить в # ignore-gpu-blacklist

Ще є опція # enable-zero-copy, вище приведена посилання на статтю інженерів Intel, які розробляли цю функцію (судячи з скріншотів і вступу в статті, розробка відбувається на Ubuntu, але комерційно вигідна в першу чергу через Chrome OS). Є підозра, що її робота буде дуже специфічна для конкретного заліза.

# enable-tcp-fast-open - TCP Fast Open , Прискорює роботу мережевого стека, фіча ядра Linux, на Windows і MacOS недоступно, віндузятнігі смокчуть нічого не підозрюючи насолоджуються збитковістю своєї операційної системи, яблучники від них не сильно відстають (не сприймайте близько до серця, це жарт).

# expensive-background-timer-throttling - обмежує максимальне навантаження на процесор фоновими вкладками (тобто не та вкладка, з якої ви зараз працюєте) до максимум 1%. Далеко не завжди доречно. Раптом у вас в фоновій вкладці запущена торгівля на біржі 🙂

# v8-cache-options - наприклад, в режимі «Cache V8 compiler data» V8 буде краще кешувати javascript і не компілювати їх заново. Знову ж. на деяких складних веб-додатках в теорії може викликати проблеми. V8 - це движок обробки (в т.ч. компіляції) яваскрипт в Chromium, а компіляція javascript створює основне навантаження на процесор при роботі браузера.

# v8-cache-strategies-for-cache-storage - можна включити агресивний кеш V8, мова про кеші в попередньому абзаці, можливе наслідки ті ж.

# shared-array-buffer - експериментальні функції роботи з пам'яттю в javascript, докладне пояснення тут .

# enable-simple-cache-backend -> Enabled / Включено - замість реалізації своєї подоби файлової системи в блоковому файлі для кеша, працюємо з файлами безпосередньо всередині файлової системи, покладаючи велику частину роботи на операційну систему і зменшуючи навантаження на введення-виведення з диска , в т.ч. зменшуємо кількість перемикань контексту, що має прискорити роботу.

Тепер про опції командного рядка Chromium і Google Chrome. Теоретично, всякі інші поділитися браузери на движку Сhromium повинні їх підтримувати, але гарантії немає.
Закриваємо всі відкриті копії Chromium, відкриваємо термінал і виконуємо ось таку команду:

$ Chromium-browser --enable-native-gpu-memory-buffers --enable-features = "CheckerImaging"

У chrome: // gpu бачимо, як стали зеленими пункти CheckerImaging і Native GpuMemoryBuffers (або браузер взагалі не запустився 🙂) Але ж кожен раз запускати браузер через термінал незручно, тому відкриваємо графічний редактор desktop-файлів і в ньому дописуємо в команду запуску браузера потрібні нам параметри (зверніть увагу, що на кінці є% U, воно замінюється на посилання або шлях до файлу, який потрібно відкрити, так що його не потрібно видаляти. В KDE це kmenuedit (виклик або через термінал командою kmenuedit, або підвести курсор до кнопки виклику меню додатків і натиснути на праву кнопку миші 1 раз, потім лівої 1 раз натиснути на «Редактор меню» в списку), на інших DE (XFCE, GNOME, Budgie, LXDE, LXQt і ін.) це menulibre.
У chrome: // gpu бачимо, як стали зеленими пункти CheckerImaging і Native GpuMemoryBuffers (або браузер взагалі не запустився 🙂) Але ж кожен раз запускати браузер через термінал незручно, тому відкриваємо графічний редактор   desktop-файлів   і в ньому дописуємо в команду запуску браузера потрібні нам параметри (зверніть увагу, що на кінці є% U, воно замінюється на посилання або шлях до файлу, який потрібно відкрити, так що його не потрібно видаляти


Тру-уніксоіди можуть скопіювати /usr/share/applications/chromium-browser.desktop в ~ / .local / share / applications / chromium-browser.desktop і відредагувати параметр Exec, вийде те ж саме:

Залежно від DE, вам може знадобитися повторно винести ярлик на робочий стіл і / або панелі.

Як виміряти швидкість роботи браузера, зрозуміти, які опції на вашому поєднанні заліза і відеодрайвера прискорюють роботу, а які уповільнюють?
Для цього запускайте онлайн бенчмарк web.basemark.com з різними поєднаннями налаштувань і порівнюйте кількість набраних папуг балів.

У chrome: // gpu браузер може мамою клястися, що включено апаратне прискорення декодування відео. Але ж не кожне відео буде декодувати апаратно!
Відкриваємо chrome: // media-internals /, паралельно запускаємо програвання якогось відео з Youtube і дивимося, яким кодеком воно декодується.
У chrome: // gpu браузер може мамою клястися, що включено апаратне прискорення декодування відео
Зараз Google все відео віддає в кодеку VP9 власної розробки, але на досить багатьох старих відкритих можливо апаратне декодування тільки H.264; розширення h264ify змусить браузер повідомляти, що він не підтримує кодеки VP8 і VP9, ​​що змусить Youtube віддавати відео в H.264. Див. youtube.com/html5
За замовчуванням так:

З включеним h264ify на його стандартних настройках:

Взагалі немає єдиного нормального списку, які драйвери і на яких відкритих підтримують апаратне декодування, але ось Chromium 62 з'явиться повноцінна робота VA-API (API для апаратного прискорення кодування і декодування відео), яка була і раніше, але тільки на ChromeOS, а, наприклад, тут , Хромиум збирали і збирають з патчем, який включає це і на Лінуксі. Для роботи рекомендується свіжа версія libva; якщо у вас, наприклад, Ubuntu 16.04, то можна оновити весь графічний стек звідси , Що рекомендується користувачам сучасних і не дуже відеокарт Intel і AMD, тому що в наші дні опенсорсний графічний стек розвивається дуже швидко, а ми в статті задіяли безліч функцій роботи з відеокартою. Розробники Ubuntu 17.10 працювали над поліпшенням роботи VA-API з коробки. Взагалі, з програванням відео на Лінукс ніколи не зустрічав проблем, все добре працює з коробки. Для Firefox було доповнення , Яке дозволяло ролик з Youtube програвати в зовнішньому плеєрі mpv, що на дуже старих машинах могло істотно знижувати навантаження на процесор.

- Памагите !! Браузер перестав запускатися !!!
- Таке буває дуже рідко, але все ж іноді трапляється, коли налаштування роботи з відеокартою викручуються так, що у браузера не виходить з нею працювати. Відкриваємо в файловому менеджері папку ~ / .config (~ - це ваша домашня папка) і знаходимо папку chromium (для Google Chrome вона називається google-chrome, Vivaldi - Vivaldi і т.д.).
- Памагите
У ній зберігається наш профіль. Можна просто перейменувати папку, наприклад, в chromium.old, а при наступному запуску chromium створить її заново і почне з чистого аркуша. В якості резервної копії (бекапа) рекомендую до проведення всіх маніпуляцій заархівувати цю папку (і зберігати, як зіницю ока). Якщо ви щось поламали, а починати з чистого профілю не хочеться, то спробуйте відкрити термінал всередині ~ / .config / chromium і виконати команду:

$ Grep -inHr "ignore-gpu-blacklist"

де замість ignore-gpu-blacklist підставте назву опції, яка, як ви думаєте, з тала причиною неполадок. У відповідь команда grep видасть шлях до файлу і номер рядка, де є шанс поправити настройку. Можливо, частина налаштувань зберігається в SQLite базі даних, і тоді буде потрібно якась програма для роботи з SQLite-БД та пошуку по ним. Чесно кажучи, жодного разу не пробував так робити.
де замість ignore-gpu-blacklist підставте назву опції, яка, як ви думаєте, з тала причиною неполадок

За сім отчаливаю, спасибі за увагу, чекаю відгуків і питань в коментарях.

Новости