GPU에서 glxgear를 실행할 때 CPU 사용량이 많은 이유는 무엇입니까 (단일 코어)? ( inxi위 출력은

Linux에서 glxgears (또는 그래픽 집약적 응용 프로그램)를 실행할 때 Nvidia GPU를 렌더러로 사용하고 있음을 확인했지만 단일 CPU 코어를 100 % 활용합니다. 기대 되나요?

내 기계

$ 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

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 사용량을 갖는 이유가 혼란 스럽습니다.



답변

나는 리눅스 전문가는 아니지만 kallsyms 는 커널이며 USB 동적 전원 관리와 관련된 커널 버그가있는 랩톱의 커널 / kallsyms에서 높은 CPU에 대한 Google 채팅을 볼 수 있습니다 (예 : https : // 참조). askubuntu.com/questions/1044872/ubuntu-16-04-kworker-using-high-cpu-constantly ).