LINUX.ORG.RU

firefox-esr с mozilla.org и из debian - разный fps

 , ,


0

2

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

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

Собственно фпс сравнивал в игре https://orteil.dashnet.org/cookieclicker/ - в мозилловском пакете там всё плавно и хорошо, в дебановском дёрганая картинка уже на стадии загрузки (когда крутятся шарики посередине экрана, эту стадию можно искуcственно удлинить если залагать себе инет - зафайрволить что-нить нужное ему в DROP).

А вы что-нить такое замечали? С чем это связано?

Оба фф запускал в новом чистом профиле (одном и том же).

Из заметной разницы (кроме фпс) - в мозилловском пакете нет звука т.к. он только пульсу ищет которой нет.

------------------

Профайлер deb: https://ibb.co/jHqYXxB

Профайлер moz: https://ibb.co/5c4mt5X

Видно что рендер запускается где-то раз в 300мс и грузит проц больше чем рендер в mozilla-пакете. А само 300мс берется из того что сама вкладка этим 300мс перед эти тоже грузит проц, а в moz-пакете гораздо меньше.

Зелёное в Render это в основном RenderThread::UpdateAndRender (во вкладке Marker Table эти пики называются «Composite #1»)

Синее в работе вкладки это «CanvasRenderingContext2D.drawImage»

По этому названию нашёл обсуждение но не знаю насколько оно связано - там про дебиан ничего не говорят.

upd: кажется не связано, ввёл в консоли CanvasRenderingContext2D.prototype.clip = function() { }; и ничего не поменялось в плане скорости

Ввёл CanvasRenderingContext2D.prototype.drawImage = function() {};, после этого затраты на эту функцию в проце вкладки исчезли (как и соответствующие картинки на странице), а вот процесс render всё так же продолжает лагать и тратит по 100мс на одну итерацию (даже увеличилось - до этого тратила около 95мс). В мозилловском пакете же 10-20мс.

------------------

Компактный пример для воспроизведения проблемы: firefox-esr с mozilla.org и из debian - разный fps (комментарий)

Как оказалось, js ни при чём, в примере его вообще нет. Но проблема как-то побочно задевает js тоже (а конкретно функцию CanvasRenderingContext2D.prototype.drawImage - она начинает в этих условиях работать в разы медленнее). В приведённом же примере js нет и лаги видны только в RenderThread::UpdateAndRender (это внутренняя функция в исходниках фф как я понял).

--------------------

Сравнение about:buildconfig firefox-esr с mozilla.org и из debian - разный fps (комментарий)

--------------------

Обновление: firefox-esr с mozilla.org и из debian - разный fps (комментарий)

★★★★★

Последнее исправление: firkax (всего исправлений: 19)

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

alex1101
()

скачай исходники, да посмотри… из «вьетнамских кэшбэков» - дебиановцы крафтили свои собственные дефолты для настроек. Хотя, я скачал 115, там, вроде, пусто в этом месте.

Изучай )

aol ★★★★★
()

Помнится, mozilla во всеуслышание заявила, что перешла на сборку с clang.

Так же, можно проверить использованные инструкции при сборке бинарника с analyze-x86. Учитывая, что речь о дебиане, там может быть что-то совершенно древнее. )

krasnh ★★★
()
Последнее исправление: krasnh (всего исправлений: 1)
Ответ на: комментарий от firkax

С офсайта не работает звук.

Всё работает. Мейнтейнеры debian собирают с поддержкой ALSA, а Mozilla - с Pulse.

И вообще хочется выяснить в чём проблема и исправить а не закрывать на неё глаза.

Читать документацию. Ради приватности были переработаны настройки и подобраны ключи сборки. Плюс никто не знает что и как ты стаил на своей системе. 102 версия была переходной по поддержке VAAPI. если твоя установка системы не имеет либы для VAAPI FF дебиана, то имеешь, что имеешь. Ванильная сборка работала иногда лучше. Но тут как повезёт. Иногда лучше было вырубать Webrender native и орисовывать CPU.

anonymous
()
Ответ на: комментарий от anonymous

Всё работает. Мейнтейнеры debian собирают с поддержкой ALSA, а Mozilla - с Pulse.

Нет поддержки линукс-звука (ALSA) это и значит не работает звук.

Плюс никто не знает что и как ты стаил на своей системе

Способов поставить тарболл примерно один-два.

102 версия была переходной по поддержке VAAPI.

VAAPI тут ни при чём, я же написал проблема судя по всему тянется с версий около 30 а то и раньше. И да у меня NVidia так что никаких VAAPI вообще.

