rx는 Fedora 28의 통합 vega GPU보다 560배 느립니다.

rx는 Fedora 28의 통합 vega GPU보다 560배 느립니다.

나는 rx560x를 올바르게 감지할 수 있는 유일한 배포판인 것 같아서 fedora 28을 사용하고 있습니다. 그럼에도 불구하고, 통합 GPU를 사용할 때보다 개별 GPU를 사용할 때의 성능이 현저히 떨어지는 것을 확인했습니다.

내 컴퓨터 구성은 ACER nitro 5 an515-42, 8GB 메모리, vega 8 통합 그래픽이 포함된 APU ryzen 2500u, RX 560X AMD 추가 그래픽입니다.

lspci이것은 명령의 출력입니다.

00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 15d0
00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Device 15d1
00:01.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h 
(Models 00h-0fh) PCIe Dummy Host Bridge
00:01.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 15d3
00:01.6 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 15d3
00:01.7 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 15d3
00:08.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h 
(Models 00h-0fh) PCIe Dummy Host Bridge
00:08.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 15db
00:08.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 15dc
00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller 
(rev 61)
00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge 
(rev 51)
00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 15e8
00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 15e9
00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 15ea
00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 15eb
00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 15ec
00:18.5 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 15ed
00:18.6 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 15ee
00:18.7 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 15ef
01:00.0 Display controller: Advanced Micro Devices, Inc. [AMD/ATI] 
Baffin [Radeon RX 460/560D / Pro 450/455/460/555/555X/560/560X] (rev 
c0)
02:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. 
RTL8411B PCI Express Card Reader (rev 01)
02:00.1 Ethernet controller: Realtek Semiconductor Co., Ltd. 
RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 12)
03:00.0 Network controller: Qualcomm Atheros QCA6174 802.11ac Wireless 
Network Adapter (rev 32)
04:00.0 VGA compatible controller: Advanced Micro Devices, Inc. 
[AMD/ATI] Raven Ridge [Radeon Vega Series / Radeon Vega Mobile Series] 
(rev c4)
04:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Device 
15de
04:00.2 Encryption controller: Advanced Micro Devices, Inc. [AMD] 
Device 15df
04:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Device 15e0
04:00.4 USB controller: Advanced Micro Devices, Inc. [AMD] Device 15e1
04:00.6 Audio device: Advanced Micro Devices, Inc. [AMD] Device 15e3
05:00.0 SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA 
Controller [AHCI mode] (rev 61)

xrandr --listdevices두 카드가 모두 인식되었다는 명령을 통해 확인할 수 있습니다.

Providers: number : 2
Provider 0: id: 0x7a cap: 0xf, Source Output, Sink Output, Source 
Offload, Sink Offload crtcs: 4 outputs: 2 associated providers: 1 
name:modesetting
Provider 1: id: 0x44 cap: 0x5, Source Output, Source Offload crtcs: 5 
outputs: 0 associated providers: 1 name:modesetting

그러나 개별 GPU를 사용하여 애플리케이션을 실행하는 경우 성능이 저하될 수 있습니다. 예시가 실행 중입니다.

DRI_PRIME=0 glmark2

그것은 통합 GPU를 사용하고 약 2000fps의 성능을 얻었지만 실행 중입니다.

DRI_PRIME=1 glmark2

약 500fps의 성능을 제공하지만 개별 GPU이기 때문에 그렇지 않습니다.

이는 다음 출력으로 확인할 수 있습니다.

$ DRI_PRIME=0 glxinfo | grep "OpenGL renderer"
OpenGL renderer string: AMD RAVEN (DRM 3.26.0 / 4.18.7- 
200.fc28.x86_64, LLVM 6.0.1)
$ DRI_PRIME=1 glxinfo | grep "OpenGL renderer"
OpenGL renderer string: AMD Radeon (TM) RX Graphics (POLARIS11 / DRM 
3.26.0 / 4.18.7-200.fc28.x86_64, LLVM 6.0.1)

명령의 출력도 첨부했습니다.dmesg | grep amdgpu

