Warum hätte ich eine hohe CPU-Auslastung (Single-Core), wenn glxgears auf einer GPU läuft?

468
Dylan Cali

Beim Ausführen von glxgears (oder einer anderen grafisch intensiven Anwendung) unter Linux sehe ich eine 100% -ige Auslastung eines einzelnen CPU-Kerns, obwohl ich bestätigt habe, dass meine Nvidia-GPU als Renderer verwendet wird. Wird das erwartet?

Meine Maschine

$ 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: 3440x1440@49.99hz GLX Renderer: Quadro M1200/PCIe/SSE2 GLX Version: 4.5.0 NVIDIA 384.130 Direct Rendering: Yes 

Ich habe ein etwas ungewöhnliches Setup, da ich Linux auf einem Laptop mit Nvidia Optimus (Intel integrierte Grafik + diskrete mobile Nvidia-GPU) verwende. Ich habe jedoch Linux für die Verwendung der dedizierten Nvidia-GPU nvidia-primekonfiguriert und die Konfiguration überprüft (die inxiAusgabe oben meldet auch, dass die Nvidia-Karte / der Treiber als Grafik-Renderer verwendet wird).

Prüfung

Ich starte glxgears:

$ glxgears -info GL_RENDERER = Quadro M1200/PCIe/SSE2 GL_VERSION = 4.5.0 NVIDIA 384.130 GL_VENDOR = NVIDIA Corporation 

und htopich sehe:

Warum hätte ich eine hohe CPU-Auslastung (Single-Core), wenn glxgears auf einer GPU läuft?

Ich lief auch los oprofile, um einen Bericht über meine CPU zu erhalten.

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 

Basierend darauf, dass glxgears auf jeden Fall das nvidia-Backend verwendet, bin ich verwirrt, warum eine reine Grafikanwendung, die eine gpu verwendet, auch eine hohe Single-Core-CPU-Auslastung hätte?

0

1 Antwort auf die Frage

0
Yorik

Ich bin kein Linux-Experte, aber Kallsyms ist der Kernel, und ich sehe, dass Google über hohe CPU-Auslastung im Kernel / Kallsyms auf Laptops klatscht, wo ein Kernel-Fehler im Zusammenhang mit USB Dynamic Power Management vorhanden ist / war (siehe zum Beispiel: https: //). askubuntu.com/questions/1044872/ubuntu-16-04-kworker- using-high-cpu-constantly ).