Encuesta comunitaria Java EE 8

Duke14
Por si aun no lo han notado, se encuentra disponible la segunda parte de la encuesta comunitaria para darle forma al próximo lanzamiento de Java EE.

¿Piensan que Oracle no esta llevando por buen rumbo Java EE?
¿Han pensado que JPA debería aumentar su soporte a bases de datos NoSQL?
¿Les gustaría un mayor soporte a Node.js?
¿Tienen en mente alguna mejora para trabajar con Java EE en la nube?

¡Es momento de expresarse!

De acuerdo a los reportes de Oracle la primera etapa tuvo una respuesta abrumadora . . . sin embargo aun están a tiempo de participar en ambas partes de la encuesta.

 

[QuickTip] Generar un archivo de configuración .config a partir del kernel en ejecución

tux

El archivo .config (generalmente ubicado en /usr/src/linux/.config) es el encargado de almacenar el listado de piezas (módulos) a ser compiladas e incluidas o enlazadas hacia nuestro kernel. Dicho de otra forma, es el mapa de ADN de nuestro Linux y se vuelve un archivo fundamental que debe ser resguardado para reutilizarlo a la hora de actualizar nuestro sistema.

No entanto, en el caso que este archivo desaparezca o un rm se ejecute a la ligera, es posible dotar a nuestro kernel con la capacidad de exponer hacia el usuario las configuraciones con las que fue creado.

Paso 1 – Habilitar la creación de .config a partir de un kernel en ejecución

Para que un kernel en ejecución pueda «exponer su ADN» primero tiene que tener esta capacidad.  Así, la primera vez que compilemos nuestro kernel debemos de habilitar la opción CONFIG_IKCONFIG_PROC disponible en:

General setup
│ -> Kernel .config support (IKCONFIG [=y])

 Paso 2 – Generar un archivo .config

Si en algún momento necesitamos ver y salvar la configuración de nuestro kernel, basta con utilizar zcat y un redirect

1
zcat /proc/config.gz > .config

Así, tendremos siempre un respaldo vivo de la configuración de nuestro kernel :).

Como instalar Gentoo en un telefono Nexus 5

android
Recientemente llego a mis manos un teléfono Nexus 5 que cuenta con hardware bastante interesante (y una bocina que convierte a Manowar en zarabanda locochona) por lo que decidí aprovecharlo e instalarle la mejor distribución Linux del universo, Gentoo Linux.

Para instalar Gentoo en un teléfono con Android, es necesario apoyarse de un proyecto desarrollado durante el GSOC-2013 denominado Gentoo RAP. RAP es una variante de Gentoo prefix que permite utilizar los ejecutables de Gentoo en paralelo a los ejecutables de Android en una ruta diferente a /, con lo que es posible utilizar Gentoo sin todas las limitaciones de un chroot como el que se crea con LinuxOnAndroid y que dicho sea de paso no soporta Gentoo.

La instalación en Android puede realizarse de dos formas, 1) haciendo bootstrap (compilando un stage desde 0 en el dispositivo)  o 2) descargando un pre-compilado para ARM-v7 como se indica en la wiki. En mi caso utilicé el segundo método, el cual traduzco/comento en esta guiá.

1) Prerrequisitos
*  Asegurarse que tenemos el bootloader liberado y con acceso root (acá dos guiás para obtener root);
* Instalar alguna implementación de busybox (yo recomiendo esta);
* De preferencia utilizar superuser como administrador de root;
* Habilitar el acceso ssh al dispositivo (recomiendo esta aplicación) o instalar en el dispositivo un emulador de terminal (yo recomiendo este).

2) Descomprimiendo el stage

El primer paso es obtener root

1
$ su

Luego procedemos a descargar el stage de Gentoo en cualquiera de los mirrors del proyecto, basta con ejecutar el siguiente comando que convenientemente realizó en /data

1
busybox wget http://gentoo.c3sl.ufpr.br/experimental/prefix/rap/gentoo.tar.bz2

Una vez con el stage listo procedemos a descomprimirlo

1
busybox bzip2 -dc gentoo.tar.bz2 | busybox tar -xf - -C /data

Este paso deberia crear una carpeta llamada /data/gentoo que es la base de nuestro Gentoo prefix.

3) Hacks previos a usar el prefix

Una vez listo el prefix es necesario que  algunos ejecutables clave para compilar sean visibles, especificamente env, sh y pwd, para esto se pueden utilizar los incluidos en el prefix mediante  enlaces simbólicos, primero remontamos / con permisos de escritura

