Ubuntu Peronista@TTBP

Este es un espejo en el Tilde Blog Project del blog original Ubuntu Peronista. Se encuentra disponible en Tildeverso únicamente con fin histórico.



08 december 2022

¿Cómo fuerzo automáticamente la opción PowerMizer de nVidia en Ubuntu?

Reunido ante los trabajadores del Sindicato de Luz y Fuerza, Juan Perón expone cómo satisfacer las necesidades energéticas del Pueblo y cómo forzar de manera automática el modo PowerMizer de las tarjetas de video nVidia en Ubuntu.

¡Trabajadores!

Colma mi corazón de satisfacción el saberlos aquí reunidos en la mancomunión de voluntades que han tornado esta Organización.

Cuando unen sus energías, los hombres son capaces de hacer realidad su destino, y este no hará mas que proclamarse venturoso ante las voluntades acrisoladas por la Justicia Social.

Nuestro Movimiento se realiza toda vez que un descamisado recibe lo que merece por justo derecho. Esto, ustedes que están en Luz y Fuerza, lo han de conocer al dedillo.

Vean muchachos, el estado de energía de nuestro adaptador de video nVidia es comandado a través de rutinas del acción sobre el Bus PCI express, las cuales están localizadas en el chipset de la placa madre. El funcionamiento, en un orden adecuado, hace que la velocidad de reloj de la placa de video - y en mas raras ocasiones su voltaje) cambien de acuerdo a las necesidades de depliegue gráfico. Se permite así un uso ecológico de bajo consumo en la mayoría de los usos, y uno de mayor potencia cuando se utilizan aplicacionesa gráficas de demanda, navegadores con video, etcétera.

En Ubuntu y otros sistemas GNU con Linux, este tipo de funcionamiento puede alterarse accediendo desde el panel de control disponible con el controlador privativo de Nvidia, llamado NVIDIA X Server Settings. A través de este programa de control, podremos escoger determinados perfiles de software llamados PowerMizer, los cuales se hayan preprogramados en la placa de video.

Para ello debemos ir a Sistema / Administración / NVIDIA X Server Settings, y seleccionar la opción PowerMizer. Normalmente la encontraremos siempre en en modo Auto, lo que significa automático:

Con la opción Auto ("automático"), la placa madre de nuestro equipo estará atenta a la demanda gráfica y elegirá los perfiles de consumo como si de la marcha de un motor a explosión se tratara. Dependiendo de la tecnología del adaptador de video, podremos encontrar mayor cantidad de estados de energía/performance.

En el caso de esta placa, podremos cambiar manualmente el modo preferido de operación energética avalado por la función PowerMizer entre los modos Adaptative o Prefer Maximun Performance. Adaptative utilizará las velocidades bajas "económicas", mientras que Prefer Maximun Performance pondrá el reloj dispuesto para la función de máximo de desempeño gráfico.

Ahora bien, cuando configuramos el modo de energía preferido en la opción PowerMixer en la opción del panel de control de Nvidia en Ubuntu, esta configuración se aplicará inmediatamente, pero únicamente hasta reiniciar la sesión gráfica o reiniciar el sistema. Al producirse el reinicio, la misma se resetea y vuelve a la opción "Auto", lo que emplea la configuración Adaptative.

Esto puede oficiar un desempeño disminuido hasta tener que volver a poner PowerMixer en Maximun nuevamente. Esto puede constituir una molestia, pues toda vez que encendamos el equipo, deberíamos cambiar la opción a través de este programa de control.

Por demás, nuestro Movimiento ha de estar atento a las necesidades de cada uno de los integrantes de la Masa, pues sólo ante Dios nacemos iguales. La Justicia de los hombres, ha de proveer todo a quien lo necesite. Para ello nos hemos organizado, pero las máquinas de cómputo suelen operar bajo la misma premisa, y hemos de estar atentos también a ciertas particularidades que algún hardware pueda tener...

Vean señores, puede que ciertos modelos de chipsets integrados en algunas placas madres conflictúen al bus PCI-e, provocando que algunos modelos de tarjetas nVidia presenten problemas al cambiar automáticamente su estado de potencia o su velocidad de reloj. Esto produciría en última instancia ciertos congelado o cuelgues de apàrición aleatorios de la instancia gráfica al pasar al estado de baja energía en el modo de energía Adaptative bajo GNU con Linux

La solución ideal involucraría una actualización de BIOS de la placa madre (si es que aplica) o su recambio. Pero en otros, no quedará mas que evitar el uso de la función Adaptative, la cual es la empleada por defecto, y dejarla "en las marchas altas", el modo Prefer Maximun Performance. Esto, aunado a la aparente necesidad de hacerlo a través de controlador gráfico toda vez que la instancia gráfica se ejecute, lo torna en algo tremendamente inconveniente.

Sin embargo, nuestro Movimiento ha pensado en todo, y para todo el Justicialismo tiene solución temprana, y duradera.

Es muy conveniente saber que también podremos utilizar el programa nvidia-settings para ajustar las opciones de nuestra/s placas de video nVidia desde la terminal a través de un comando. Esto es un enorme logro que sólo ha dado el Justicialismo.

