在 Linux 上运行 glxgears(或任何图形密集型应用程序)时,我看到单个 CPU 核心的利用率为 100%,尽管我已确认它使用我的 Nvidia GPU 作为渲染器。这是预期的吗?
我的机器
$ inxi -Fxz
System: Kernel: 4.15.0-38-generic x86_64 (64 bit gcc: 5.4.0)
Desktop: Cinnamon 3.4.6 (Gtk 3.18.9) Distro: Linux Mint 18.2 Sonya
Machine: System: Dell (portable) product: Precision 5520
Mobo: Dell model: 04GFKY v: A00 Bios: Dell v: 1.5.0 date: 08/30/2017
CPU: Quad core Intel Xeon E3-1505M v6 (-HT-MCP-) cache: 8192 KB
flags: (lm nx sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx) bmips: 24000
clock speeds: max: 4000 MHz 1: 1727 MHz 2: 1417 MHz 3: 1354 MHz 4: 1510 MHz 5: 949 MHz 6: 1430 MHz
7: 1283 MHz 8: 1440 MHz
Graphics: Card-1: Intel HD Graphics P630 bus-ID: 00:02.0
Card-2: NVIDIA GM107GLM [Quadro M1200 Mobile] bus-ID: 01:00.0
Display Server: X.Org 1.18.4 driver: nvidia Resolution: [email protected]
GLX Renderer: Quadro M1200/PCIe/SSE2 GLX Version: 4.5.0 NVIDIA 384.130 Direct Rendering: Yes
我有一个不太常见的设置,即在配备 Nvidia Optimus(Intel 集成显卡 + 独立 Nvidia 移动 GPU)的笔记本电脑上使用 Linux。但是,我已将 Linux 配置为使用专用的 Nvidia GPU,nvidia-prime
并验证了配置(inxi
上面的输出还报告了用作图形渲染器的 Nvidia 卡/驱动程序)。
测试
我启动 glxgears:
$ glxgears -info
GL_RENDERER = Quadro M1200/PCIe/SSE2
GL_VERSION = 4.5.0 NVIDIA 384.130
GL_VENDOR = NVIDIA Corporation
我看到的是htop
:
我还运行了oprofile
获取有关我的 CPU 正在执行的操作的报告,它给了我:
CPU: Intel Architectural Perfmon, speed 4000 MHz (estimated)
Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit mask of 0x00 (No unit mask) count 100000
CPU_CLK_UNHALT...|
samples| %|
------------------
4232537 100.000 glxgears
CPU_CLK_UNHALT...|
samples| %|
------------------
3155713 74.5584 kallsyms
523169 12.3606 libnvidia-glcore.so.384.130
332903 7.8653 libc-2.23.so
177315 4.1893 libGL.so.384.130
27398 0.6473 .glxj5h8n
3605 0.0852 libxcb.so.1.1.0
3396 0.0802 libX11.so.6.3.0
3273 0.0773 libm-2.23.so
2594 0.0613 glxgears
1218 0.0288 [vdso] (tgid:10292 range:0x7ffc294d2000-0x7ffc294d3fff)
706 0.0167 .glWqJoPX
682 0.0161 libXext.so.6.4.0
366 0.0086 .glhBcsou
68 0.0016 snd_usb_audio
51 0.0012 nvidia
41 9.7e-04 iwlwifi
18 4.3e-04 kvm
15 3.5e-04 x86_pkg_temp_thermal
2 4.7e-05 hid
2 4.7e-05 mac80211
2 4.7e-05 nvidia_uvm
基于 glxgears 肯定使用了 nvidia 后端,所以我很困惑为什么使用 gpu 的纯图形应用程序也会有较高的单核 CPU 使用率?
答案1
我不是 Linux 专家,但是卡尔西姆斯是内核,我看到谷歌讨论笔记本电脑 kernel/kallsyms 中 CPU 使用率过高的问题,其中存在与 USB 动态电源管理相关的内核错误(例如:https://askubuntu.com/questions/1044872/ubuntu-16-04-kworker-using-high-cpu-constantly)。