1
/system/bin/mount -o remount,rw /

Y creamos los enlaces simbólicos

1
2
mkdir /bin; cd /bin; ln -s /data/gentoo/bin/sh; ln -s /data/gentoo/bin/pwd
mkdir -p /usr/bin; cd /usr/bin; ln -s /data/gentoo/usr/bin/env

Por ultimo también es recomendable crear /tmp ya que algunos ebuilds lo utilizan para compilar.

1
mkdir /tmp; /system/bin/mount -t tmpfs tmpfs /tmp

4) Iniciando nuestro prefix

Una vez listo el sistema, procedemos a iniciar nuestro prefix ejecutando el script en /data/gentoo/startprefix, si todo sale bien pues bienvenidos a Gentoo!

2013-12-08 18.35.20

5) Usar el prefix como root

A menos que realicemos un chmod sobre /data/gentoo, por defecto la instalación y portage solo podrá ser usada por root. No entanto algunas implementaciones de su para Android como SuperSu, utilizan una shell diferente para los usuarios normales y para root, lo cual podemos verificar mediante la variable de entorno $SHELL.

2013-12-08 18.46.55

Si este fuera el caso, lo más probable es que al iniciar el prefix como root el script falle, sin embargo basta con sobreescribir la variable $SHELL para usar la shell por defecto que en el caso de Android es /system/bin/sh

1
export SHELL=/system/bin/sh

Y listo, ahora podemos utilizar Gentoo con todo su poder

2013-12-08 18.52.46

Es conveniente que antes de cualquier cosa actualicemos portage y agreguemos el overlay de heroxbd el principal desarrollador del port.

1
2
emerge --sync
layman -s heroxbd

La parajoda de Glassfish

GlassFishMedium
Comienzo esta entrada con la frase de un twitt que me llego de rebote y me gustó bastante

La traducción liberal seria «La paradoja de Glassfish: Nadie paga soporte. Pero si se cancela el soporte como consecuencia de esto,  el producto se considera muerto»

El dia  4 de noviembre Oracle hizo publico el plan de desarrollo actualizado de Glassfish y lo que parecía ser un secreto a voces finalmente paso: el soporte comercial a Glassfish fue cancelado, lo que tomo a todos por sorpresa ya que Glassfish es despues de JBoss el servidor de aplicaciones más popular.

Cuando estaba en la Universidad tuve la oportunidad de aprender JEE sobre el otrora famoso J2EESDK que incluía Java System Application Server, la base de lo que hoy es Glassfish. Sin embargo mi profesor inicio la charla con la siguiente sentencia:

Durante el aula aprenderemos desarrollo J2EE utilizando J2EESDK sin embargo en la ultima semana migraremos nuestros programas a JBoss para que aprendan como configurar servidores que pueden ser usados en producción

En ese entonces JBoss era el rock star de Java EE , y fue asi que Sun se puso a la carga construyendo al Glassfish que conocemos hoy en dia y que Oracle termino heredando. Con el pasar del tiempo Glassfish se convirtió en un killer app server, a tal punto que los mejores libros para aprender JEE como el de Antonio Goncalves fueron creados usando ejemplos para Glassfish.

Habiendo trabajado durante tres años con servidores de aplicaciones Java (uno con JBoss y otros dos con Glassfish) puedo decir que Glassfish tiene todos los méritos para ser ese killer app server del que todos estamos enamorados. Y como era de esperarse, las reacciones a la noticia no se hicieron esperar con algunos grandes nombres del mundo Java llamando a la calma, otros escribiendo obituarios para Glassfish y otros asegurando que Glassfish se convertira en un producto de juguete, tal cual Java System Application Server.

Revisando twitter, las reacciones no son diferentes, acá algunas de las que más me gustaron:

Habiendo dicho esto ¿que opciones tienen todos aquellos que están tristes por Glassfish?

Opción 1: Confiar en Oracle y WebLogic
Como bien Oracle ha apuntado, el soporte de WebLogic es incluso más barato que el de Glassfish y a la espera de un claro plan de migración de aplicaciones de Glassfish hacia entornos de producción Weblogic, esta podria ser una solución para todos aquellos que confían en Oracle para tener soporte.

Opción 2: Migrar a WildFly o TomEE

