RE-BAR ON = FPS drops

Senhores, primeiramente: Boa noite. É um prezer estar fazendo parte desse fórum de pinguins!

Dito isso, preciso de uma ajudinha… É um problema que já “resolvi”, mas eu adoraria consertar de verdade esse problema.

Jogo num Kubuntu 25.04 e sou muito feliz. Consigo jogar muita coisa com FPS alto, mais alto ainda com o Above 4g decoding habilitado. Mas notei estranhezas quando resolvo ativar o ResizebleBAR na minha BIOS

Sempre que o RE-BAR está ativado, o FPS dos meus jogos cai pela metade, às vezes mais, dependendo do jogo.

Levei dois meses para perceber que era o RE-BAR. Desativei-o na BIOS (O linux aumenta o BAR de qualquer jeito, desde que o Above 4g decoding esteja ativado, então não liguei na hora) e agora tudo corre bem.

Mas, ocasionalmente, eu uso o Windows para jogar alguns jogos cujo anticheats não me permitem no Linux e agora o problema se repete inversamente. Perco muitos FPS no Windows por estar com o RE-BAR desativado.

Será que alguém passou por algo parecido? E é uma sinuca de bico, se mantenho o RE-BAR desativado, perco FPS no Windows. Se resolvo ativar, o Linux vai performar mal.

Claro - “Mude o status do RE-BAR na bios toda vez que trocar de sistema” - Até pode ser, mas é meio exaustivo ficar fazendo isso.

Se alguém tiver uma idea de como “Ignorar o RE-BAR da BIOS” no linux, ou ativar o RE-BAR no windows sem mudar nada na BIOS, ficarei grato.

Hardware:

CPU: AMD Ryzen 7 3700X

GPU: AMD Radeon RX 6600

MB: AsRock A320M-HD R4.0

RAM: 32GB pentes genéricos da China

1 curtida

Seja bem-vindo ao fórum @GERALTdTATUI!
Achei curioso o seu caso, fui pesquisar um pouco e acabei notando que é mais comum do que imaginei.

Como conseguiu perceber pelos seus testes, não é um defeito de hardware, mas sim de como o Resizable BAR (RE-BAR/SAM) é implementado pelos drivers e jogos.

Existem relatos bem parecidos, como no GitLab do OpenMW, onde ativar o recurso no Linux derruba o FPS pela metade (igual acontece contigo), e também no Reddit r/AMDHelp, mostrando que no Windows alguns títulos sofrem com baixo uso da GPU e quedas de desempenho.

Em resumo: alguns jogos se beneficiam do RE-BAR, outros não e a solução prática é testar título por título, infelizmente. Deixar ativado nos que mostram ganho real e desativar nos que apresentam queda ou instabilidade. Se puder, manter BIOS e drivers atualizados ajuda bastante, mas por enquanto não existe um “conserto definitivo”, já que é uma questão de compatibilidade de software.

3 curtidas

Realmente, vou consultar as theads que você mandou…

Até então, ativar o RE-BAR, dentro do linux, degrada meu desempenho no geral. Metro 2033 redux, junto com alguns jogos antigos, parecem não parecem ser afetados pela presença do RE-BAR, mas jogos como Dying Light e, principalmente, Bulletstorm: Full Clip Edition perdem metade do FPS com o RE-BAR ativado.

Mas, até então, desativar o RE-BAR (mantendo o above 4g docoding ativado) não afetou negativamente a experiência de nenhum jogo. Posso estar enganado, mas tem sido assim até então.

Quem sabe alguma futura atualização de Kernel solucione essa pendência. Mas convenhamos, eu sou a excessão da excessão kkkkk.

PS: talvez seja coisa do DXVK ou VK3D. Vi nesse tópico que o VK3D não trabalha direito com o RE-BAR/SAM ativo e que o parâmetro VKD3D_CONFIG=no_upload_hvv pode ajudar. Mas, no meu caso, o Bulletstorm: Full Clip Edition roda usando o DXVK. Derrotado mais uma vez kkk

1 curtida

Dependendo do jogo pode ser possível rodar com WineD3D. Nas últimas versões do proton (9 ou acima) tá bem decente a implementação, poucos bugs (mas mais que DXVK). De repente melhora com o parâmetro PROTON_USE_WINED3D=1 e forçando o jogo a rodar em dx11. Mas enfim, só uma gambiarra enquanto tiver esses problemas.

Vou tentar fazer isso. Muito obrigado

Só pra deixar registrado aqui. Tentei a recomendação do @Deleterium de tentar rodar o jogo com WINED3D, mas, infelizmente, só degradou mais ainda a experiência.

Utilizar o RE-BAR me dava metade da performance e utilizar o WINED3D dava metade da metade. Fiz um gráfico pra ilustrar os resultados:

Jogo/Condição FPS mínimo FPS médio FPS máximo Stuters
Bulletstorm (RE-BAR ON DXVK) 50 80 150 Com Stuters
Bulletstorm (RE-BAR ON WINED3D) 22 55 68 Muitos Stuters
Bulletstorm (RE-BAR OFF DXVK) 145 270 423 Leves Stuters
Bulletstorm (RE-BAR OFF WINED3D) 72 90 199 Alguns Stuters

A melhor experiência segue sendo o jogo rodando com DXVK e RE-BAR desativado. Enquanto a pior experiência foi ao utilizar o RE-BAR junto com o WINED3D.