[    2.967193] [drm] amdgpu kernel modesetting enabled.
[    2.983335] amdgpu 0000:01:00.0: enabling device (0002 -> 0003)
[    3.049189] amdgpu 0000:01:00.0: VRAM: 4096M 0x000000F400000000 - 
0x000000F4FFFFFFFF (4096M used)
[    3.049190] amdgpu 0000:01:00.0: GTT: 256M 0x0000000000000000 - 
 0x000000000FFFFFFF
 [    3.049332] [drm] amdgpu: 4096M of VRAM memory ready
 [    3.049333] [drm] amdgpu: 4096M of GTT memory ready.
 [    3.140025] [drm:dc_create [amdgpu]] *ERROR* DC: Number of 
 connectors is zero!
 [    3.277785] [drm] Initialized amdgpu 3.26.0 20150101 for 
 0000:01:00.0 on minor 0
 [    3.278060] fb: switching to amdgpudrmfb from EFI VGA
 [    3.278487] amdgpu 0000:04:00.0: VRAM: 1024M 0x000000F400000000 - 
 0x000000F43FFFFFFF (1024M used)
 [    3.278489] amdgpu 0000:04:00.0: GTT: 1024M 0x000000F500000000 - 
 0x000000F53FFFFFFF
 [    3.278533] [drm] amdgpu: 1024M of VRAM memory ready
 [    3.278534] [drm] amdgpu: 3072M of GTT memory ready.
 [    3.468197] amdgpu: [powerplay] dpm has been enabled
 [    3.468480] [drm:construct [amdgpu]] *ERROR* construct: Invalid 
 Connector ObjectID from Adapter Service for connector index:2! type 0 
 expected 3
 [    3.468545] [drm:construct [amdgpu]] *ERROR* construct: Invalid 
 Connector ObjectID from Adapter Service for connector index:3! type 0 
 expected 3
 [    3.525127] fbcon: amdgpudrmfb (fb0) is primary device
 [    3.566614] amdgpu 0000:04:00.0: fb0: amdgpudrmfb frame buffer 
 device
 [    3.572124] amdgpu 0000:04:00.0: ring 0(gfx) uses VM inv eng 4 on 
 hub 0
 [    3.572125] amdgpu 0000:04:00.0: ring 1(comp_1.0.0) uses VM inv 
 eng 5 on hub 0
 [    3.572127] amdgpu 0000:04:00.0: ring 2(comp_1.1.0) uses VM inv 
 eng 6 on hub 0
 [    3.572128] amdgpu 0000:04:00.0: ring 3(comp_1.2.0) uses VM inv 
 eng 7 on hub 0
 [    3.572129] amdgpu 0000:04:00.0: ring 4(comp_1.3.0) uses VM inv 
 eng 8 on hub 0
 [    3.572131] amdgpu 0000:04:00.0: ring 5(comp_1.0.1) uses VM inv 
 eng 9 on hub 0
 [    3.572132] amdgpu 0000:04:00.0: ring 6(comp_1.1.1) uses VM inv 
 eng 10 on hub 0
 [    3.572133] amdgpu 0000:04:00.0: ring 7(comp_1.2.1) uses VM inv 
 eng 11 on hub 0
 [    3.572134] amdgpu 0000:04:00.0: ring 8(comp_1.3.1) uses VM inv 
 eng 12 on hub 0
 [    3.572136] amdgpu 0000:04:00.0: ring 9(kiq_2.1.0) uses VM inv eng 
 13 on hub 0
 [    3.572137] amdgpu 0000:04:00.0: ring 10(sdma0) uses VM inv eng 4 
 on hub 1
 [    3.572138] amdgpu 0000:04:00.0: ring 11(vcn_dec) uses VM inv eng 5 on hub 1
 [    3.572140] amdgpu 0000:04:00.0: ring 12(vcn_enc0) uses VM inv eng 6 on 
hub 1
 [    3.572141] amdgpu 0000:04:00.0: ring 13(vcn_enc1) uses VM inv eng 7 on 