если твоя установка системы не имеет либы для VAAPI FF дебиана

Этим занимается пакетный менеджер.

firkax ★★★★★
() автор топика
Ответ на: комментарий от firkax

Нет поддержки линукс-звука (ALSA) это и значит не работает звук.

А apulse не решает проблему? Или «нет спасибо, но костылями не пользуемся»? )

krasnh ★★★
()
Последнее исправление: krasnh (всего исправлений: 1)
Ответ на: комментарий от firkax

Не про звук, да. Но на предложение в комментах, использовать «официальный» firefox, был ответ про неработающий звук, и уже потом, про желание выяснить причину fps.
firefox-esr с mozilla.org и из debian - разный fps (комментарий)

Так что, это я не сам придумал, и типа захламляю тут тему, мешая провести научные изыскания. )

krasnh ★★★
()
Последнее исправление: krasnh (всего исправлений: 2)

А вы что-нить такое замечали? С чем это связано?

как сажусь за дебиан (по работе) постоянно ужасно бесит тормозной терминал, я просто вижу как MC перерисовывается, и это уже больше 10 лет ничего не меняется…

поэтому с firefox точно также не удивлен. Там давно на это забили болт.

anonymous2 ★★★★★
()
Последнее исправление: anonymous2 (всего исправлений: 2)
Ответ на: комментарий от anonymous2

как сажусь за дебиан (по работе) постоянно ужасно бесит тормозной терминал

Попробуй графический эмулятор терминала: GNOME Terminal, Xfce Terminal, любой на VTE. TTY в 2024-м — такое себе.

anonymous
()
Ответ на: комментарий от anonymous
$ ldd /usr/lib/firefox/libxul.so | grep asound
	libasound.so.2 => /usr/lib/x86_64-linux-gnu/libasound.so.2 (0x00007f515ae2c000)

У меня есть звук без pulseaudio/apulse.

Но когда-то, помнится, действительно были проблемы. Приходилось pulseaudio вручную запускать, потом по ctrl+c останавливать. И с apulse что-то экспериментировал, там с правами песочницы была заморочка.

gag ★★★★★
()
Ответ на: комментарий от gag

Ага, похоже, что поддержка ALSA сама по себе (снова?) есть в апстриме, просто не включена по умолчанию.

Приходилось pulseaudio вручную запускать, потом по ctrl+c останавливать

Ты, должно быть, и в игры не играешь? Вот там без PA часто ловить нечего. Хотя была одна игра, где не было звука с PulseAudio, потому что мало того, что настроили вывод через ALSA (движок Unity), но и захардкодили устройство hw:0,0 — думаю, от такого могло бы пригореть даже у самых суровых ALSA-фанатов.

anonymous
()

html/css для воспроизведения проблемы (скорее всего почти все оставшиеся css тоже не влияют, но там муторно их по одному выяснять). js, как оказалось, полностью ни при чём

Что точно влияет:

1) если убрать style='font-size:28px;text-shadow:0px 1px 4px #000' - лаги исчезают

2) если убрать id="loader" и id="loading" - лаги тоже исчезают

3) если убрать только id="loader" - лаги почти исчезают

4) если убрать только id="loading" - лагов становится чуть меньше (не уверен, может показалось)

5) чем больше площади занимает текст внизу - тем сильнее лаги

6) если сделать очень много текста то подлагивать начинает даже мозилловский фф, но дебиановский при этом вообще меньше 1 фпс выдаёт

Подозреваю что лаги получаются если одновременно есть text-shadow и пачка css-анимаций.

<!DOCTYPE html>
<html>
<head>
<style>
/* reset CSS */
html, body, div {
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 100%;
	font: inherit;
	vertical-align: baseline;
}
body {
	line-height: 1;
}
html,body {
	width:100%;
	height:100%;
}
body {
	-webkit-touch-callout: none;
	-webkit-user-select: none;
	-khtml-user-select: none;
	-moz-user-select: -moz-none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;
	touch-action: manipulation;
	
	color:#fff;
	background:#000 url(img/darkNoise.jpg);
	font-family:Tahoma,Arial,sans-serif;
	font-size:13px;
	
	overflow:hidden;
}
#loader {
	position:relative;
	padding:32px;
	padding-top:110px;
	animation-name:appear;
	animation-iteration-count:1;
	animation-timing-function:ease-out;
	animation-duration:0.5s;
}
@keyframes appear {
	from {opacity:0;top:20px;}
	to {opacity:1;top:0px;}
}
#loading {
	text-shadow:0px 0px 3px rgba(255,255,255,0.5),0px 0px 20px #39f;
	animation-name:blink;
	animation-iteration-count:infinite;
	animation-timing-function:ease-in-out;
	animation-duration:0.75s;
}
.blinking{animation-name:blink;
	animation-iteration-count:infinite;
	animation-timing-function:ease-in-out;
	animation-duration:0.75s;}
