imouthes

En Guillem Cantallops Ramis de vegades escriu per aquí...

2005-02-14

 

Màxima compressió

Record que fa un munt d'anys quan encara no coneixia Linux ni BSD ni res semblant, jugava a convertir el DOS en una cosa útil. Per exemple, canviava el COMMAND.COM pel 4DOS.COM. I provava compressors. Tots, més de cent, sense mirar llicències perquè no sabia ni que existien. No tenia ni accés a Internet, m'havia de baixar les coses (normalment shareware) de les BBSs o les havia d'obtenir dels disquets de les revistes, o dels amics, amb mesos o fins i tot anys de retràs. Era divertit.

Contada la batalleta, supòs que avui tothom està més o manco com jo, totalment content amb el tar més gzip o bzip2. Ja sabeu que el tar empaqueta les coses i el gzip i el bzip2 comprimeixen, normalment fitxers generats amb tar. Un disseny modular clàssic del món UNIX: cada qual fa la seva feina, la fa bé, i està preparat per col.laborar amb els altres.

Bé, també és útil poder descomprimir ZIPs i RARs perquè encara te'n trobes. El RAR és més sofisticat, té més opcions, i (tardant més i consumint més recursos) comprimeix més, però jo diria que no és tan popular com el ZIP. El ZIP és omnipresent: segur que sabeu que els documents d'OpenOffice són realment fitxers XML comprimits amb ZIP, i els JARs de Java també són una estructura senzilla de directoris i fitxers comprimits amb ZIP. Si teniu un Mac encara vos trobareu fitxers sit o hqx, però darrerament veig que està molt més de moda fer servir imatges de disc amb extensió dmg (opcionalment comprimides o xifrades) per distribuïr programes de Mac OS X.

Au, va, ara sí... contada la SEGONA batalleta entraré en matèria. Aquest post es titula "màxima compressió" perquè avui he recordat aquells temps de proves de compressors, de pensar com s'hauria de fer un bon benchmark i d'entendre què era l'entropia a base d'experimentar, sense background, sense conèixer les paraules "benchmark" o "entropia". Fent una volta pels paquets de Debian Experimental m'he trobat el compressor (o millor dit, l'archiver) 7-Zip.