WildFly y TomEE son los chicos nuevos de la cuadra, mientras WildFly comparte una base de codigo con JBoss AS, TomEE ofrece soporte total a su solución de software libre y de hecho soporta los descriptores de deployment de Glassfish. Es aqui que se debe probar que una de las virtudes de JEE es la relativa independencia de los proveedores de soluciones al ser implementaciones de un standard. Como buena noticia, ya el equipo de Netbeans ha facilitado la integración de TomEE con el IDE,

Opción 3: Confiar en la naturaleza del open source y remangarse la camisa
Por si no lo notaron, una situación similar ya ocurrió en el pasado cuando IBM dejo de dar soporte comercial a Apache Geronimo. Sin embargo ante la falta de IBM, no una sino varias empresas proveen soporte al mismo. Y es que esa es la naturaleza del Open Source, independientemente si Oracle cancelo la versión comercial por no ser tan rentable como esperaba (para lo cual están en su derecho), el código siempre ha estado ahí a disposición de la comunidad. Ya lo ha dicho la propia gente de TomEE, si están tristes y quieren culpar a alguien, primero háganse esta pregunta:

¿Como esta mi contribución a Glassfish en relación a la contribución dada por Oracle?

Y si la respuesta no los satisface, pues es momento de colaborar con Glassfish. Glassfish seguirá siendo la RI de la plataforma JEE y seguirá teniendo patronicio de Oracle, así que de ustedes depende que siga siendo ese killer app server del que nos enamoramos o que todo termine en un repositorio con poco movimiento y consignas hippies.

geek-sources el kernel más genial para Gentoo que probablemente no conoces

explore_linux_kernelUna de las mayores ventajas de utilizar una distribución para «usuarios avanzados» como es el caso de Gentoo, Arch, Slackware y Debian, son las opciones de flexibilidad. Donde flexibilidad significa las infinitas posibilidades para modificar el sistema creando un sistema único y acorde a necesidades especificas. En este rubro Gentoo Linux tiene una participación destacada ya que el mismo ofrece opciones interesantes para desarrolladores que solo son posibles a través de la compilación de paquetes y el kernel Linux no es la excepción.

Desde hace varios años Gentoo ofrece la posibilidad de utilizar diferentes versiones del kernel Linux para nuestro sistema operativo y aunque los desarrolladores de Gentoo separan los kernel disponibles en dos grandes grupos (soportados y no soportados) experimentar es gratis ;-).

¿Cuales versiones de kernel existen?
Cuando el kernel comun de Gentoo (gentoo-sources) no es suficiente o se necesitan más opciones, es bastante común optar por versiones  experimentales. Para ver todas las versiones disponibles basta con hacer un emerge –search sources y obtener el listado completo, entre estas puedo destacar:

  • vanilla-sources (codigo fuente integro publicado en kernel.org)
  • ck-sources (una variante de vanilla-sources con los parches de Con Kolivas)
  • tuxonice-sources (una variante de gentoo-sources con soporte para los parches tuxonice)
  • pf-sources (una variante del kernel vanila-sources, incluyendo los parches ck, ukms, bfq y tuxonice)
  • hardened-sources (una variante de gentoo-sources como parte del proyecto Gentoo Hardened)

¿Porque geek-sources es especial?

Uno de los problemas de elegir entre una u otra implementación es que los subconjuntos de características son mutuamente excluyentes entre kernels. Por ejemplo (como fue mi caso) al elegir pf-sources se gana el escalonador BFQ (nuevo rockstar del desempeño), pero se pierden los parches específicos del proyecto Gentoo, o si se opta por tuxonice-sources se gana la hibernación mejorada pero se pierden los parches de alto desempeño presentes en pf. Es aqui donde geek-sources llega al rescate.

geek-sources es un proyecto creado por el equipo del overlay init6 cuyo objetivo es tener lo mejor de todos los kernels en una sola instalación. Dicho de otra forma es un kernel diseñado para crear hibridos entre las versiones tradicionales de kernels presentes en Gentoo acorde a nuestras necesidades.

¿Como instalo geek-sources?

El primer paso es instalar el soporte para init 6 con layman:

1
layman -a init6

Luego verificamos las use flags que tiene disponibles, con emerge (buscar con eix y/o gentoolkit tambien es opción)

1
emerge --pretend --verbose geek-sources

Al momento de este articulo, geek sources contiene las siguientes flags:

1
[ebuild   R    ] sys-kernel/geek-sources-3.10.17:3.10::init6  USE="-brand -gentoo -pf -reiser4 -aufs -bfq -bld -build -cjktty -ck -deblob -fedora -grsec -ice -lqx -mageia -optimization -pax -rsbac -rt -suse -symlink -uksm -zen -zfs" 0 kB

Como se puede observar en la información del emerge, geek-sources soporta varias use flags donde cada use flag habilita variantes de kernel (pf,ck,fedora,lqx,mageia,gentoo) o características individuales (reiser4,brand,bfq,build,deblob). Así pues el kernel resultante dependerá de cuales use flags queramos activar. La descripción completa se encuentra en el repositorio de Github del proyecto, del cual copio el diagrama de módulos:

relationship_of_patches_in_geek-sources

Como se observa en la gráfica variantes como pf, ck o gentoo funcionan como conjuntos de otros parches que a su vez pueden ser activados de forma individual y la elección dependerá de nosotros. Vale la pena resaltar que si por ejemplo se activa la variante pf y el parche tuxonice (incluido en pf) el ebuild se encargara automáticamente de aplicar los parches por prioridad que puede ser sobreescrita con la variable  GEEKSOURCES_PATCHING_ORDER en el archivo /etc/portage/kernel.conf. El orden predeterminado es el siguiente:

GEEKSOURCES_PATCHING_ORDER=»zfs optimization pax lqx pf zen bfq rifs ck cjktty gentoo grsec rsbac ice rh reiser4 exfat rt bld uksm aufs mageia fedora suse ubuntu xenomai brand fix upatch squeue»

Es asi que, para crear nuestro kernel, basta con activar las use flags ya sea globalmente o en el archivo package.use. Por ejemplo si se desea la variante pf, con los parches de Gentoo y el logo de larry the cow al inicio del proceso de arranque, se han de activar las flags gentoo, pf y brand usando package.use

1
echo "sys-kernel/geek-sources pf gentoo brand" >> /etc/portage/package.use

Luego se procede a instalar el código fuente con

1
emerge sys-kernel/geek-sources

Es aqui que el emerge preparara el código fuente y preparar un archivo .config si fuera posible, para que posteriormene el kernel sea compilado con los pasos habituales en Gentoo.

Y si todo sale bien, al reiniciar nuestro computador la salida debería ser similar a la siguiente :D:
geek

Un motivo más para utilizar Gentoo Linux y sus hijos.

 

 

Java Day Guatemala 2013

rsz_afiche

El grupo de usuarios y desarrolladores Java de Guatemala -Guatejug- les hace la cordial invitación para formar parte de este evento en su tercera edición.

Las actividades del grupo se han realizado por y para la comunidad y el Java Day de este año no es la excepción, en esta oportunidad la organización del evento ha creado un website especial para estar al tanto de las ultimas noticias:

http://www.guate-jug.net/jday13/

El evento sera realizado el sábado 9 de noviembre en el centro TICS del INTECAP en la calle del estado Mateo Flores de la ciudad de Guatemala, la entrada es totalmente libre.

Si existe algún interesado en participar como expositor aun hay espacios abiertos y se puede contactar con la organización a través de los diversos medios de comunicación utilizados por el grupo, disponibles en el website principal:

http://www.guate-jug.net/

Regresa la fanpage de Gentoo Linux

Gentoo LogoPara los que aun no lo han notado, existe una Facebook fanpage de Gentoo Linux con poco más de 10k likes (lo cual ya es destacable para una distribución como Gentoo).

Resulta que, esta fanpage fue creada por algun desarrollador de Gentoo que despues de un tiempo decidió borrar su cuenta en Facebook y la misma nunca fue considerada oficial o tuvo alguna información oficial. Sin embargo el equipo de relaciones publicas de Gentoo (gentoo-pr) decidio rehabilitarla y llevar a la red de Mark la palabra de Larry :).

De momento la pagina servirá como punto de contacto entre los usuarios/aficionados a Gentoo, noticias ocasionales de Gentoo y serán publicadas las noticias a partir del rss de Planet Gentoo. Asi que para todos los que sean usuarios de Facebook y Gentoo, no olviden pasar y dejar su like.

Historia original: http://dilfridge.blogspot.com.br/2013/10/gentoo-on-facebook.html

[QuickTip] Eliminar URL de template IEEEtran

tex

Recientiemente tuve la necesidad de utilizar el template del IEEE para conferencias, el cual es tal vez el template universal en ciencias de la computación a la par del template de la ACM.

