A Feral Interactive lançou o otimizador , implementado como um processo em segundo plano que altera dinamicamente várias configurações do sistema Linux para alcançar o máximo desempenho em aplicativos de jogos. O código do projeto foi escrito em C e sob a licença BSD.
para jogos, é recomendável usar a biblioteca especial libgamemode, que permite solicitar a ativação de determinadas otimizações durante a execução do jogo, que não são aplicadas por padrão no sistema. Também está disponível uma versão da biblioteca para executar o jogo em modo de otimização automática (carregando libgamemodeauto.so através de LD_PRELOAD ao iniciar o jogo), sem a necessidade de modificar o código do jogo. O controle das otimizações pode ser feito por meio de um arquivo de configuração.
Por exemplo, com o GameMode, é possível desativar os modos de economia de energia, alterar os parâmetros de alocação de recursos e agendamento de tarefas (governador de CPU e SCHED_ISO), reorganizar as prioridades de entrada/saída, bloquear a ativação do protetor de tela, ativar vários modos de alto desempenho na GPU NVIDIA e AMD, realizar overclocking na GPU NVIDIA, e executar scripts com otimizações definidas pelo usuário.
Na versão 1.5, foi adicionado a troca dinâmica do regulador de modos de CPU (CPU governor) para processadores Intel com GPU integrada, caso o uso do modo "performance" resulte em queda de desempenho do subsistema gráfico sob alta carga no GPU. Nesse caso, mudar para o modo "powersave" permite reduzir o consumo de energia da CPU e liberar mais recursos do GPU (CPU e GPU têm um orçamento de energia compartilhado e a prioridade de alocação de recursos para a CPU leva à redução da frequência do GPU). No CPU i7-1065G7, a otimização proposta permite aumentar o desempenho do jogo Shadow of the Tomb Raider em 25-30%.
No GameMode 1.5, também foi introduzido um novo conjunto de APIs D-Bus, que aplica o mecanismo ‘pidfd’ para lidar com a situação de reutilização de PID (pidfd está vinculado a um processo específico e não muda, enquanto o PID pode ser associado a outro processo após a finalização do processo atual associado a esse PID).
Fonte: opennet.ru
