xorg 및 CPU 사용량

xorg 및 CPU 사용량

내 노트북에 Debian 10이 설치되어 있고 Debian 이후에 xorg, i3wm 및 compton을 수동으로 설치했습니다. nVidia 독점 드라이버를 설치하고 xorg.conf 파일의 일부 옵션을 조정하여 몇 가지 심각한 찢어짐 문제를 해결했습니다.

/usr/share/X11/xorg.conf.d/10-nvidia.conf    
    # nvidia-settings: X configuration file generated by nvidia-settings
    # nvidia-settings:  version 390.116

    Section "ServerLayout"
        Identifier     "Layout0"
        Screen      0  "Screen0" 0 0
        InputDevice    "Keyboard0" "CoreKeyboard"
        InputDevice    "Mouse0" "CorePointer"
        Option         "Xinerama" "0"
    EndSection

    Section "Files"
    EndSection

    Section "Module"
        Load           "dbe"
        Load           "extmod"
        Load           "type1"
        Load           "freetype"
        Load           "glx"
    EndSection

    Section "InputDevice"
        # generated from default
        Identifier     "Mouse0"
        Driver         "mouse"
        Option         "Protocol" "auto"
        Option         "Device" "/dev/psaux"
        Option         "Emulate3Buttons" "no"
        Option         "ZAxisMapping" "4 5"
    EndSection

    Section "InputDevice"
        # generated from default
        Identifier     "Keyboard0"
        Driver         "kbd"
    EndSection

    Section "Monitor"
        # HorizSync source: edid, VertRefresh source: edid
        Identifier     "Monitor0"
        VendorName     "Unknown"
        ModelName      "FUS P19-3P"
        HorizSync       30.0 - 82.0
        VertRefresh     56.0 - 76.0
        Option         "DPMS"
    EndSection

    Section "Device"
        Identifier     "Device0"
        Driver         "nvidia"
        VendorName     "NVIDIA Corporation"
        BusID          "PCI:1:0:0"
        BoardName      "GeForce GTX 670M"
        Option         "NoLogo" "1"
        Option         "MigrationHeuristic" "greedy"
        Option         "AccelMethod" "sna"
        Option         "TearFree"    "true"
        Option "RenderAccel" "True"
        Option "AddARGBGLXVisuals" "True"
        Option "OnDemandVBlankInterrupts" "True"
        Option "InitialPixmapPlacement" "2"
        Option "BackingStore" "True"
        Option "DamageEvents" "True"
        Option "UseEvents" "False"
        Option "Coolbits" "1"
        Option "DisableGLXRootCliping" "True"
        Option "TripleBuffer" "true"
        Option "Coolbits" "24"
        Option "PixmapCacheSize" "300000"
        Option "GlyphCache" "1"

    EndSection

    Section "Screen"
        Identifier     "Screen0"
        Device         "Device0"
        Monitor        "Monitor0"
        DefaultDepth    24
        Option         "Stereo" "0"
        Option         "metamodes" "HDMI-0: nvidia-auto-select +0+0 {ForceCompositionPipeline=On, ForceFullCompositionPipeline=On}"
        Option         "SLI" "Off"
        Option         "MultiGPU" "Off"
        Option         "BaseMosaic" "off"
        SubSection     "Display"
            Depth       24
        EndSubSection
    EndSection

그리고 compton.conf 파일에서:

~/.config/compton.conf
# basic configuration
backend = "glx";
vsync = "opengl-swc";
paint-on-overlay = true
glx-no-stencil = true

glx-copy-from-front = true;
glx-swap-method = 2;
xrender-sync = true;
xrender-sync-fence = true;