@keyframes blink {
	0% {opacity:0.5;}
	50% {opacity:1;}
	100% {opacity:0.5;}
}
#failedToLoad {
	text-shadow:0px 0px 3px rgba(255,255,255,0.5),0px 0px 20px #f33;
	animation-name:appearLater;
	animation-iteration-count:1;
	animation-timing-function:ease-out;
	animation-duration:15s;
}
@keyframes appearLater {
	0% {opacity:0;}
	95% {opacity:0;}
	100% {opacity:1;}
}
.spinnyBig,.spinnySmall {
	display:block;
	width:100px;
	height:100px;
	position:absolute;
	left:50%;
	top:0px;
	margin-left:-50px;
	animation-name:loadSpin;
	animation-iteration-count:infinite;
	animation-timing-function:ease-in-out;
}
.spinnyBig {
	background:url(https://orteil.dashnet.org/cookieclicker/img/spinnyBig.png);
	animation-duration:5s;
}
.spinnySmall {
	background:url(https://orteil.dashnet.org/cookieclicker/img/spinnySmall.png);
	animation-duration:9s;
}
@keyframes loadSpin {
	0% {transform:rotate(0deg);}
	100% {transform:rotate(360deg);}
}
.crisp {
	image-rendering: optimizeSpeed;             /* Older versions of FF          */
	image-rendering: -moz-crisp-edges;          /* FF 6.0+                       */
	image-rendering: -webkit-optimize-contrast; /* Safari                        */
	image-rendering: -o-crisp-edges;            /* OS X & Windows Opera (12.02+) */
	image-rendering: pixelated;                 /* Future-browsers				 */
	-ms-interpolation-mode: nearest-neighbor;   /* IE                            */
}
body{scrollbar-color:#bbb #111;}


/*show scrollbars in safari*/
::-webkit-scrollbar {
	-webkit-appearance:none;
	width:17px;
}
::-webkit-scrollbar-track {
	background-color:#111;
}
::-webkit-scrollbar-thumb {
	background-color:#bbb;
	border:2px solid #111;
	box-shadow:0px 0px 0px 1px #eee inset;
}


/*=====================================================================================
STOP THE FANCY
=======================================================================================*/
.noFancy * {
	text-shadow:none!important;
	box-shadow:none!important;
}
.noFancy .price {
	text-shadow:0px 0px 4px #000,0px 1px 0px #000!important;
}
.noFilters * {
	filter:none!important;
	-webkit-filter:none!important;
}
/**{overflow:hidden!important;}*/
</style>
</head>
<body>
<div id="loader">
	<div class="spinnyBig"></div>
	<div class="spinnySmall"></div>
	<div id="loading" style='font-size:28px;text-shadow:0px 1px 4px #000'>Loading...</div>
	<div style='font-size:28px;text-shadow:0px 1px 4px #000'>This is taking longer than expected.<br>
	<div>Slow connection? If not, please make sure your javascript is enabled, then refresh.<br>
	If problems persist, this might be on our side - wait a few minutes, then hit ctrl+f5!</div><br>
	<div>Slow connection? If not, please make sure your javascript is enabled, then refresh.<br>
	If problems persist, this might be on our side - wait a few minutes, then hit ctrl+f5!</div><br>
	<div>Slow connection? If not, please make sure your javascript is enabled, then refresh.<br>
	If problems persist, this might be on our side - wait a few minutes, then hit ctrl+f5!</div><br>
	<div>Slow connection? If not, please make sure your javascript is enabled, then refresh.<br>
	If problems persist, this might be on our side - wait a few minutes, then hit ctrl+f5!</div><br>
	<div>Slow connection? If not, please make sure your javascript is enabled, then refresh.<br>
	If problems persist, this might be on our side - wait a few minutes, then hit ctrl+f5!</div><br>
	<div>Slow connection? If not, please make sure your javascript is enabled, then refresh.<br>
	If problems persist, this might be on our side - wait a few minutes, then hit ctrl+f5!</div><br>
	<div>Slow connection? If not, please make sure your javascript is enabled, then refresh.<br>
	If problems persist, this might be on our side - wait a few minutes, then hit ctrl+f5!</div><br>
	<div>Slow connection? If not, please make sure your javascript is enabled, then refresh.<br>
	If problems persist, this might be on our side - wait a few minutes, then hit ctrl+f5!</div><br>
	<div>Slow connection? If not, please make sure your javascript is enabled, then refresh.<br>
	If problems persist, this might be on our side - wait a few minutes, then hit ctrl+f5!</div></div>
</div>
</body>
</html>
firkax ★★★★★
() автор топика
Последнее исправление: firkax (всего исправлений: 4)
Ответ на: комментарий от krasnh

Всмысле в чём различие? Я ж как раз детально расписал какие части html-кода влияют на ситуацию. Дебиановский даёт 5 фпс, мозилловский плавную картинку.

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

Звук вряд ли при чём, в примере он не упоминается в итоге.

Там какая-то муть :( https://firefox-source-docs.mozilla.org/setup/linux_build.html

firkax ★★★★★
() автор топика
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от anonymous

Ты в курсе что надо читать тему перед тем как отвечать? Версия ни при чём. А вообще спасибо за сообщение - ты навёл меня на мысль - буду тестить на каком-нить фф 68 или 45, где проблема уже была, но перекомпилировать много раз его будет намного проще.

firkax ★★★★★
() автор топика
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от anonymous

Ты не наблюдаешь, а я наблюдаю. Может у тебя комп топовый и сжирает лаги. Или ещё что-то отличается. А, кстати, у меня 32-битная система, тоже может влиять. Хотя во времена ff~30 его всё же тестировали достаточно чтоб заметить такое.

Может, я пропустил обоснование для использования неподдерживаемой версии?

Да что ты прицепился то? Ещё раз: это на всех версиях так, начиная с очень старых и заканчивая последними. 102 для детального сравнения была выбрана наобум, на результаты это не должно влиять - я уверен, что во всех случаях источник проблемы один и тот же.

firkax ★★★★★
() автор топика
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

я уверен, что во всех случаях

так продемонстрируй свою уверенность примером (кхм, например, тестом на самой свежей версии)

иначе, зачем мы тут собрались?

aol ★★★★★
()
Ответ на: комментарий от firkax

Может у тебя комп топовый и сжирает лаги.

Возможно, могу сравнить профайлером попробовать.

Ещё раз: это на всех версиях так, начиная с очень старых и заканчивая последними.

Не проще было бы сразу написать об этом?

anonymous
()
Ответ на: комментарий от anonymous

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

firkax ★★★★★
() автор топика
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от anonymous

Возможно, могу сравнить профайлером попробовать.

Попробовал на примере из темы, картинка немного отличается, но вроде плюс-минус одинаково.

Может, имеет смысл написать багрепорт в Debian?

anonymous
()

Содержимое about:buildconfig

102-mozilla

Build Configuration
Please be aware that this page doesn't reflect all the options used to build Firefox.
Built from https://hg.mozilla.org/releases/mozilla-esr102/rev/e6d531e487447f2d6a3a902c146b0909029996c6

Build platform target = i686-pc-linux-gnu
CompilerVersionCompiler flags
/builds/worker/fetches/clang/bin/clang –sysroot /builds/worker/fetches/sysroot-i686-linux-gnu -std=gnu99 -m3214.0.4-fcrash-diagnostics-dir=/builds/worker/artifacts -march=pentium-m -msse -msse2 -mfpmath=sse -fPIC -ffunction-sections -fdata-sections -fno-math-errno -pthread -pipe
/builds/worker/fetches/clang/bin/clang++ –sysroot /builds/worker/fetches/sysroot-i686-linux-gnu -std=gnu++17 -m3214.0.4-Qunused-arguments -Qunused-arguments -Wall -Wbitfield-enum-conversion -Wdeprecated-this-capture -Wempty-body -Wformat-type-confusion -Wignored-qualifiers -Wpointer-arith -Wshadow-field-in-constructor-modified -Wsign-compare -Wtype-limits -Wno-error=tautological-type-limit-compare -Wunreachable-code -Wunreachable-code-return -Wunused-but-set-parameter -Wno-invalid-offsetof -Wclass-varargs -Wempty-init-stmt -Wfloat-overflow-conversion -Wfloat-zero-conversion -Wloop-analysis -Wno-range-loop-analysis -Wc++2a-compat -Wcomma -Wenum-compare-conditional -Wimplicit-fallthrough -Werror=non-literal-null-conversion -Wstring-conversion -Wno-inline-new-delete -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=backend-plugin -Wno-error=free-nonheap-object -Wno-error=return-std-move -Wno-error=atomic-alignment -Wno-error=deprecated-copy -Wformat -Wformat-security -Wno-gnu-zero-variadic-macro-arguments -Wno-psabi -Wthread-safety -Wno-unknown-warning-option -D_GLIBCXX_USE_CXX11_ABI=0 -fno-sized-deallocation -fno-aligned-new -fcrash-diagnostics-dir=/builds/worker/artifacts -march=pentium-m -msse -msse2 -mfpmath=sse -fno-exceptions -fPIC -fno-rtti -ffunction-sections -fdata-sections -fno-exceptions -fno-math-errno -pthread -pipe -gdwarf-4 -O3 -fomit-frame-pointer -funwind-tables
/builds/worker/fetches/rustc/bin/rustc1.60.0
Configure options

MOZ_AUTOMATION=1 --target=i686-pc-linux MOZILLA_OFFICIAL=1 --enable-update-channel=esr MOZBUILD_STATE_PATH=/builds/worker/.mozbuild MOZ_FETCHES_DIR=/builds/worker/fetches ENABLE_CLANG_PLUGIN=1 MOZ_STDCXX_COMPAT=1 --enable-profile-use=cross --with-pgo-profile-path=/builds/worker/fetches/merged.profdata --with-pgo-jarlog=/builds/worker/fetches/en-US.log MOZ_LTO=cross MOZ_NO_PIE_COMPAT=1 --enable-js-shell --enable-rust-simd --enable-default-toolkit=cairo-gtk3-x11-wayland --with-mozilla-api-keyfile=/builds/mozilla-desktop-geoloc-api.key --with-google-location-service-api-keyfile=/builds/gls-gapi.data --with-google-safebrowsing-api-keyfile=/builds/sb-gapi.data --enable-official-branding

102-debian

Build Configuration
Please be aware that this page doesn't reflect all the options used to build Firefox.
Built from https://hg.mozilla.org/releases/mozilla-esr102/rev/e6d531e487447f2d6a3a902c146b0909029996c6

Build platform target = i686-pc-linux-gnu
CompilerVersionCompiler flags
/usr/bin/gcc -std=gnu9910.2.1-O2 -ffile-prefix-map=/build/reproducible-path/firefox-esr-102.15.1esr=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -ffunction-sections -fdata-sections -fno-math-errno -pthread -pipe
/usr/bin/g++ -std=gnu++1710.2.1-Wdate-time -D_FORTIFY_SOURCE=2 -Wall -Wempty-body -Wignored-qualifiers -Wpointer-arith -Wsign-compare -Wtype-limits -Wunreachable-code -Wno-invalid-offsetof -Wc++2a-compat -Wduplicated-cond -Wimplicit-fallthrough -Wno-error=maybe-uninitialized -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=coverage-mismatch -Wno-error=free-nonheap-object -Wno-multistatement-macros -Wno-error=class-memaccess -Wno-error=deprecated-copy -Wformat -Wformat-overflow=2 -Wno-psabi -fno-sized-deallocation -fno-aligned-new -O2 -ffile-prefix-map=/build/reproducible-path/firefox-esr-102.15.1esr=. -fstack-protector-strong -Wformat -Werror=format-security -fno-exceptions -fPIC -fno-rtti -ffunction-sections -fdata-sections -fno-exceptions -fno-math-errno -pthread -pipe -freorder-blocks -O2 -fomit-frame-pointer -funwind-tables
/usr/bin/rustc1.59.0–remap-path-prefix=/build/reproducible-path/firefox-esr-102.15.1esr=.
Configure options

--host=i686-linux-gnu --target=i686-linux-gnu MOZILLA_OFFICIAL=1 --enable-update-channel=esr MOZBUILD_STATE_PATH=/build/reproducible-path/firefox-esr-102.15.1esr/debian/.mozbuild CC=gcc CXX=g++ --disable-debug-symbols --enable-alsa --with-app-name=firefox-esr RUSTFLAGS=--remap-path-prefix=/build/reproducible-path/firefox-esr-102.15.1esr=. --enable-system-ffi --enable-default-toolkit=cairo-gtk3-wayland --with-mozilla-api-keyfile=/build/reproducible-path/firefox-esr-102.15.1esr/debian/mls.key --with-google-location-service-api-keyfile=/build/reproducible-path/firefox-esr-102.15.1esr/debian/google.key --with-google-safebrowsing-api-keyfile=/build/reproducible-path/firefox-esr-102.15.1esr/debian/google.key --with-unsigned-addon-scopes=app,system --with-system-libvpx --without-wasm-sandboxed-libraries --disable-updater MOZ_APP_REMOTINGNAME=Firefox-esr --with-system-libevent --disable-install-strip --with-system-zlib --enable-official-branding --prefix=/usr
firkax ★★★★★
() автор топика