LINUX.ORG.RU

Opera жжёт CPU

 , , , ,


1

3

Opera 45.0.2552.812, распоследний Arch.

Сразу после запуска один из процессов Оперы начинает чем-то занимать CPU. Не полностью, но достаточно заметно, процентов на 15.

Натравил strace: [1]

Показывает что-то похожее на event loop, с poll() и recvmsg(). Всегда вижу два дескриптора, в данном случае 110 и 117. recvmsg() очень много и очень быстро возвращает EAGAIN.

Смотрю стектрейсы для recvmsg: [2]

Вижу, что оно, похоже, вызывается в каком-то коде, завязанном на обработку событий от Иксов.

Смотрю на эти дескрипторы: [3]

Полезного ничего не вижу.

Если приаттачиться через gdb и сделать close() дескрипторам, Опера выпадает с SIGSEGV.

Воспроизводится на чистом профиле без расширений.

Репорт разрабам отправил, хочу теперь узнать, есть ли тут те, кто видел похожее и знает, как с этим бороться.

★★★★★

Последнее исправление: post-factum (всего исправлений: 1)

Можно запустить оперу под неким профилировщиком, который бы мог показать цепочку вызовов функций в самой программе, Kcachegrind callgrind например https://slabme.files.wordpress.com/2007/12/callgrind-output-tile-2.png чтоб можно было дерево построить

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

Дописал ключ — ничего не поменялось, к сожалению.

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

оно там не в таком наглядном виде, к тому же деманглинг не помешал бы

SZT ★★★★★
()

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

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

Действительно... Но жрет оно в пределах ~2%

 3711  1.5  0.3 1411556 118336 tty7   SLl+ 11:52   0:04 /usr/lib64/opera/opera
 3714  0.0  0.0   6316   680 tty7     S+   11:52   0:00  \_ /usr/lib64/opera/opera_sandbox /usr/lib64/opera/opera --type=zygote --alt-high-dpi-setting=96 --system-dpi-setting=96
 3718  0.0  0.1 500092 34188 tty7     S+   11:52   0:00  |   \_ /usr/lib64/opera/opera --type=zygote --alt-high-dpi-setting=96 --system-dpi-setting=96
 3720  0.0  0.0 500092  6604 tty7     S+   11:52   0:00  |       \_ /usr/lib64/opera/opera --type=zygote --alt-high-dpi-setting=96 --system-dpi-setting=96
 3817  0.4  0.6 1084648 214324 tty7   Sl+  11:52   0:01  |           \_ /usr/lib64/opera/opera --type=renderer --alt-high-dpi-setting=96 --system-dpi-setting=96 --field-trial-handle=1 --primordial-pipe-token=EA03A8FC516F207FAAF67B53D9CCC293 --la
 3822  0.2  0.3 993640 103052 tty7    Sl+  11:52   0:00  |           \_ /usr/lib64/opera/opera --type=renderer --alt-high-dpi-setting=96 --system-dpi-setting=96 --field-trial-handle=1 --primordial-pipe-token=7166B3BAAAD2E1D055FABB549C3B4C71 --la
 3904  0.1  0.2 985280 95944 tty7     Sl+  11:52   0:00  |           \_ /usr/lib64/opera/opera --type=renderer --alt-high-dpi-setting=96 --system-dpi-setting=96 --field-trial-handle=1 --primordial-pipe-token=C30EC5F325853E97420EAF5A1EAEC82F --la
 3928  0.3  0.2 913656 75044 tty7     Sl+  11:52   0:00  |           \_ /usr/lib64/opera/opera --type=renderer --alt-high-dpi-setting=96 --system-dpi-setting=96 --field-trial-handle=1 --primordial-pipe-token=45C110F672079D91E2FD49ED961C0CFA --la
 4006  0.0  0.1 871668 54764 tty7     Sl+  11:54   0:00  |           \_ /usr/lib64/opera/opera --type=renderer --alt-high-dpi-setting=96 --system-dpi-setting=96 --field-trial-handle=1 --primordial-pipe-token=918BC8471B160A8E3041649C3BC05F4B --la
 4011  0.0  0.2 899432 73044 tty7     Sl+  11:54   0:00  |           \_ /usr/lib64/opera/opera --type=renderer --alt-high-dpi-setting=96 --system-dpi-setting=96 --field-trial-handle=1 --primordial-pipe-token=EFADE4F7C122B129E8D5A3D4FB5BD8B8 --la
 3766  0.3  0.2 540636 76572 tty7     Sl+  11:52   0:00  \_ /usr/lib64/opera/opera --type=gpu-process --field-trial-handle=1 --supports-dual-gpus=false --gpu-driver-bug-workarounds=1,7,8,23,28,61,74 --disable-gl-extensions=GL_ARB_timer_query GL_
 3768  0.0  0.0 470128  8908 tty7     S+   11:52   0:00      \_ /usr/lib64/opera/opera --type=gpu-broker
strace -tttTp 3711
...
1495443504.381270 write(112, "!", 1)    = 1 <0.000004>
1495443504.381297 gettid()              = 3711 <0.000003>
1495443504.381317 write(149, "\0", 1)   = 1 <0.000321>
1495443504.381650 futex(0x6a7d868, FUTEX_WAKE_PRIVATE, 1) = 1 <0.000005>
1495443504.381670 write(112, "!", 1)    = 1 <0.000005>
1495443504.381688 recvmsg(102, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) <0.000005>
1495443504.381703 recvmsg(109, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) <0.000004>
1495443504.381718 poll([{fd=102, events=POLLIN}, {fd=103, events=POLLIN}, {fd=109, events=POLLIN}, {fd=110, events=POLLIN}, {fd=111, events=POLLIN}, {fd=192, events=POLLIN}], 6, 0) = 1 ([{fd=111, revents=POLLIN}]) <0.000004>
1495443504.381738 recvmsg(109, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) <0.000004>
1495443504.381750 read(111, "!!", 2)    = 2 <0.000004>
1495443504.381762 recvmsg(102, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) <0.000004>
1495443504.381774 recvmsg(109, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) <0.000004>
1495443504.381786 poll([{fd=102, events=POLLIN}, {fd=103, events=POLLIN}, {fd=109, events=POLLIN}, {fd=110, events=POLLIN}, {fd=111, events=POLLIN}, {fd=192, events=POLLIN}], 6, 0) = 0 (Timeout) <0.000004>
...
Nietzsche
()
Ответ на: комментарий от Nietzsche

Наверняка жор от проца зависит же. На Skylake у меня кушает меньше, нежели на Ivy Bridge.

Спасибо за инфу.

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

Попробуй на Chromium - думаю будет тоже самое.

У меня такой же выхлоп. Оценить нагрузку на CPU не могу - 0%, PulseAudio и то хотя бы на 2% вылезает по CPU в системном мониторе.

PS: процессор древний i5-3450 (Ivy Bridge)

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

Да, на Хромиуме похожее поведение, только там, наверное, таймаут побольше, т.к. EAGAIN прилетает раз в несколько секунд (до 10), а не постоянно. Потому CPU не жрётся.

Значит, это что-то в движке.

post-factum ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.