Archive for February 21st, 2008

Se necesita mucha maquina para Linux? (II Parte)

Thursday, February 21st, 2008

Como lo prometí; le he instalado el controlador nvidia para X.org y posteriormente he instalado compiz-fusion a mi escritorio gnome; lo he ejecutado en modo renderizado directo (ostia! es una Nvidia FX, para que montar AIGLX?) y he agregado algunas opciones de tunning y de performance que permiten una mejor ejecución tanto del driver nvidia como del compiz-fusion en gnome:

Instalando Nvidia:

Despues de instalar el NVIDIA driver descargable de la página de nvidia; he procedido a editar el /etc/X11/xorg.conf para agregar algunas opciones de “Tunning”:

Section Device:

Section "Device"

Identifier      "nVidia Corporation NV43"

Driver          "nvidia"

Option          "TwinView" "true"

Option          "RandR" "Enable"

Option          "XAANoOffscreenPixmaps" "true"

Option          "AddARGBGLXVisuals"     "true"

Option          "AllowGLXWithComposite" "true"

Option          "RenderAccel" "true"

Option          "BackingStore" "true"

Option          "MetaModes" "1600x1200,1600x1200; 1280x1024,1280x1024"

Option          "SecondMonitorHorizSync" "31-80"

Option          "SecondMonitorVertRefresh" "56-76"

Option          "TwinViewOrientation" "RightOf"

Option          "IgnoreEDID" "1"

Option          "NvAGP" "3"

EndSection

En este caso, hay algunas opciones como “BackingStore” que realmente mejoran el dibujado de las pantallas; además he cargado las 3 extensiones que requiere para funcionar el compiz en modo renderizado directo:

Section “Extensions”
Option “Composite”      “Enable”
Option “RENDER”         “true”
Option “DAMAGE”         “true”
EndSection

Bueno, en fin, he puesto a funcionar (sin mucho trabajo) el compiz-fusion en esta máquina.

Testing Compiz-Fusion (y el resto de cosas):

Ok, vamos a ponernos “Exigentes!”; no solamente tengo Compiz-fusion cargado en mi PC (con la ventaja de tener rendering directo, el dibujado de ventanas lo está haciendo la GPU de mi NVIDIA y no la CPU); sino que además con mi “prueba de stress” tengo cargados:

pantallazo-1.png

2 Consolas (una con vim abierto, de donde saqué las opciones de nvidia)

Amarok levantado (para los que dicen que es el player más pesado) ejecutando otro mp3 de mi disco portable, esta vez “Amy Winehouse - Rehab”; no se puede trabajar sin escuchar música!

Un especial sobre la Iglesia Católica en “The History Channel” en TV Time

Una sesión de Inkscape (editor vectorial, tipo Adobe Illustrator) que estoy haciendo unos graficos para el trabajo

Una sesión de OpenOffice (leo un documento sobre “La problemática del Desarrollo Sustentable”) ayudando a una amiga

Sigo cargando Gimp con mis amadas “Mediaeval Baebes” (por hacer bulto en la RAM)

2 Le sumo 2 ventanas de Firefox (una con este blog, otra con mi cuenta de last.fm y facebook) (puro Ocio)

Y el aMSN (para conectarme con los panas!, una versión en TCL/tk del cliente de MSN Messenger) (más Ocio aun)

Como verán, el CPU ahora si está al máximo (pero claro, sigue en modo ondemand); el consumo (como se esperaba) de RAM ha subido notablemente (aunque no creo que nadie trate con tanto stress una máquina); lo más interesante es mi cantidad de RAMcon  disponible:

total           used           free         shared      buffers     cached
Mem:       2076688    2012564     64124      0              30524      1530720
-/+ buffers/cache:      451320      1625368
Swap:      1052216     0                1052216
Con tantas cosas abiertas; aun me quedan 64 MB de RAM disponibles!, nada de SWAP usado; nada de PageFile.sys!, nada de comprarse pen drives de 4GB y usarlos de SWAP; nada de costosos equipos con RAM DDR3 super-puyada!; esta es una PC que tiene conmigo cerca de 3 años, solo 2GB de RAM (y PC400, nada de DDR2 y esas cosas caras); y fiel como nunca!, trabaja a las mil maravillas (y sin ralentizarse o ponerse “boba” porque hagas cosas extrañas como esta:

pantallazo-2.png

Jojojo!, Viendo TV desde el efecto Cubo de Compiz!, y la máquina como si nada!; quiero ver un cacharrito de estos corriendo Windows Vista+Aero a ver si tiene tal desempeño …

Creo que esta entrega PRUEBA de plano la potencia y las capacidades de Linux para un escritorio adecuado para el usuario común; ¿que yo hago trampa porque hago “tunning” a mi debian o a mi fedora?, perfectamente válida razón!; pero para eso existe Sabayon Linux; una distribución que ya viene “tuneada” de fábrica; dedicada a usuario final (hasta trae compiz-fusion y otros detalles interesantes, como kernel y arranque optimizado y aplicaciones compiladas para ser oṕtimas al 100%) y me imagino que deben existir otras más; solamente hace falta buscar o tener a alguien cerca que pueda hacer estos cambios por tí (como siempre, como usuario final tienes a alguien cerca para instalarte una antiwirus o un antimalware, antivaporware, antidoñaware y todos esos anti que MS Windows necesita tener).

En la tercera entrega; cuando termine de instalar mis herramientas de desarrollo (apache2, mySQL 5, postgreSQL 5, PHP5, mod_perl2, Eclipse PDT y Komodo Editor); me dedicaré a hacer este mismo test; probando que Linux tambien es una buena estación de trabajo para desarrolladores.

Happy Hacking!

Se necesita mucha máquina para Linux? (parte I)

Thursday, February 21st, 2008

De vez en cuando leo los posts en foros y artículos de la cantidad de RAM, CPU, Video y cosas asi que requiere para correr el Windows Vista; decidido a probar que una máquina Linux bien tuneada puede ejecutar muchas más cosas en un mismo momento; del artículo anterior se desprende el siguiente screenshot:

pantallazo.png

En dicho screenshot se puede ver que tengo en ejecución:

Gimp + una foto 1024×600 de las Mediaeval Baebes

TVTime conectado al Cable y sintonizado History Channel

Amarok, sonando música desde un disco S-ATA portable (conectado por USB); la canción “Wedding Irish Song - The Corrs”

Bluefish: Un archivo de documentación Docbook cargado

Firefox (Iceweasel): mi cuenta de Gmail y el blog abierto

2 terminales

Faltan optimizaciones adicionales (no he montado por ejemplo compiz con el driver nvidia); pero fijense en algo:

total           used        free             shared    buffers     cached
Mem:     2076688     537528    1539160      0      46748     243624
-/+ buffers/cache:     247156    1829532
Swap:    1052216      0              1052216

Con todas esas aplicaciones, Linux (un Debian Lenny) solo ha consumido 512MB de RAM y ni siquiera ha tocado la SWAP; el scaling está en ondemand (nada de performance, que da más desempeño) y aun me queda RAM y espacio en SWAP para ejecutar mil aplicaciones más …

Aun siguen diciendo que Windows Vista es más estable y práctico?

En la segunda parte; mostraré el mismo equipo, pero esta vez ya habré montado la NVIDIA Gforce 7300 que tengo (que beneficiará en que el cálculo de las X la hará la GPU y no la CPU, como ocurre hasta ahora con el driver VESA) y Compiz-fusion.

La tercera entrega calculará el mismo consumo, pero esta vez en un entorno más “de producción” con un apache+mod_perl+php5 instalado, ejecutando algunos de mis editores (IDE) favoritos (Eclipse PDT + Komodo IDE).

Veremos como se porta mi viejo equipo en estas circunstancias …

HOWTO: Activar cpu frequency de un AMD64 k8 en Debian

Thursday, February 21st, 2008

Una de las cosas que me da grima (y por eso siempre compilo mi propio kernel) es tener una maquina más o menos “decente” y sufrir el martirio de tener el reloj del CPU a 800Mhz y el reloj del FSB a 250mhz como máximo (El “por defecto” de casi todas las distribuciones que conozco); pareciera como que estuviera trabajando en un servidor.

En muchos casos la gente se acostumbra, pero yo no …

En mi caso, poseo una (ya viejita) máquina MSI k8n platinum Socket 939 con un AMD64 +3200 y 2Gb de RAM; luego de una instalación limpia de Debian GNU/Linux hice lo que debía, compilar un kernel; básicamente solo cambié algunas opciones:

Cambios en el Kernel:

Nota: opción (Y) indica YES, opción (M) indica “Como Módulo”.

Processor type and features

Tickless System (Dynamic Ticks) NO_HZ (Y)

Processor Family -> Opteron/Athlon64/Hammer/K8 MK8

Generic x86 support X86_GENERIC (Y) //Agrega optimizaciones genéricas para los CPU x86

Preemption Model -> Preemptible Kernel (Low-Latency Desktop) PREEMPT //No saben lo bien que se mueve un desktop con esta opcion

Timer Frequency (Mhz) -> 1000 HZ HZ_1000 //Para desktops, ampliar el espectro de frecuencia del kernel, mejora su respuesta

Power management options
CPU Frequency scaling

ACPI Processor P-States Driver (M) //driver genérico, llamado acpi_cpufreq, DEBE estar activado

Desactiven todos los scalings de Intel, VIA y Ciryx y solo incluyan:

AMD Opteron/Athlon64 PowerNow! X86_POWERNOW_K8 (M)
ACPI Support (Y)

Agreguen como módulo todos los gobernadores (userspace, ondemand, powersave, conservative) y dejen como instalado (Y) a performance (es el por defecto).

Los gobernadores:

Los gobernadores son gestores de la energía y el scaling del CPU, cada uno hace lo que debe:

performance: mantiene el CPU en el mayor consumo y la mayor velocidad posible, siempre

ondemand: aumenta el consumo de CPU de acuerdo a tareas determinadas; cuando se requiera mucho CPU, este gobernador aumenta el consumo automáticamente; es un equilibrio entre conservative y performance.

Conservative (y powersave): ambos tratan de mantener al mínimo la velocidad del CPU, no importando la tarea, adicionalmente, powersave trata de reducir el core voltaje del CPU y del northbridge (si la placa base acepta) para tambien tratar de ahorrar energia.

userspace: permite definir una escala propia de velocidad (ej. fijarla siempre en 1Ghz)

Algunos detalles de performance:

He agregado algunos detalles adicionales, pero que no vienen al caso del performance (bueno, he desactivado TODO lo que tiene que ver con Kernel Debugging en:

Kernel hacking -> Kernel Debugging (agrega simbolos y traces para hacer depuración del kernel, para que?, no soy developer del kernel!).

Activando CPU Freq:

Inicialmente, si nos fijamos, el freq del CPU emite este error en el dmesg:

powernow-k8: BIOS error - no PSB or ACPI _PSS objects

Y falla en la carga: para evitar esto; debemos realizar 3 cosas; primero:

Habilitar SysFS al arranque:

agreguen la siguiente linea a su FSTAB:

sysfs /sys sysfs defaults 0 0

Instalar powernowd:

aptitude install powernowd

Powernowd es un demonio en userpace que se encarga de gestionar el frequency scaling de nuestro CPU AMD (aunque tambien sirve para Centrino, según tengo entendido).

Habilitar Cool n’ Quiet en el BIOS:

Muchas veces la gente no activa la tecnología powerNow! de AMD en su BIOS (busquen la opción Cool n’ Quiet en el manual de su Motherboard).

En mi caso, una MSI K8N Platinum, está en un menú TWEAK y se busca bajo CPU Overclocking la opción Cool n’ Quiet

Opciones de estabilidad en el GRUB:

Como siempre, agrego algunas “cosas” para que nuestro kernel sea algo más “estable” en su arranque:

idebus=66 irqpoll pci=assign-busses pci=routeirq apic

Iniciar equipo y revisar el DMESG:

Ahora, al iniciar el equipo, vemos lo siguiente en el dmesg:

powernow-k8: Found 1 AMD Athlon(tm) 64 Processor 3200+ processors (1 cpu cores) (version 2.20.00)
powernow-k8: 0 : fid 0xc (2000 MHz), vid 0×6
powernow-k8: 1 : fid 0xa (1800 MHz), vid 0×8
powernow-k8: 2 : fid 0×2 (1000 MHz), vid 0×12

weee! funciona!, ahora, activemos el applet de gnome-cpufreq; para ello:

Activando gnome-cpufreq applet:

El applet de gnome-cpufreq necesita (para poder gestionar el scaling) tener uid de root; para ello, ejecutamos:

dpkg-reconfigure gnome-applets

Esta opción mostrará una pantalla, que pedirá si deseamos darle el SUID root a “The ‘cpufreq-selector’ program”; presionan ACEPTAR, luego le dicen que “YES” a la pregunta “Desea que cpufreq-selector corra con privilegios de root”; y luego lo montan en alguna parte de su escritorio gnome:

panel.png

Y tendrán un icono donde verán la frecuencia actual del CPU, pero podrán tambien cambiarla (tanto frecuencia como gobernadores).

UPDATE: para algunas tareas que corren en background (sobre todo tareas queue o marcadas como nice); el kernel no logra calcular el load Balance del CPU; para evitar este comportamiento y agregar dichas tareas tambien al calculo de la CPU, debemos ejecutar:

echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/ignore_nice_load

Evidentemente, ese cambio no subsiste al reinicio; por ende, debemos agregarlo en el /etc/init.load

Como una prueba de que el scaling esta funcionando correctamente (más la gestión de CPU y memoria); decidí hacer una prueba intensiva que incluye:

Firefox cargado (con mi blog).

2 Terminales (para pruebas)

un bluefish cargado con un archivo docbook bastante grande

TV Time para ver History Channel

Amarok escuchando música de fondo

Gimp editando una foto (mis queridas Mediaeval Baebes)

Un screenshot aqui:

pantallazo.png

Y se prueba que el Scaling funciona, que el equipo corre suavemente,  y si nos damos cuenta; vemos que NI SIQUIERA TOCA el SWAP:

total       used       free     shared    buffers     cached
Mem:       2076688     537528    1539160          0      46748     243624
-/+ buffers/cache:     247156    1829532
Swap:      1052216          0    1052216
El CPU aguanta todo y la RAM más que favorecida por ello …