# transparancy settings for i3
opacity-rule = [
    "0:_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'",
    "100:class_g = 'Firefox-esr' && !_NET_WM_STATE@:32a",
    "0:_NET_WM_STATE@[0]:32a *= '_NET_WM_STATE_HIDDEN'",
    "0:_NET_WM_STATE@[1]:32a *= '_NET_WM_STATE_HIDDEN'",
    "0:_NET_WM_STATE@[2]:32a *= '_NET_WM_STATE_HIDDEN'",
    "0:_NET_WM_STATE@[3]:32a *= '_NET_WM_STATE_HIDDEN'",
    "0:_NET_WM_STATE@[4]:32a *= '_NET_WM_STATE_HIDDEN'",
    "92:class_g = 'st-256color' && !_NET_WM_STATE@:32a",
    "0:_NET_WM_STATE@[0]:32a *= '_NET_WM_STATE_HIDDEN'",
    "0:_NET_WM_STATE@[1]:32a *= '_NET_WM_STATE_HIDDEN'",
    "0:_NET_WM_STATE@[2]:32a *= '_NET_WM_STATE_HIDDEN'",
    "0:_NET_WM_STATE@[3]:32a *= '_NET_WM_STATE_HIDDEN'",
    "0:_NET_WM_STATE@[4]:32a *= '_NET_WM_STATE_HIDDEN'"
];

그리고 콤프턴한테 전화해 exec --no-startup-id compton --config ~/.config/compton.conf -CGb --backend glx --paint-on-overlay --vsync opengl-swc

i3wm 구성 파일에서.

lspci의 출력도 첨부했습니다.

00:00.0 Host bridge: Intel Corporation 3rd Gen Core processor DRAM Controller (rev 09)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller (rev 04)
00:16.0 Communication controller: Intel Corporation 7 Series/C216 Chipset Family MEI Controller #1 (rev 04)
00:1a.0 USB controller: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #2 (rev 04)
00:1b.0 Audio device: Intel Corporation 7 Series/C216 Chipset Family High Definition Audio Controller (rev 04)
00:1c.0 PCI bridge: Intel Corporation 7 Series/C216 Chipset Family PCI Express Root Port 1 (rev c4)
00:1c.1 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 2 (rev c4)
00:1c.3 PCI bridge: Intel Corporation 7 Series/C216 Chipset Family PCI Express Root Port 4 (rev c4)
00:1c.4 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 5 (rev c4)
00:1d.0 USB controller: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #1 (rev 04)
00:1f.0 ISA bridge: Intel Corporation HM77 Express Chipset LPC Controller (rev 04)
00:1f.2 SATA controller: Intel Corporation 7 Series Chipset Family 6-port SATA Controller [AHCI mode] (rev 04)
00:1f.3 SMBus: Intel Corporation 7 Series/C216 Chipset Family SMBus Controller (rev 04)
01:00.0 VGA compatible controller: NVIDIA Corporation GF114M [GeForce GTX 670M] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GF114 HDMI Audio Controller (rev a1)
03:00.0 Network controller: Intel Corporation Centrino Wireless-N 105 (rev c4)
04:00.0 Ethernet controller: Qualcomm Atheros AR8151 v2.0 Gigabit Ethernet (rev c0)

파운드 테스트를 이용해서 모니터를 테스트했는데도 문제가 확실히 사라졌네요이 웹사이트가끔(약 10초마다) UFO가 약간 뒤로 이동했다가 다시 앞으로 이동하는 것을 봅니다...

문제를 조사해 본 결과 일부 사용자가 xorg의 높은 CPU 사용량에 대해 불평하고 있는 것을 발견했습니다. 나는 일반적으로 CPU 사용량이 높지 않습니다. (이 질문을 작성할 때 각 8코어 CPU에서 7% 미만을 유지했지만 상자 크기를 앞뒤로 조정하기 시작하면 CPU 사용량이 70/80까지 올라갑니다. %), 그러나 i3에서 부동 창을 이동하려고 하면 일부 코어의 CPU 사용량이 50/60%로 상승하기 시작합니다(이 모든 결과는 사용량으로 확인됨 htop). 범인은 xorg 및 compton입니다(때로는 내 창에서도 발생함). )이동하다).

그래서 질문은: 왜 이런 일이 발생하는가? 이것이 화면에 나타나는 문제와 관련이 있을 수 있습니까? GPU에 의해 화면이 다시 그려지는 것이 아닌가요? 그렇다면 왜 CPU 사용량에 그렇게 큰 영향을 미치나요? 내가 보고 있는 작은 화면 아티팩트의 원인이 될 수 있는 이 문제를 해결할 수 있는 방법이 있습니까?

미리 감사드립니다.

관련 정보