Es amd64 para servidor en produccion ?

Aldrin Martoq amartoq en dcc.uchile.cl
Mar Jul 8 11:24:35 CLT 2008


2008/7/7 Alvaro Herrera <alvherre en alvh.no-ip.org>:
> Aldrin Martoq escribió:
>> No todo es ganancia en 64bits. Dudo que firefox necesite mas de 3GB de
>> RAM y/o punteros o calculos "grandes". Y pierdes en el cache L1/L2.
>> Entonces, el punto es que debiera ser todo 32-bits por default y solo
>> algunas aplicaciones que lo requieran la opcion de 64 bits.
> Firefox no necesita mas de 3 GB?  Creo que los desarrolladores estarían
> en desacuerdo ;-)
> Mi comentario iba al kernel en todo caso.  El kernel tiene que ser de 64
> bits: para que pueda aprovechar bien la memoria, usar los tipos mas
> gordos con un solo registro en lugar de dos (por ej. en el filesystem
> hay direccionamiento de 48 bits en algunas partes sin no me equivoco),
> etc.  El resto de las cosas, da lo mismo y puedes escoger libremente,
> pero la ganancia por tener los registros extra facilmente puede ser
> mayor que la perdida por tener datos mas anchos.

Bueno, no es requisito que el kernel sea 32bits tampoco! Es solo la
implementacion que se hizo en Linux, con unos cuantos parches (muy
posiblemente no triviales) podrias correr un kernel 32bits, algunas
cosas criticas como direcciones 64bits en vez de PAE y aplicaciones
32/64bits.

MacOS tiene un kernel 32bits por otros factores: soporte de drivers.
En particular, a mi me parece perfecto que se quiebre la
compatibilidad con software propietario; PERO un kernel 32bits con
soporte 64 bits seria una gran ventaja... sigue leyendo:

>> Ese es el problema, reemplazaron todo lo que estaba en /lib es 64 bits
>> y hay que instalar ia32-libs ... el default debiera ser al reves, /lib
>> es 32 bits y /lib-64 64bits o algo por el estilo. Las aplicaciones lo
>> mismo, que sentido tener bash 64bits? etc...
> No entiendo lo que dices.  Da lo mismo dónde estén las bibliotecas.
> Lo importante es que el linker las encuentre.  Si al compilar Firefox le
> das las opciones al compilador para que genere un ejecutable de 32 bits,
> va a funcionar correctamente, sin tener que hacerle nada especial al
> sistema, sin tener que mover bibliotecas.  Ahora, si la distro empaqueta
> Firefox para amd64 en 64 bits o en 32, ya es otro cuento.

Hay dos temas: uno tecnico y otro de efecto de las decisiones
tecnicas. En la parte tecnica Linux soporta un kernel 64bits y
ejecutar aplicaciones 32/64 bits. En la parte del efecto de las
decisiones tecnicas esta el problema.

Hoy todos te dicen "no instales 64 bits, no ganas nada en tu laptop y
mas encima muchas cosas dejaran de funcionar". Eso es un error en mi
opinion: alejar usuarios reduce la presion por mejorar algo y por lo
tanto ralentiza la innovacion. O "given enough eyeballs, all bugs are
shallow" como se decia antes. Se esta privando de las ventajas de
64bits a muchos usuarios.

Ahora imagina el esquema que estoy proponiendo: la distro completa por
omision corre 32bits, pero puedes instalar una aplicacion 64bits si
eso implica una ganancia. Los usuarios no tendrian dudas de instalar
la version 32 o 64 bits, pues seria una sola. Las aplicaciones que
realmente se benefician de amd64 (no solo los 64 bits, sino la mayor
cantidad de registros y otras cosas que desconozco) el usuario (o la
distro) podria optar por instalar las aplicaciones 64bits
recomendadas. Como determinar las aplicaciones 64bits-recomendadas? si
los que empaquetan ffmpeg detectan que mejora el performance en 64
bits, ffmpeg seria una aplicacion "recomendada".

Tecnicamente, esto se podria hacer bastante facil: dejar /lib /bin con
32bits como ahora, dejar /lib-64 y /bin-64 con 64 bits. No hay
necesidad que el linker adivine cual .so tienes que linkear, las
aplicaciones en /bin-64 apuntan a /lib-64/libc-6.so y las en /bin
apuntan a /lib/libc-6.so. El usuario ejecuta firefox y si tiene
/bin-64 en su PATH se ejecutara siempre la de 64bits y opcionalmente
el podria ejecutar el firefox 32bits si tambien lo tiene instalado.


Ahora, si existiera un kernel 32 bits que active features 64bits en
demanda, seria la panacea. Ahi bastaria una sola distro, un solo
kernel y nadie tendria dudas de que cosa instalar! Todos estarian
usando la misma distro; cuando hay ganancia las aplicaciones 64 bits;
habria mas presion por optimizar la perfomance de las aplicaciones de
64 bits! El instalador de ubuntu podria automagicamente instalar por
default las versiones 64 bits de las aplicaciones recomendadas
(ffmpeg, postgres, etc) si detecta que tu CPU soporta 64 bits. Y
ademas, si quieres instalar algo 32 bits no seria un cacho como lo es
hoy, ya que es el mismo esquema para el resto de los tarros.



[...]
> No he probado que pasa instalando Firefox de 32 bits aca, pero mi
> impresion es que si instalas los paquetes de las bibliotecas necesarias,
> deberia funcionar.

Puedes probar y contarnos? ;) Lo ideal seria ver alguna diferencia

Bueno, el problema de como esta disengado ahora es que hacer eso no es
trivial y puede involucrar chroot's y cosas horribles...

>> > ffmpeg sí tiene código ASM optimizado por arquitecturas, puedes mirarlo
>> > acá:
>> > http://svn.mplayerhq.hu/ffmpeg/trunk/libavcodec/
>> No veo a simple vista nada con amd64 o parecidos!
> Hmm, cierto, me confundí entre tener 3Dnow! y amd64 :-)
[...]

Estuve leyendo: hay aplicaciones que con solo compilarlas mejoran y
ffmpeg es al ojo una de esas... La gracia si tuvieramos el esquema que
te indico es que mucha mas gente participaria del mundo 64bits y asi
se podria optimizar ffmpeg-64 hasta dar un veredicto "usen la 64bits
por default!".



Por supuesto que hablar es muuucho mas facil que hacerlo...

-- 
Aldrin Martoq
http://aldrinvideopodcast.podshow.com/



Más información sobre la lista de distribución Linux