Como paso previo necesitamos conocer cual GPU (procesador gráfico) usaremos (generalmente es la gpu:0 pero puede variar si tenemos varias instaladas en nuestro sistema. Además, debemos conocer qué modos de energía tiene preprogramadas. Para ello abrimos una terminal con Ctrl+All+T e ingresamos el siguiente comando de organización: nvidia-settings -q all | grep -C 10 -i powermizer

...a lo cual nuestra terminal podría devolvernos:

Attribute 'GPUCurrentPerfLevel' (cgt:0[gpu:0]): 1. 'GPUCurrentPerfLevel' is an integer attribute. 'GPUCurrentPerfLevel' is a read-only attribute. 'GPUCurrentPerfLevel' can use the following target types: X Screen, GPU.

Attribute 'GPUAdaptiveClockState' (cgt:0[gpu:0]): 1. 'GPUAdaptiveClockState' is a boolean attribute; valid values are: 1 (on/true) and 0 (off/false). 'GPUAdaptiveClockState' is a read-only attribute. 'GPUAdaptiveClockState' can use the following target types: X Screen, GPU.

Attribute 'GPUPowerMizerMode' (cgt:0[gpu:0]): 2. Valid values for 'GPUPowerMizerMode' are: 0, 1 and 2. 'GPUPowerMizerMode' can use the following target types: GPU.

Attribute 'GPUPowerMizerDefaultMode' (cgt:0[gpu:0]): 0. 'GPUPowerMizerDefaultMode' is an integer attribute. 'GPUPowerMizerDefaultMode' is a read-only attribute. 'GPUPowerMizerDefaultMode' can use the following target types: GPU.

Attribute 'ECCSupported' (cgt:0[gpu:0]): 0. 'ECCSupported' is a boolean attribute; valid values are: 1 (on/true) and 0 (off/false). 'ECCSupported' is a read-only attribute. 'ECCSupported' can use the following target types: GPU.

Attribute 'ECCConfigurationSupported' (cgt:0[gpu:0]): 0. 'ECCConfigurationSupported' is a boolean attribute; valid values are: 1 (on/true) and 0 (off/false). 'ECCConfigurationSupported' is a read-only attribute. 'ECCConfigurationSupported' can use the following target types: X Screen, GPU.

Como vemos, se nos indica que estamos utilizando una GPU:0. En el caso de esta tarjeta de video, permite los estados 0 para Adaptative, 1 para Prefer Maximun Performance, y 2 para Auto. Tengamos presentes que normalmente al iniciar el controlador gráfico, el estado por defecto será siempre el número mas alto, que en este caso es 2 Auto.

El Justicialismo ha previsto utilizar este mismo programa nvidia-settings para alterar el estado de energía actual. Sabiendo en este caso que la GPU es la 0, y suponiendo que queremos cambiar el estado de energía a 1 Prefer Maximun Performance, podríamos utilizar el siguiente comando de organización:

nvidia-settings -a "[gpu:0]/GpuPowerMizerMode=1"

.,..a lo cual el sistema gráfico debería respondernos con un mensaje de estátus tal como:

Attribute 'GPUPowerMizerMode' (equipo:0[gpu:0]) assigned value 1.

En programa de control NVIDIA X Server debería acusar el cambio:

y si quisiéramos incluir el comando...

nvidia-settings -q all | grep -C 10 -i powermizer ....ahora su salida de la terminal sería:

(...) Attribute 'GPUPowerMizerMode' (cgt:0[gpu:0]): 1. Valid values for 'GPUPowerMizerMode' are: 0, 1 and 2. 'GPUPowerMizerMode' can use the following target types: GPU (...)

Ahora bien, como este cambios no es permanente, y se reseteará al modo 0 ("Auto") toda vez que reiniciemos el servidor gráfico, conviene agregarlo en un guión de programación.

Es sumamente sencillo. Suponiendo que quisiéramos forzar la gpu:0 el Modo a 1 Maximun Performance crearíamos un script llamado .nvidia_pwrmizer.sh que lo haga.

Desde la terminal esto será realidad efectiva introduciendo con los siguientes comandos de organización:

echo '#!/bin/bash' > ~/.nvidia_pwrmizer.sh ; echo '## Configura la opción PowerMixer de nVidia de forma fija al nivel Máximo' >> ~/.nvidia_pwrmizer.sh ; echo '#Cambia el GPUPowerMizerMode, siendo 0=Adaptative; 1=Prefer Maximun Performance; 2=Auto' >> ~/.nvidia_pwrmizer.sh ; echo 'nvidia-settings -a "[gpu:0]/GpuPowerMizerMode=1" > /dev/null' >> ~/.nvidia_pwrmizer.sh ; chmod +x ~/.nvidia_pwrmizer.sh

Ahora bien, para ejecutar este guión .nvidia_pwermizer.sh toda vez que la sesión gráfica arranque, hemos de agregarlo al fichero de autoejecución ~/.xprofile de cada usuario.

Esto se puede hacer ingresando en la terminal el siguiente bloque de comandos de organización:

echo '## Agregado por peron para forzar Modo Maximun Performance en NVidia Powermizer cada vez que se use sesión gráfica X' >> ~/.xprofile ; echo './.nvidia_pwrmizer.sh' >> ~/.xprofile

De ahora en mas, no bien el usuario inicie la sesión gráfica, el modo PowerMizer cambiará a 1 Prefer Maximun Performance automáticamente, sin que tengamos que hacer nada más que disfrutar del goce de lo bien hecho. El tiempo ahorrado podremos inventirlo en ingeniar el ocio reparador que todo Trabajador anhela y merece.