web-dev-qa-db-ja.com

ブラウジング中のCPU負荷が高い(AMD A6)

私のCPUはAMD A6-9220 RADEON R4です。 Ubuntu 16.04.1。を使用します。追加の(独自の)ドライバーはありません。 CPUはChromeとFirefoxの両方でロードしますが、Chromeではハードウェアアクセラレーションがオフになっています。主にページをスクロールすると発生します。または、ブラウザを開いて別の操作を行う(他のタスクを実行する)場合。ブラウジングにまったく問題があり、CPUからの反応なしで、はるかに重いタスクを実行できます(たとえば、HDビデオを23%以上ロードせずにHDDから視聴できます)。 topコマンドが示したように、大量(50%)を消費するのはほとんどXorgプロセスです。

enter image description here

2
R S

興味深いことに、ラップトップにr300-eraカード(Mobility Radeon 200M)とはるかに古いCPUがあり、両方ともここで説明した問題の場合よりも高速で、システムがアップグレードされるまでCPUスパイクがありませんでした!

最初はカーネルだと思っていましたが、古いXorgとmesaにダウングレードすると、すべてがかつてないほど高速になりました。

何が起こっているのかわかりませんが、何らかの理由で、GPUアクセラレーションはCPUを集中的に使用するようになりました。また、perfの出力では、ほとんどの場合メモリの動きがほとんど見られます。 CPU使用率が100%のシングルコアCPUで、古いmesa + xorgに戻すと、GPUドライバーではなく最大25-40%しか得られません。ある時点で何かが明らかに間違っていました。

完全な分析についてはこちらをご覧ください: 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 /

2
prenex

それで、あなたは私に興味を持ちました、そして私は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自体に費やされる時間よりもさらに多くの時間がかかります。

私たちができる結論は、(すべてのプロジェクトのように、FWIW)絶えず新しい最適化が行われている のため、ドライバーをアップグレードする必要があるCPUオーバーヘッドを削減することですもちろん、あなたは数ヶ月の仕事との違いにほとんど気づきませんが、まあ、16.04が使用している 11.2.x Mesaバージョンはancient


比較のために、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でした。それは何でしょうか?私はグーグルで正確な結果を見つけることができませんでしたが、私は このソースファイルを見つける を見つけました。

この影響を減らすには、おそらくglibc 2.26リリースの一部である スレッドごとのmallocキャッシュで 最適化に興味があります。最近では、SpectreやMeltdownがすべて発生した後、カーネルスペースに頻繁にアクセスしないことがさらに重要になるため、最適化はさらに重要になります。

Ubuntu Xenialのバージョン2.23は libc6パッケージ であると推測されます。この特定の1つのパッケージをアップグレードしたいと思うかもしれませんが、このライブラリはシステムの中核であるため、何かが壊れる可能性があることに注意してください。それを取得する最善の方法は、18.04にアップグレードすることです。これは 2.27バージョン です。

2
Hi-Angel

ローエンドの低速CPUを使用しています。一般的な使用でも高負荷を示します。 ベンチマークサイト Intel I5 5200uなどの従来のローエンドCPUよりも大幅に遅いものとしてリストします。

1
vidarlo