El evento tenia un requerimiento bastante particular y era que las referencias no debían llevar el url de origen. Sin embargo Mendeley genera automáticamente este campo con lo que estaba en la encrucijada si esperar hasta el ultimo día para hacer una copia del archivo .bib generado o editar el template, con lo cual encontré un thread interesante en stack overflow con la solución.

Si utilizamos el template de IEEE instalado en el sistema, basta con que descarguemos el template del sitio original y conservemos el archivo IEEEtran.bst que contiene el estilo bibliográfico para luego aplicarle el siguiente parche:

--- IEEEtran.bst.orig
+++ IEEEtran.bst
@@ -403,7 +403,6 @@
default.ALTinterwordstretchfactor 'ALTinterwordstretchfactor :=
default.name.format.string 'name.format.string :=
default.name.latex.cmd 'name.latex.cmd :=
-  default.name.url.prefix 'name.url.prefix :=
}

@@ -1080,7 +1079,7 @@
if$
"\begin{thebibliography}{"  longest.label  * "}" *
write$ newline$
-  "\providecommand{\url}[1]{#1}"
+  "\def\url#1{}"
write$ newline$
"\csname url@samestyle\endcsname"
write$ newline$

Para aplicar el parche podemos guardar el texto anterior en un archivo IEEEtran.bst.patch en el mismo directorio donde se encuentre nuestro archivo IEEEtran.bst que a su vez debe estar en el mismo directorio que nuestro archivo .tex, luego basta con parcharlo usando la linea de comandos

1
patch < ./IEEEtran.bst.patch

El resultado debe ser similar al siguiente, como se observa el campo URL se ha eliminado:

Selection_003

[QuickTip] Eliminar glitches (ruido/crackling) en Skype con pulseaudio

Skype

Después de una actualización de rutina a mi sistema, Skype me presentaba un ruido bastante incomodo que solo puedo describir como «crackling» o como «un televisor captando interferencia». Aunque inicialmente maldije a Skype, a Dilma, a Obama y a Microsoft, por su modelo propietario, resulta que el que tiene la culpa del error es Pulseaudio (lo siento Bill no me tengas rencor).

Anteriormente el scheduler utilizado por Pulseaudio era basado en interrupciones, pero en lanzamientos recientes Pulseaudio ofrece la opción de un scheduler basado en timers, el cual infelizmente tiene zilliones de reportes de bugs y al parecer no existe una solución universal ya que el buen funcionamiento de este scheduler depende del hardware y el driver.

Si este fuera el caso, la única solución es deshabilitar el scheduler basado en timers, editando el archivo /etc/pulse/default.pa, con nuestro editor de texto preferido

1
vim /etc/pulse/default.pa

Luego, debemos buscar la linea correspondiente a module-udev-detect y le agregamos el parametro tsched=0, por ejemplo en mi archivo de configuración:

52
53
54
55
 ### Automatically load driver modules depending on the hardware available
 .ifexists module-udev-detect.so
 load-module module-udev-detect tsched=0
 .else

Entendiendo NVIDIA Powermizer en Linux

Nvidia-LinuxNVIDIA Powermizer es una tecnología que lleva bastante tiempo dentro de las placas gráficas NVIDIA, su objetivo principal es reducir el consumo de energía ajustando de manera dinámica la frecuencia del GPU y VRAM.

Sin embargo y dependiendo de nuestra necesidad, en Linux el acceso a configuraciones avanzadas es bastante limitado, ya que el panel de administración solo permite 3 configuraciones: Máximo desempeño, Adaptativo o Automático (que elije entre los dos anteriores -_-). Siendo así, la única forma de configurar opciones avanzadas a nuestro gusto es editar manualmente las configuraciones del driver, utilizando para esto la opción RegistryDWords que se encuentra bien documentada solo en algunos manuales de desarrollador.

1) ¿Como saber cuales modos de trabajo están soportados por mi tarjeta?:

Un paso previo a configurar RegistryDWords es verificar los niveles predeterminados de desempeño que NVIDIA incluye en la GPU, para esto utilizamos el comando:

1
nvidia-settings -q 0/GPUPerfModes -t

La salida sera similar a la siguiente:

perf=0, nvclock=50, nvclockmin=50, nvclockmax=50, memclock=135, memclockmin=135, memclockmax=135, processorclock=101,
processorclockmin=101, processorclockmax=101 ;
perf=1, nvclock=202, nvclockmin=202, nvclockmax=202, memclock=324,
memclockmin=324, memclockmax=324, processorclock=405, processorclockmin=405, processorclockmax=405 ;
perf=2, nvclock=775, nvclockmin=775, nvclockmax=775, memclock=1250, memclockmin=1250, memclockmax=1250, processorclock=1550,
processorclockmin=1550, processorclockmax=1550

