Ir al contenido
Shiba87

Feral Game Mode. Optimizar el rendimiento del equipo para jugar en GNU/Linux

Recommended Posts

rovzJNT.jpg

 

 

Feral Interactive, la empresa británica detrás de muchos de los juegos portados a GNU/Linux durante la última década amplia su lista de herramientas para jugadores con un nuevo software para mejorar el rendimiento de nuestro equipo a la hora de jugar a cualquier titulo.

 

GameMode lleva a cabo una serie de cambios en la configuración del sistema para optimizar su desempeño en lo que respecta a juegos de manera temporal, volviendo de nuevo al estado inicial una vez hayamos terminado de jugar.

 

El diseño parte de una abstracción clara entre el demonio en el lado del equipo anfitrión (gamemoded y libgamemode) y las bibliotecas de juego del lado cliente (libgamemodeauto y gamemode_client.h), lo que permite un uso seguro del optimizador, sin tener que preocuparse de si el demonio está instalado y/o ejecutándose

Esto también significa que mientras las bibliotecas del lado anfitrión dependen inicialmente de systemd para el intercambio de mensajes con el demonio, también es perfectamente posible implementar otros métodos internos para los mismos clientes.

 

Principalmente, GameMode se encarga de solucionar los problemas de rendimiento derivados de la transición a reguladores de la CPU powersave u ondemand en procesadores Intel y AMD y su impacto a la hora de jugar, pero la intención es que siga expandiéndose su campo de acción para que abarque todas las áreas que permitan maximizar el rendimiento y, con él, mejorar la experiencia del usuario a la hora de jugar en GNU/Linux.

 

Instalación

 

El proyecto se encuentra aún en una etapa preliminar de desarrollo, así que será muy complicado encontrar paquetes en los repositorios de nuestra distribución, aunque esperemos que no tarden en aparecer.

Mientras tanto, tendremos que ponernos manos a la obra y cumplir con algunos requisitos previos para poder usarlo:

 

 

Dependencias


En general, las dependencias necesarias incluyen meson, pkg-config, las bibliotecas de desarrollo de systemd y ninja-build.


 

Debian

aptitude install meson libsystemd-dev pkg-config ninja-build


ArchLinux
pacman -S meson systemd ninja


Fedora
dnf install meson systemd-devel pkg-config



Instalar e iniciar el demonio

Tendremos que descargar el código desde el repositorio de git de Feral e instalar todos los componentes de GameMode.

Afortunadamente, han incluido un script que automatiza todo el trabajo de compilado e instalación, por lo que el proceso apenas nos llevará un par de líneas y sentarnos a esperar a que termine.

Las rutas de instalación de los componentes incluyen destinos dentro de /usr y /etc, por lo que eventualmente necesitaremos permisos de root para poder colocarlas en su lugar correspondiente:

 git clone https://github.com/FeralInteractive/gamemode.git 
 cd gamemode 
 ./bootstrap.sh

Aunque los pasos a seguir manualmente tampoco serían nada del otro mundo:

meson --prefix=/usr build -Dwith-systemd-user-unit-dir=/etc/systemd/user
cd build
ninja
sudo ninja install
systemctl --user daemon-reload
systemctl --user enable gamemoded
systemctl --user start gamemoded
systemctl --user status gamemoded

 

Lanzar  juegos en GameMode

Para lanzar un juego forzando el uso de Game mode tendremos que hacerlo de la siguiente manera:

LD_PRELOAD=/usr/\$LIB/libgamemodeauto.so ./EJECUTABLE_JUEGO

 

O, si se trata de un juego presente en nuestra biblioteca de Steam, modificar sus parámetros de lanzamiento incluyendo lo siguiente:

LD_PRELOAD=$LD_PRELOAD:/usr/\$LIB/libgamemodeauto.so %command% 

 

 

Configuración

 

La configuración del demonio puede ser modificada incluyendo un archivo gamemode.ini dentro de la ruta  /usr/share/gamemode/, que por defecto se encuentra vacía.

 

Aunque de momento no es mucho lo que podamos configurar, en el ejemplo  mostrado en github tenemos, al menos, dos posiblidades:

  • blacklist, para definir la lista de juegos que NO serán ejecutados en GameMode.
  • whitelist, para el caso opuesto, definir los juegos que serán ejecutados en GameMode, ignorando cualquier otro que NO aparezca en la lista.

 

Por ejemplo

Cita
[filter]
; Gamemode will always reject anything in the blacklist
blacklist=HalfLife3
glxgears
steam
 
; If "whitelist" entry has a value(s)
; gamemode will reject anything not in the whitelist

;whitelist=RiseOfTheTombRaider

 

 

 

Compartir este post


Enlace al post
Compartir en otros sitios