hub 1
[    3.579107] [drm] Initialized amdgpu 3.26.0 20150101 for 0000:04:00.0 
on minor 1
[    5.202665] audit: type=1130 audit(1537458205.475:67): pid=1 uid=0 
auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 
msg='unit=systemd-backlight@backlight:amdgpu_bl1 comm="systemd" 
exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
[   15.013231] amdgpu 0000:01:00.0: GPU pci config reset
[   19.678936] amdgpu: [powerplay] dpm has been enabled
[   26.341565] amdgpu 0000:01:00.0: GPU pci config reset
[   59.533544] amdgpu: [powerplay] dpm has been enabled
[   65.786402] amdgpu 0000:01:00.0: GPU pci config reset
[  167.130594] [drm:generic_reg_wait [amdgpu]] *ERROR* REG_WAIT timeout 
1us * 10 tries - optc1_lock line:628
[  167.130677] WARNING: CPU: 3 PID: 1899 at 
drivers/gpu/drm/amd/amdgpu/../display/dc/dc_helper.c:254 
generic_reg_wait+0xe7/0x160 [amdgpu]
[  167.130704]  snd_hda_codec irqbypass videobuf2_memops crct10dif_pclmul 
btusb videobuf2_v4l2 snd_hda_core btrtl crc32_pclmul btbcm 
videobuf2_common btintel ath snd_hwdep bluetooth snd_seq videodev 
ghash_clmulni_intel snd_seq_device cfg80211 joydev snd_pcm media 
ecdh_generic sp5100_tco snd_timer k10temp i2c_piix4 rtsx_pci_ms rfkill 
snd 
memstick soundcore wmi video pinctrl_amd acer_wireless pcc_cpufreq 
acpi_cpufreq amdkfd amd_iommu_v2 amdgpu chash i2c_algo_bit gpu_sched 
drm_kms_helper rtsx_pci_sdmmc mmc_core ttm crc32c_intel serio_raw drm 
r8169 rtsx_pci mii i2c_hid
[  167.130774] RIP: 0010:generic_reg_wait+0xe7/0x160 [amdgpu]
[  167.130850]  optc1_lock+0xa0/0xb0 [amdgpu]
[  167.130897]  dcn10_pipe_control_lock.part.28+0x4a/0x70 [amdgpu]
[  167.130944]  dcn10_apply_ctx_for_surface+0xee/0x1210 [amdgpu]
[  167.130994]  ? hubbub1_verify_allow_pstate_change_high+0xdd/0x180 
[amdgpu]
[  167.131040]  ? dcn10_verify_allow_pstate_change_high+0x1d/0x240 
[amdgpu]
[  167.131085]  ? dcn10_set_bandwidth+0x275/0x2d0 [amdgpu]
[  167.131129]  dc_commit_state+0x269/0x580 [amdgpu]
[  167.131171]  ? set_freesync_on_streams.part.6+0x4d/0x250 [amdgpu]
[  167.131213]  ? mod_freesync_set_user_enable+0x11f/0x150 [amdgpu]
[  167.131260]  amdgpu_dm_atomic_commit_tail+0x37c/0xd70 [amdgpu]
[  167.131298]  ? amdgpu_bo_pin_restricted+0xd6/0x300 [amdgpu]
[  167.131441]  amdgpu_drm_ioctl+0x49/0x80 [amdgpu]
[  167.493997] [drm:hwss_edp_wait_for_hpd_ready [amdgpu]] *ERROR* 
hwss_edp_wait_for_hpd_ready: wait timed out!
[  992.949753] amdgpu: [powerplay] dpm has been enabled
[  999.815690] amdgpu 0000:01:00.0: GPU pci config reset
[ 1097.603835] amdgpu: [powerplay] dpm has been enabled
[ 1105.675220] amdgpu 0000:01:00.0: GPU pci config reset
[ 1138.629401] amdgpu: [powerplay] dpm has been enabled
[ 1157.490886] amdgpu 0000:01:00.0: GPU pci config reset
[ 1167.629670] amdgpu: [powerplay] dpm has been enabled
[ 1188.641935] amdgpu 0000:01:00.0: GPU pci config reset
[ 1237.003085] amdgpu: [powerplay] dpm has been enabled
[ 1243.811986] amdgpu 0000:01:00.0: GPU pci config reset
[ 1287.684082] amdgpu: [powerplay] dpm has been enabled
[ 1332.291087] amdgpu 0000:01:00.0: GPU pci config reset
[ 1511.066683] amdgpu: [powerplay] dpm has been enabled
[ 1520.167710] amdgpu 0000:01:00.0: GPU pci config reset
[ 1605.023196] amdgpu: [powerplay] dpm has been enabled
[ 1611.134239] amdgpu 0000:01:00.0: GPU pci config reset
[ 1930.739920] amdgpu: [powerplay] dpm has been enabled
[ 2105.711880] amdgpu 0000:01:00.0: GPU pci config reset
[ 2440.536121] amdgpu: [powerplay] dpm has been enabled
[ 2447.470108] amdgpu 0000:01:00.0: GPU pci config reset
[ 2453.329765] amdgpu: [powerplay] dpm has been enabled
[ 2489.324912] amdgpu 0000:01:00.0: GPU pci config reset
[ 3732.604342] amdgpu: [powerplay] dpm has been enabled
[ 3744.199117] amdgpu 0000:01:00.0: GPU pci config reset
[ 3747.717927] amdgpu: [powerplay] dpm has been enabled
[ 3900.960469] amdgpu 0000:01:00.0: GPU pci config reset
[ 4876.333471] amdgpu: [powerplay] dpm has been enabled
[ 4883.356467] amdgpu 0000:01:00.0: GPU pci config reset
[ 5597.531838] amdgpu: [powerplay] dpm has been enabled
[ 5604.423794] amdgpu 0000:01:00.0: GPU pci config reset
[ 5606.860546] amdgpu: [powerplay] dpm has been enabled
[ 5613.824859] amdgpu 0000:01:00.0: GPU pci config reset
[ 5619.323471] amdgpu: [powerplay] dpm has been enabled
[ 5625.588060] amdgpu 0000:01:00.0: GPU pci config reset