Aunque la salida es un poco confusa leyendo detenidamente podemos notar que esta tarjeta soporta tres niveles o «perf modes».

2) ¿Cuales archivos necesito editar para personalizar la configuración?:

Luego que conocemos los niveles de trabajo soportados por nuestra tarjeta, necesitamos verificar cual archivo de configuración utiliza nuestro sistema, lo mas común es editar el archivo xorg.conf ubicado en /etc/X11:

vim /etc/X11/xorg.conf

Sin embargo y con las funciones de configuración automática de Xorg/X11 puede ocurrir que ni siquiera tengamos este archivo. Si este fuera el caso es necesario verificar varias posibles ubicaciones para los archivos de configuración como se menciona en el manual de Xorg, siendo estas:

/etc/X11/xorg.conf.d/
/usr/etc/X11/xorg.conf.d/
/usr/share/X11/xorg.conf.d/

Dentro de estos directorios puede existir más de un archivo con un nombre de tipo <numero>-<nombre>.conf. Si este fuera el caso  debemos buscar si alguno de estos archivos ya contiene una sección Device y/o crear un archivo con esta sección, conteniendo la información de nuestro driver y tarjeta grafica, en mi caso:

vim /usr/etc/X11/xorg.conf.d/02-xorg.conf

La apariencia de esta sección es similar a la siguiente

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    Option "CursorShadow" "true"
EndSection

2) ¿Como personalizo las opciones de desempeño?:

Una vez que hemos ubicado/creado la sección device que corresponde a nuestra GPU, debemos agregar una nueva opción denominada RegistryDWords que debe tener la siguiente estructura:

1
Option "RegistryDwords" "PerfLevelSrc=0x<8888>; PowerMizerDefault=0x<88>; PowerMizerDefaultAC=0x<88>"

Las opciones para los valores son las siguientes:

PerfLevelSrc, controla la política que se aplicara con las distintas fuentes de energía soportadas por la PC (corriente alterna o batería) un valor 22 significa frecuencias fijas y 33 significa valores adaptativos, siendo así obtenemos las siguientes combinaciones:

PerfLevelSrc=0x2222 #Frecuencia fija para batería y corriente alterna
PerfLevelSrc=0x2233 #Frecuencia fija para batería y dinámica para corriente alterna
PerfLevelSrc=0x3333 #Frecuencia dinámica para ambos modos de energía (configuración por defecto)

PowerMizerDefault, define el «perf mode» por defecto, que en configuraciones fijas significa que se utilizara siempre este perf mode. Por ejemplo si quisiéramos máximo desempeño todo el tiempo y nuestra tarjeta soportara 3 perfs, lo correcto seria utilizar:

1
PowerMizerDefault="0x1"

PowerMizerDefaultAC, es similar al anterior pero solo tiene efecto sobre las políticas de energía conectado a corriente alterna.

3) Configuraciones comunes:

Algunos ejemplos de configuración bastante comunes son los siguientes:

Máximo desempeño en corriente alterna, máximo ahorro en batería,

"PerfLevelSrc=0x2222; PowerMizerDefault=0x3; PowerMizerDefaultAC=0x1"

Máximo ahorro en batería, dinámico en corriente alterna

"PerfLevelSrc=0x2233; PowerMizerDefault=0x3"

Dinámico en batería, máximo desempeño en corriente alterna

"PerfLevelSrc=0x3322; PowerMizerDefaultAC=0x1"

Adaptativo para cualquier origen de energía (configuración por defecto)

"PerfLevelSrc=0x3333"

4) Ejemplo de desempeño:

En mi caso suelo optar por una configuración de desempeño dinámico en corriente alterna y desempeño mínimo al utilizar batería, con lo cual mi archivo de configuración contiene los siguientes valores:

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    Option "CursorShadow" "true"
    Option "RegistryDwords" "PerfLevelSrc=0x2233; PowerMizerDefault=0x3"
EndSection

Notese en el siguiente video como esta configuración afecta el rendimiento de la aceleración 3D:

Como comentario final, con esta configuración no es posible ver películas en HD sin embargo mi batería rara vez dura más de las 2 horas necesarias para ver una película completa :-D.