Supòs que ja sabeu com va Debian Experimental. No és una distribució autocontinguda com ara Sid (unstable), Sarge (testing) o Woody (stable), sino que agrupa tot tipus de paquets experimentals (d'aquí li ve el nom :-P) i les seves dependències solen estar totes a Debian Sid. Per tant, si voleu tenir Debian Experimental, una petita passa més que Debian Sid ;-) senzillament duplicau les linies que tengueu al /etc/apt/sources.list i a una de les còpies canviau sid o unstable per experimental. Després ja podreu fer, entre moltes altres coses, un apt-get install p7zip.

Del p7zip només vos contaré un parell de coses. Funciona en pla archiver, o sigui que en principi no necessita tar. La comanda és 7z (funcionalitat total, fa servir plug-ins enllaçats dinàmicament per gestionar tot tipus de formats) ó 7za (executable stand-alone, no soporta tants de formats). El format (i l'extensió) és 7z. Recorda molt als archivers d'un temps perquè té un munt de funcions que van més enllà d'empaquetar i comprimir fitxers, per exemple permet xifrar les dades amb AES-256 o generar fitxers auto-extraibles (SFX, amb un petit descompressor executable encastat amb les dades) i crec que és capaç de fer de front-end per gestionar automàticament tots els altres tipus de fitxers empaquetats o comprimits tipics de Linux, o sigui que vendria a ser com un WinZip o un WinRAR però de linia de comandes (mmmh... pareix que hi ha GUI per a Hasefroch) i amb llicència LGPL.

I això de la "màxima compressió" d'on surt, vos demanareu? Idò molt fàcil. Sabeu que el zip és molt millor que no comprimir gens, però en general el gzip li passa davant i tots dos són molt ràpids i portables. També sabeu que el bzip2 comprimeix molt més però és més lent i menja més recursos. Idò el 7z continua aquesta tendència, amb totes les opcions al màxim (mirau el manual!) és lent com ell tot sol però comprimeix una barbaritat, d'un 30% a un 50% millor que el zip segons l'autor.

He fet una prova amb el codi font del linux 2.6.9, per començar a agafar-li una mica el truc al 7z (alerta que una prova tota sola no vol dir res, experimentau vosaltres mateixos amb les dades que més vos interessi comprimir!). El tar sense comprimir són 195.14MB. Passat per gzip són 43.80MB, i per bzip2 són 34.58MB. Sense arguments especials, de manera que el gzip ha comprimit rapidissim a nivell 6 (pot arribar fins a 9), i el bzip2 ha comprimit més lent a nivell 9 (per defecte va al màxim).

En canvi amb el 7z amb totes les opcions orientades a màxima compressió sense escatimar temps ni recursos, el fitxer s'ha quedat en 28.45MB. Ha tardat molt més que el bzip2, però també ha comprimit molt més que ell, la qual cosa és bastant impressionant. M'ha agradat. Molt. De vegades desitges arribar al màxim teòric (ja sabeu, allò de l'entropia i els bits per byte que deia en Shannon però més formalment que jo ;-) i amb el 7z t'hi pots acostar una mica més. Ei, potser aquell fitxer que no et cabia al DVD ara t'hi cabrà! :-P

2005-02-08

 

Cell

Avui va de maquinari. Com segurament heu vist a slashdot, resulta que IBM, Sony i Toshiba van donant cada vegada més detalls de l'arquitectura Cell. Si la meitat del que diuen és cert, això arrassarà. Intentaré explicar ràpidament per què.

Coneixeu el processador Apple G5? Idò realment és un IBM PowerPC 970. L'arquitectura PowerPC (per cert, un disseny de 32 i 64 bits des del principi gràcies a la visió d'Apple, Motorola i IBM) és una versió d'anar per casa de l'arquitectura POWER d'IBM. La darrera generació per ara es diu POWER5 i és la bèstia que duen els servidors OpenPower d'IBM. Sí, els que només van amb Linux i no amb AIX, i tenen preus "raonables" a partir d'uns 5000 euros. Tota una revolució coneixent IBM ;-)

Si coneixeu l'Apple G5, segur que sabeu què és l'AltiVec (o "Velocity Engine"). És una unitat de processament vectorial de 128 bits, tipus SIMD (Single Instruction Multiple Data), que permet executar el mateix tipus d'instrucció damunt vàries dades al mateix temps. Sí, en paral.lel, tot optimitzat per hardware.

I si coneixeu les CPUs d'Intel segur que també sabeu què és el HyperThreading. Resumint molt, els processadors d'avui en dia internament paral.lelitzen moltes tasques perquè hi ha una tècnica més ràpida que fer molta via i aquesta tècnica consisteix en fer molta via fent un parell de coses al mateix temps. Idò fent una mica de feina addicional és possible fer que una CPU d'aquestes tan paral.lelitzades de cara a l'usuari sembli que són dues CPUs, cada una amb la seva informació de context, però competint entre elles pels recursos de processament de la única CPU que hi ha realment. Així és maximitza la utilització d'aquests recursos, i la cosa no va com dues CPUs reals però sí que va millor que una tota sola, si els programes que s'executen son concurrents. Això, dit aviat i malament, és el HyperThreading.

De què parlàvem? Ah, si... de Cell. Ara imaginau-vos que agafau una CPU de tipus POWER i li donau la capacitat d'executar dos fils concurrents en pla HyperThreading, cosa que no s'havia fet fins ara (els d'IBM a sistemes molt cars el que feien era damunt el mateix xip posar dues o quatre CPUs POWER completes). I imaginau-vos que això de tenir una unitat de processament vectorial subordinada a un racó vos pareix poc. Imaginau-vos que el processament vectorial el fa un processador que fa "companyia" al POWER. No, millor, imaginau-vos que de processadors vectorials damunt el mateix silici del POWER n'hi posau un parell... per exemple vuit. Sí, he dit dos al cub.

Com que tot està damunt el mateix silici, vos podeu imaginar que la comunicació entre aquestes CPUs vectorials i mestre POWER és bastant ràpida. A més, imaginau-vos que el disseny dels processadors vectorials és tipus Cray, de manera que no hi ha caché perquè directament la seva memòria ja és tan ràpida com una caché. Cada processador vectorial té una petita memòria pròpia, de l'ordre d'un quart de megabyte. Per tant, tenim que els processadors vectorials tenen certa independència però es comuniquen molt bé. Què li dirieu, un cluster damunt un xip? No senyor, li heu de dir Cell. O cel.la, si vos agrada més.

I com suggereix el seu nom, les cel.les estàn dissenyades per treballar en equip. Què és una cel.la, en general, sense altres cel.les? ;-) Pràcticament no hi haurà sistemes d'una sola cel.la, sino de dues, tres, quatre... o moltes més. Les comunicacions internes d'una cel.la són extremadament ràpides, però les comunicacions entre cel.les també són espectaculars.

A més, sabeu el rendiment que dona un G5 a 2.0GHz comparat amb un Pentium 4 a quasi 4.0GHz, a que si? Idò heu de saber que les primeres unitats Cell arribaràn al mercat a freqüències per damunt dels 4.0GHz.

Escalabilitat? Bastanta. IBM, Sony i Toshiba tenen capacitat per fabricar cel.les en grans quantitats, i pensen fer-ho de manera que una cel.la serà tremendament barata en comparació amb una CPU clàssica. El disseny és molt flexible i escalable precisament perquè des del principi es basa en interconnectar cel.les, és escalable per disseny. Se sap que la PlayStation 3 durà un parell de cel.les, potser tres ó quatre. Jo diria que el cluster més potent de la Terra qualque dia també durà un parell de cel.les (més de tres o quatre). I esper que alguna de les meves màquines futures també O:-)

Aquest post sembla propaganda? Tal vegada, però estic realment emocionat. Per primera vegada en molts d'anys veig innovacions reals a l'arquitectura bàsica dels ordinadors. Hem anat optimitzant els processadors paral.lelitzant coses puntuals, però encara en tenim només un, de processador, i els sistemes que en duen un parell no s'integren tan bé com seria desitjable perquè el "treball en equip" és secundari des del principi. En canvi ara tenim un disseny pensat des del principi per fer feina en paral.lel pràcticament a qualsevol escala. Em fa il.lusió veure com acaba tot plegat!

2005-02-05

 

imouthes

Avui m'han dit per quan un bloc? I això vendria a ser una resposta. No sé què hi escriuré, pero com a minim he pensat que els off-topics que vaig penjant a diverses llistes de correu quedarien millor aquí. Així les víctimes, si n'hi ha, seràn voluntàries X'-D

Supòs que xerraré de mestres d'aixa, de programari lliure, de maquinari, de processament i transmissió de dades, de temes d'interès general, i de coses meves :-P

Bé, per ara res més. No, un moment, abans de que ho demaneu...


archives

2005-02  

This page is powered by Blogger. Isn't yours?