이 문제와 관련하여 도움을 주시면 대단히 감사하겠습니다!

편집: 커널 버전 5.0 이상의 새로운 배포판에서는 제대로 작동하지만 약간의 조정이 필요합니다.

예를 들어 DOOM 2016을 부팅하고 rx560x 카드를 사용하려면 다음을 통해 콘솔에서 Steam을 부팅해야 합니다.

DRI_PRIME=1 steam

DRI_PRIME=1명령은 Steam에 개별 GPU를 사용하라고 지시하므로 DOOM을 실행할 때 이를 사용하게 됩니다!

답변1

저는 Arch Linux(mesa-git, llvm-svn, linux 4.18.12(4.19.x 또는 메인라인 4.20rcx 실행 시에도))에서 귀하와 동일한 문제를 겪었습니다. 안정적인 Linux 커널은 아직 GPU에 최적화되어 있지 않습니다. 다행히 임시 해결책이 있습니다. 나는 노력했다리눅스-amd-wip-git(drm-다음-4.21-wip) 최신 amd 패치가 있습니다(이 패치가 있는 다른 커널도 있습니다.리눅스-drm-수리-git(DRM 수리), 귀하의 선택에 따라). 말씀하신 것처럼 많은 게임은 안정적인 코어에서 플레이할 수 없으며 대부분의 게임은 개별 GPU보다 통합 GPU에서 더 잘 실행됩니다. linux-amd-wip-git을 사용하면 통합 GPU보다 개별 GPU의 성능이 향상되었으며, World of Warcraft에서도 Wine 및 Gallium nine/dxvk를 사용하여 약 30fps의 이득을 얻었습니다. 일부 게임은 훨씬 더 나은 성능을 보였으며, 제가 시도한 모든 게임은 더 나은 성능을 보였습니다. 이 패치가 안정적인 Linux에 병합될 때까지 기다리면 됩니다. 마지막으로, 적어도 우리는 그것이 고쳐질 것이라는 것을 알고 있습니다.

편집: 방금 최신 5.0rc7을 테스트했는데 위 커널과 비슷하게 작동합니다. 5.0에서는 이 문제가 해결될 것 같습니다.

답변2

@Haxk20, 아직 테스트하지는 않았지만 적어도 예상대로 실행되도록 테스트했으며 각 기능은 제대로 작동합니다. 이는 Gallium 9 및 DXVK를 통해 Wine을 통해 구현되었으며 저에게는 항상 Vega 8보다 RX560X에서 더 나은 성능을 보였습니다. (기본 Linux 게임에서는 CS:GO만 테스트했으며 실행한 성능도 RX560X에서 더 좋습니다.) . 아마도 Windows 성능의 70-80% 정도일 것입니다. Skyrim은 Windows만큼 잘 실행되지 않을 수 있지만 기본 Linux 게임이 아니기 때문에 이해할 수 있다고 생각합니다. 또한, glxgears는 게임에서 보는 것과 다르게 보이기 때문에 이상합니다. 나는 당신과 동일한 결과를 얻었으며 확인할 수 있습니다. 여전히 몇 가지 문제가 있지만 적어도 업데이트를 통해 점점 좋아지고 있습니다.

답변3

메인라인 커널 저장소와 linux-amd-wip-git에 전송된 Linux 4.21 패치를 시도했지만 불행하게도 내 VEGA 8은 여전히 ​​RX560X보다 더 나은 성능을 보였습니다. 동일한 노트북을 사용하면 Terraria는 4.21에서 RX560X보다 VEGA 8에서 훨씬 더 잘 실행되며 linux-amd-wip-git에서도 마찬가지입니다. RX560X는 Skyrim을 최대 60fps로 실행해야 하지만 linux-amd-wip-git에서도 Ultra에서 재생할 수 없고 고속으로 실행해야 하는데 여전히 60fps에 도달할 수 없습니다.

glxgears는 VEGA8의 프레임 속도가 약 7000fps이고 RX560X의 프레임 속도가 약 3500fps라고 보고합니다.

@Martin Otto rx560x는 더 집중적인 게임에서 더 나은 성능을 발휘하지만 실행하기 어렵지 않은 게임은 vega8에서 더 잘 실행되고 실제로 더 잘 실행됩니다. 하지만 이것은 단일 채널 RAM 때문인 것 같습니다.

관련 정보