E, logicamente, com já registrado aqui, o jogo rodando normalmente com o RE-BAR desativado tem um ganho absurdo de performance.

2 curtidas

Obrigado por compartilhar os resultados @GERALTdTATUI !!!

Só para confirmar: no seu caso, o melhor resultado no Linux você obteve com o Above 4g decoding ativado e o Resizable BAR desativado?

Tenho uma placa RX 6600 aqui e minha BIOS tem essas opções. Vou fazer uns experimentos também para verificar.

Exatamente @cfgnunes, Above 4g decoding ativado e RE-BAR/SAM desativado.

Pelo que vi, a brisa do Linux é que ele “nativamente” ativa o RE-BAR se o above 4g decoding estiver ativado. Aí ativar o RE-BAR no Linux gera esse conflito.

Não sei bem a brisa no final da contas kkkkk mas na minha experiência é isso kkkkk

1 curtida

Fala meu caro @GERALTdTATUI!

Procurei aqui algum parâmetro de kernel que permitisse desativar ou ignorar o Resizable BAR via software, mas não encontrei nada na documentação:
https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html

Olhei os parâmetros do driver amdgpu e também não encontrei nada…


Fiz alguns testes aqui para comparar as diferentes configurações de BIOS. Usei o glmark2-wayland e rodei tudo nesta máquina:

Placa mãe: Gigabyte B560 DS3H AC
CPU: Intel i5-10400F  @ 4.300GHz
GPU: AMD Radeon RX 6600
MEM: 16 Gb
OS: Debian GNU/Linux 13 (trixie) x86_64
DE: GNOME 48.4
GL: 4.6 (Compatibility Profile) Mesa 25.0.7-2
Resolução da tela (HDMI): 3840x2160

Comando utilizado:

glmark2-wayland --fullscreen

Resultados (valor médio de 5 execuções para cada combinação):

Above 4g decoding Resizable BAR glmark2 Score
Desativado Desativado 7702
Ativado Desativado 7706
Ativado Ativado 7735

Essas são as capacidades de Resizable BAR da nossa placa RX 6600:

sudo lspci -vv | grep -i "Resizable BAR" -A2

	Capabilities: [200 v1] Physical Resizable BAR
		BAR 0: current size: 8GB, supported: 256MB 512MB 1GB 2GB 4GB 8GB
		BAR 2: current size: 2MB, supported: 2MB 4MB 8MB 16MB 32MB 64MB 128MB 256MB

Depois alterei as configurações da BIOS e verifiquei como as regiões de memória foram ajustadas:

Com o Above 4g decoding e Resizable BAR desativados:

sudo lspci -s $(lspci | grep VGA | cut -d" " -f1) -vv | grep "64-bit"

	Region 0: Memory at 40000000 (64-bit, prefetchable) [size=256M]
	Region 2: Memory at 50000000 (64-bit, prefetchable) [size=2M]

Com o Above 4g decoding ativado:

sudo lspci -s $(lspci | grep VGA | cut -d" " -f1) -vv | grep "64-bit"

	Region 0: Memory at 4200000000 (64-bit, prefetchable) [size=8G]
	Region 2: Memory at 4100000000 (64-bit, prefetchable) [size=2M]

Aqui, a região 0 foi de 256M para 8G.

Com o Above 4g decoding ativado e Resizable BAR ativado:

sudo lspci -s $(lspci | grep VGA | cut -d" " -f1) -vv | grep "64-bit"

	Region 0: Memory at 4000000000 (64-bit, prefetchable) [size=8G]
	Region 2: Memory at 4200000000 (64-bit, prefetchable) [size=256M]

Aqui, a região 2 foi de 2M para 256M.


Nesses testes, a combinação que teve o melhor desempenho foi ativar tanto o Above 4G Decoding quanto o Resizable BAR. Curioso que ficou diferente do resultado que você teve…

Pesquisei mais um pouco e vi que isso também acontece bastante no Windows para alguns jogos:

https://www.reddit.com/r/CoDCompetitive/comments/1iv1e9d/resizable_bar_is_possibly_killing_your_frames/

https://www.reddit.com/r/intel/comments/11yhxo2/resizablebar_causing_massive_slow_downs_in/

É o que o nosso amigo @thespation disse. Alguns jogos se beneficiam, outros não…

1 curtida

Caramba, muito curiosa toda a pesquisa que você fez usando dados mais sintéticos. Não segui tão afundo sobre… E suas pesquisas seguem o que é intuitivo, ativar o RE-BAR deveria aumentar o desempenho.

Meus testes se resumiam ao Jogo Bulletstorm: Full Clip, o jogo com reduções de desempenho mais agressivos (Tanto no Windows quanto no Linux).

Procurei/perguntei no chatgpt sobre parâmentros de kernel para tentar ignorar o RE-BAR, também fui infortuno nessa busca.

A conclusão de que o benefício do RE-BAR é condicional me foi reforçada ontem, jogando Rainbow 6 no Windows. Rodei o jogo em torno dos 80FPS, achei que o FPS baixo fosse pela falta do RE-BAR. Um reinicio depois, com o RE-BAR ativado, nada mudou. Aí me dei conta que o jogo, no ULTRA, trabalhava os limites da placa kkkk

Mas vou tentar testes sintéticos no meu sistema e confirmar os valores que você obteve.

PS: Se tiver recomendação de como posso testar isso (quais ferramentas usar) tanto no Windows quanto no Linux

1 curtida