浏览时 CPU 负载过高(AMD A6)

浏览时 CPU 负载过高(AMD A6)

我的 CPU 是 AMD A6-9220 RADEON R4。我使用 Ubuntu 16.04.1。没有可用的附加(专有)驱动程序。Chrome 和 Firefox 中的 CPU 负载都很高,Chrome 中的硬件加速已关闭。当我主要滚动页面时会发生这种情况。或者当我打开浏览器并执行其他操作(运行其他任务)时。浏览时出了问题,我可以执行更多繁重的任务而 CPU 不会有这样的反应(例如,我可以从 HDD 观看高清视频而不会使其加载超过 23%)。如top命令所示,主要是Xorg进程消耗了很多(50%)。

在此处输入图片描述

答案1

所以,你让我很好奇,我决定对 Xorg 进行一些分析。注意:我没有安装调试符号(而且你无论如何也不能真正相信他们有优化的代码),所以我得到的输出有点稀少,但尽管如此......

$ sudo operf --pid=$(pgrep Xorg) # scroll youtube in chromium for a bit, then interrupt the command
^C
$ opreport -l | head -n 20
[warnings skipped]
CPU: AMD64 family12h, speed 1900 MHz (estimated)
Counted CPU_CLK_UNHALTED events (CPU Clocks not Halted) with a unit mask of 0x00 (No unit mask) count 100000
samples  %        image name               symbol name
6030     26.0351  r600_dri.so              /usr/lib/dri/r600_dri.so
4717     20.3661  Xorg                     /usr/lib/Xorg
2616     11.2948  radeon                   /radeon
1135      4.9005  drm                      /drm
833       3.5966  libc-2.28.so             _IO_vfscanf
793       3.4239  ttm                      /ttm
686       2.9619  radeon_drv.so            /usr/lib/xorg/modules/drivers/radeon_drv.so
642       2.7719  libglamoregl.so          /usr/lib/xorg/modules/libglamoregl.so
524       2.2624  libEGL_mesa.so.0.0.0     /usr/lib/libEGL_mesa.so.0.0.0
476       2.0552  libc-2.28.so             arena_get2.part.4
465       2.0077  libGLdispatch.so.0.0.0   /usr/lib/libGLdispatch.so.0.0.0
397       1.7141  libglapi.so.0.0.0        /usr/lib/libglapi.so.0.0.0
345       1.4896  libc-2.28.so             exec_comm
328       1.4162  libEGL.so.1.1.0          /usr/lib/libEGL.so.1.1.0
325       1.4032  libpixman-1.so.0.34.0    /usr/lib/libpixman-1.so.0.34.0
178       0.7685  libdrm.so.2.4.0          /usr/lib/libdrm.so.2.4.0
154       0.6649  libfb.so                 /usr/lib/xorg/modules/libfb.so

这里花在用户空间图形驱动程序 r600_dri 上的时间比 Xorg 本身还要多。

我们可以得出的结论是,为了减少 CPU 开销,你需要升级驱动程序,因为(与任何项目一样,仅供参考) 新的优化不断进行当然,你很难注意到几个月的工作有什么不同,但是,伙计,11.2.x您的 16.04 使用的 Mesa 版本是古老的


为了进行比较,我在 YouTube 上打开了 Firefox,并在那里滚动了一会儿。结果如下;一些样本稍大一些,可能是因为我滚动得更密集,或更长时间,或两者兼而有之。

CPU: AMD64 family12h, speed 1900 MHz (estimated)
Counted CPU_CLK_UNHALTED events (CPU Clocks not Halted) with a unit mask of 0x00 (No unit mask) count 100000
samples  %        image name               symbol name
13128    41.2558  libc-2.28.so             arena_get2.part.4
8628     27.1142  r600_dri.so              /usr/lib/dri/r600_dri.so
2534      7.9633  Xorg                     /usr/lib/Xorg
1832      5.7572  radeon                   /radeon
776       2.4386  drm                      /drm
677       2.1275  ttm                      /ttm
565       1.7756  libc-2.28.so             _IO_vfscanf
392       1.2319  libglamoregl.so          /usr/lib/xorg/modules/libglamoregl.so
279       0.8768  libEGL_mesa.so.0.0.0     /usr/lib/libEGL_mesa.so.0.0.0
276       0.8674  radeon_drv.so            /usr/lib/xorg/modules/drivers/radeon_drv.so
269       0.8454  libGLdispatch.so.0.0.0   /usr/lib/libGLdispatch.so.0.0.0
242       0.7605  libc-2.28.so             exec_comm
212       0.6662  libglapi.so.0.0.0        /usr/lib/libglapi.so.0.0.0
178       0.5594  libpixman-1.so.0.34.0    /usr/lib/libpixman-1.so.0.34.0
160       0.5028  libEGL.so.1.1.0          /usr/lib/libEGL.so.1.1.0
95        0.2985  libfb.so                 /usr/lib/xorg/modules/libfb.so
86        0.2703  libdrm.so.2.4.0          /usr/lib/libdrm.so.2.4.0

这次显卡驱动和Xorg的区别就更大了,在驱动方面。

然而,有趣的是,最主要的条目是 glibc 的arena_get2.part.4。那会是什么呢?我在谷歌上找不到确切的结果,但我找到了找到这个源文件这表明它很可能与内存分配有关。

为了减少这个问题的影响,你可能会感兴趣在每个线程的 malloc 缓存中glibc 2.26 版本中的优化。如今,在经历了 Spectre 和 Meltdown 事件之后,优化变得更加重要,因为不要过于频繁地进入内核空间变得更加重要。

我认为libc6 软件包Ubuntu Xenial 的版本是 2.23。您可能想升级这个特定的软件包,但请注意,这可能会破坏某些东西,因为这个库是系统的核心。获取它的最佳方式是升级到 18.04,它有 2.27 版本

答案2

有趣的是,我的笔记本电脑中有一块 r300 时代的显卡(Mobility Radeon 200M)和更古老的 CPU,两者都比这里描述的问题案例更快,并且没有 CPU 峰值 - 直到我升级了我的系统!

一开始我以为是内核,但降级到旧的 Xorg 和 mesa 使得一切都比以往更快。

我不知道发生了什么,但出于某种原因,GPU 加速变得更加占用 CPU。此外,在我的 perf 输出中,我主要看到大多数时间都在发生内存移动。在我的单核 CPU 上,CPU 使用率为 100%,而恢复到旧的 mesa+xorg 时,我最多得到 25-40%,而不是在 GPU 驱动程序中。显然在某一时刻出了问题。

完整分析请见此处: https://www.phoronix.com/forums/forum/linux-graphics-x-org-drivers/open-source-amd-linux/1099745-how-to-tell-if-a-driver-is-gallium-or-just-mesa-slow-renderng-with-radeon/

答案3

您的 CPU 低端且速度慢。即使在一般使用情况下,其负载也很高。基准网站将其列为比传统低端 CPU(例如 Intel I5 5200u)慢得多。

相关内容