Llego un poco tarde, pero, ¿Sólo funciona con los juegos de Feral, o al añadir la linea en los parámetros de Steam valdría para cualquiera? ¿Cómo compruebo que funciona?😅😅

Saludos...

Editado por Kaleb

Compartir este post


Enlace al post
Compartir en otros sitios

Tendría que valer para cualquiera y, dado que lo que se modifica es el governor, en cuanto veas que la CPU empieza a decir: "¡Por favor! No más. ¡Mátame ya! Pero no más..."  es posible que esté funcionando.
Eso o comprobar que, efectivamente el governor ha cambiado con cualquier herramienta tipo

cpufreq-info

O directamente

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

 

Compartir este post


Enlace al post
Compartir en otros sitios

No es que sea muy cómodo ni de andar por casa estar cambiando manualmente el governor cada vez que ejecutas un juego, que se haga de forma automática ahorra un buen trabajo :sweat:

Y eso es de momento en la versión 0.1 (o la numeración que lleve, que ni idea), se incluirán más optimizaciones y plugins/scripts más adelante. Poco a poco irán añadiéndole funciones.
Por ahora, con la tonterías del governor parece que algo han conseguido rascar algunos FPS en muchos juegos.

Compartir este post


Enlace al post
Compartir en otros sitios

La verdad es que si que es más cómodo, voy a probarlo a ver que tal.

 

Lo acabo de probar y no me funciona, estoy probando un juego de Steam llamado Rust.

 

El servicio está instalado y corriendo:

systemctl --user status gamemoded

● gamemoded.service - gamemoded
   Loaded: loaded (/etc/systemd/user/gamemoded.service; enabled; vendor preset: 
   Active: active (running) since Sat 2018-05-12 15:39:25 WEST; 16min ago
 Main PID: 970 (gamemoded)
   Status: "GameMode is ready to be activated."
   CGroup: /user.slice/user-1000.slice/user@1000.service/gamemoded.service
           └─970 /usr/bin/gamemoded -l

Abro Steam y en las opciones de lanzamiento del juego añado:

LD_PRELOAD=$LD_PRELOAD:/usr/\$LIB/libgamemodeauto.so %command%

Lanzo el juego y en un emulador de terminal escribo:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

Y me muestra ondemand

 

Mi equipo:

Debian testing
AMD FX6300
NVIDIA GTX960

Por cierto copiando lo de "git clone..." desde el foro me daba error, lo escribí manualmente, la dirección la copie desde Firefox y funcionó, hice lo mismo con lo que hay que añadir a Steam por si acaso pero no resultó.

Editado por mijailbellum

Compartir este post


Enlace al post
Compartir en otros sitios

osea, que te cambia el gobernador a "performance"????

ahora en los requisitos minimos de los juegos de steam de linux, van a tener que poner un nuevo apartado (refrigeracion minima cobre) o (refrigeracion liquida recomendada)... xD

Compartir este post


Enlace al post
Compartir en otros sitios

He hecho la prueba y al compilarlo de nuevo a mí también se me ha jodido :llora:

 

Los últimos cambios que han hecho no han sido muy acertados por lo que parece

gamemoded -r
Cita

gamemode request failed: Could not call method on bus: No route to host

dbus-monitor

signal time=1526220122.461505 sender=org.freedesktop.DBus -> destination=(null destination) serial=5 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameOwnerChanged


   string ":1.22"
   string ""
   string ":1.22"
signal time=1526220122.461520 sender=org.freedesktop.DBus -> destination=:1.22 serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired
   string ":1.22"
method call time=1526220122.461689 sender=:1.22 -> destination=com.feralinteractive.GameMode serial=2 path=/com/feralinteractive/GameMode; interface=com.feralinteractive.GameMode; member=RegisterGame
   int32 1690
error time=1526220122.461712 sender=org.freedesktop.DBus -> destination=:1.22 error_name=org.freedesktop.DBus.Error.ServiceUnknown reply_serial=2
   string "The name com.feralinteractive.GameMode was not provided by any .service files"
signal time=1526220122.462116 sender=org.freedesktop.DBus -> destination=:1.22 serial=6 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameLost
   string ":1.22"
signal time=1526220122.462144 sender=org.freedesktop.DBus -> destination=(null destination) serial=7 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameOwnerChanged
   string ":1.22"
   string ":1.22"
   string ""

 

Y parece que no estamos solos  :sweat:

https://github.com/FeralInteractive/gamemode/issues/8

Editado por Shiba87
Buggazo

Compartir este post


Enlace al post
Compartir en otros sitios

Registra una cuenta o conéctate para comentar

Debes ser un miembro de la comunidad para dejar un comentario

Crear una cuenta

Regístrate en nuestra comunidad. ¡Es fácil!

Registrar una cuenta nueva

Iniciar Sesión

¿Ya tienes cuenta? Conéctate aquí.

Iniciar Sesión

×