Image 01 Image 02

¿Será Leopard más rápido que Tiger en mi máquina?

Publicado el 22 Junio 2006 por juandesant
23

Los usuarios de Mac OS X estamos muy mal acostumbrados. Frente al enlentecimiento patente que se produce sobre un mismo equipo cuando se pasa de una versión de Windows a la versión siguiente, o la mezcla de mejoras y pérdidas de rendimiento que se producían con las actualizaciones del Mac OS clásico, *todas* las versiones de Mac OS X han ido mejorando su rendimiento frente a la versión anterior sobre el mismo hardware —con el cambio, de Tiger a Panther, de la memoria mínima recomendada de 256MB a 512MB—.

Sabemos —porque Steve Jobs lo anunció en la WWDC de 2005— que esta WWDC de Agosto estará dedicada casi exclusivamente a Leopard: qué nuevas bibliotecas de funciones de programación incorporará, qué cambios de interfaz beneficiarán a desarrolladores y usuarios, y cosas así. Pero la pregunta que se hacen muchos usuarios —al menos, MACnolo Santana sí se la hace— es:

¿Conseguirá Leopard sacar aún más rendimiento de mi máquina actual?

En principio, y si atendemos a la historia de las actualizaciones del Mac OS X, la respuesta debería ser: muy probablemente. Si la pregunta se ciñe a los Macs con PowerPC, puede aparecer la duda: ¿se dejarán de hacer optimizaciones para PowerPC?

La historia hasta ahora

Como hemos dicho, cada versión de Mac OS X ha ido trayendo mejoras en velocidad respecto a la versión anterior. Sin embargo, la diferencia entre versiones ha ido disminuyendo. En concreto, la diferencia en velocidad entre Mac OS X 10.0 (Cheetah) y Mac OS X 10.1 (Puma) era abismal. Aún se precibían como lentos algunos elementos del interfaz, pero el redibujado, el arranque, y la utilización general del sistema era mucho más rápida. Además, Puma fue una actualización gratuita —si se pedía en un centro autorizado Apple; se cobraba el envío de un CD si se pedía en la web de Apple—, que aparte de muchísimos aumentos de velocidad, incluía capacidades de Mac OS 9 que faltaban en Mac OS X, como grabación de CDs, reproducción de DVDs, etcétera.

La siguiente actualización, de Puma a Jaguar, también permitió ganancias en velocidad, especialmente en la reproducción de vídeo, y en toda la interfaz gráfica, gracias al uso de la GPU —Graphics Processing Unit, o microprocesador especializado en gráficos de las tarjetas de vídeo— para la creación de todos los efectos Quartz. Mucha gente opina que Jaguar es la primera versión seria de Mac OS X.

En el salto de Jaguar a Panther de nuevo hubo ganancias en velocidad, en este caso debido al uso de una tecnología, Cocoa Bindings, que permite que el sistema se encargue del envío de valores entre el código del programa y el interfaz, de modo que los programas ocupan muchísimo menos —a cambio de un ligero aumento de la memoria ocupada por el sistema, pero repartido entre todas las aplicaciones—.

El salto del Tigre

En Tiger, las optimizaciones han sido diferentes en naturaleza. Todas las optimizaciones fáciles se habían realizado, y algunos cambios de infraestructura introducidos en Panther, como de la base del kernel XNU para sincronizarla con las novedades en el kernel FreeBSD 5, no habían sido explotados del todo. Así que, en primer lugar, se explotaron esos cambios —Spotlight y el Finder utilizan las funciones kqueue para recibir notificaciones de cambios de contenido de archivos, por ejemplo, sin tener que estar consultando continuamente si ha cambiado algo, por ejemplo—, y se aprovechó para hacer algo muy importante: aumentar el número de cauces hacia el kernel, y fijar la forma de utilizar esos cauces.

Empezando por la última parte, al igual que el sistema operativo ofrece APIs, que son bibliotecas de funciones proporcionadas por el sistema, Tiger ofrece KPIs, que son bibliotecas de funciones proporcionadas por el kernel, que son necesarias para quienes crean drivers para dispositivos, o quienes quieren comunicarse directamente con el kernel para implementar alguna función que requiera de una enorme velocidad, y un número mínimo de intermediarios. Con anterioridad a Tiger, esas funciones se vinculaban directamente al kernel, y si cambiaba el kernel —como de Jaguar a Panther—, esos drivers podrian dejar de funcionar. Sin embargo, con Tiger, los drivers se vinculan indirectamente mediante las KPIs, que Apple va a mantener intactas. Eso significa que Apple podrá hacer grandes cambios en el kernel, si lo desea, y mientras que mantenga la promesa de dejar intactas las KPIs, los drivers —y otras aplicaciones exóticas— seguirán funcionando.

De otra parte, respecto al funcionamiento anterior del kernel, que obligaba a mantener una única cola a todas las peticiones —por ejemplo, de procesar un paquete de información que ha llegado por el puerto de red, o procesar la información que está viajando por FireWire o USB, o grabar algo en disco—, y sólo se podía procesar una por vez. Esto significa que si hay varias aplicaciones —o varias tareas dentro de la misma aplicación— que querían hacer cosas diferentes, pero vinculadas con el kernel, tenían que luchar por el acceso al kernel. Al menos, en Panther y anteriores existían, en realidad dos colas: una para acceso a la red, y otra para el resto de operaciones del kernel. Si una aplicación quería grabar algo a disco, mientras que otra quería enviar algo por la red, podían acceder al kernel a la vez, pero si las dos pretendían tener acceso al sistema de archivos, por ejemplo, tendrían que esperar a que la otra petición hubiera terminado —ojo, la petición, no la tarea entera—.

Sin embargo, en Tiger eso cambia: existen una granularidad más fina en el acceso a las funciones del kernel, y una tarea puede estar accediendo a la información sobre un archivo (su tamaño, nombre, número de nodo, etcétera), y otra grabando o leyendo información de un archivo, sin que una actividad dependa de la otra. El nivel de granularidad no es tan alto como en otros sistemas operativos, pero también permite que el sistema operativo tenga que perder menos tiempo en controlar qué partes del kernel están en uso y hay que obligar a que otras tareas esperen hasta que esa parte quede libre.

Ruge el Leopardo

¿Entonces, dónde puede haber mejoras en el Leopard? Un candidato bastante plausible es el kernel: se ha mencionado en muchos artículos que el rendimiento de Mac OS X, para cierto tipos de cargas, es muy inferior al de Linux, y eso es cierto sólo hasta cierto punto: Mac OS X optimiza sus asignaciones de memoria para tamaños diferentes de los que utiliza Linux, y programas que utilizan el tamaño que Linux considera como óptimo no funcionan tan bien en Mac OS X; un simple cambio en ese tamaño devuelve un rendimiento similar a Linux y Mac OS X.

Pero lo que es cierto es que, debido a la arquitectura mixta de microkernel Mach más el kernel BSD, muchas veces se producen envíos de mensajes dentro del kernel, lo que origina cambios de contexto (hay que borrar el contenido de las cachés del procesador, y llenarlas de nuevo, lo que implica un proceso bastante lento de acceso a la memoria). Esos cambios son mucho más frecuentes en Mac OS X que en Linux, precisamente debido a que dentro del núcleo se envían muchos mensajes, en lugar de realizar simples llamadas a funciones, que son “más baratas” en términos de tiempo de acceso a memoria, y de memoria ocupada y cambios de contexto.

Pero aquí llegan las buenas noticias: gracias a la implementación de los KPIs en Tiger, ahora sí es posible hacer grandes cambios en el kernel, y reducir la mensajería donde no es necesaria, y cambiarla por llamadas entre funciones, sin que se rompa nada. Así que es muy posible que veamos grandes cambios en el kernel de Leopard.

¿Cambiar el kernel XNU por el de Linux?

También ha habido mucha especulación en la red sobre el posible reemplazo del kernel XNU (recordemos, el híbrido de Mach y FreeBSD que es el núcleo de Darwin, la parte Unix del Mac OS X) por el kernel Linux. Así, mencionan quienes defienden esta postura, se obtendría una mejora en el rendimiento en aplicaciones con gran número de accesos y transacciones, y de aplicaciones que hagan un gran uso de grandes asignaciones de memoria.

Pero hay un par de factores que lo impiden:

Y el veredicto es…

Recordemos nuestra pregunta original:

¿Conseguirá Leopard sacar aún más rendimiento de mi máquina actual? ¿Incluso aunque sea PowerPC?

Pues creo que la respuesta debe ser . Sí, porque por fin Mac OS X está lo suficientemente maduro como para que Apple pueda centrarse en el rendimiento del kernel, y reducir, como he mencionado, el número de funciones que se realizan mediante “peticiones” y “mensajes”, que son más lentas, para pasar a implementarlas como “actuaciones directas” (llamadas a funciones de sistema).

No sólo eso, sino que esas mejoras son independientes del microprocesador que se vaya a utilizar, si bien, debido al mayor número de instrucciones PowerPC necesarias para los accesos a memoria, van a beneficiar aún más a esta arquitectura. Así que cuando salga Leopard, no voy a dudar de instalarlo en mi ya veterano PowerBook G4.

Enlaces

Otros enlaces relacionados de la bitácora



23
Respuestas a.. ¿Será Leopard más rápido que Tiger en mi máquina?

Mauricio publicado el 22 Junio, 2006

Otra mejora importante en rendimiento, además del upgrade al kernel podría ser en Spotlight, se rumora también su reescritura total, y en lo personal creo que sí podría mejorarse, sobre todo tomando en cuenta lo que ofrece QuickSilver que es realmente rápido y muy parametrizable.

Qué más nos deparará Leopard así como para dejar atrás lo vistoso del Vista? …



coolkamio publicado el 22 Junio, 2006

Yo me conformo con que solución el problema del kernel mach de la paginación de memoria..
O que le cambien el kernel como se ha especulado…

Es el principal problema de velocidad que tiene el Mac Os X, y es la razón por la que a veces la interfaz tarda en responder, o por el que abrir cientos de pestañas en safari va lento, o por lo que un programa que indexa el disco duro puede llegar a usar 24gb en el disco duro de memoria virtual o por que el Mac Os X es más lento en ciertas tareas de servidor..

Pones el link al artículo de John Siracusa en el que especula con el candidato a sustituir el kernel, por L4.. pero no lo mencionas ;)

A mi no me gusta el kernel de Linux, y considero que hay kernel mejores..
Para mi en muchos sentidos sería un paso atrás..

No sé que vía tomará Apple, si mejorar mach o sustituirlo, o crear un nuevo kernel..
L4 encajaría también con los rumores de la implementación de un hypervisor en el kernel…

Vamos, está claro que Leopard va a ser una release gorda ;)
Los cambios en el kernel, espero que sean future proof ;)



[...] Memoria de Acceso Aleatorio « ¿Será Leopard más rápido que Tiger en mi máquina? Linux versus Mac OS X en Intel Core [...]



juandesant publicado el 22 Junio, 2006

Bueno, coolkamio, según estas pruebas, por mucho que se diga, el _kernel_ de Mac OS X no es el responsable… hay otras cosas que se pueden optimizar mejor:

* “Linux versus Mac OS X en Intel Core”:http://www.entremaqueros.com/bitacoras/memoria/?p=566

Y Mauricio, también podían coger algo de MoRU para el interfaz de Spotlight:

* “MoRU”:http://www.windstormsoftware.com/wssw/index.html



coolkamio publicado el 22 Junio, 2006

De todos modos, si le van a poner un hypervisor en el kernel para virtualizar..
Tendrán que hacer modificaciones grandes, o incluso sustituir el kernel..

Y luego otra cosa que también especulaban y podría darnos un mayor rendimiento en Leopard, es que decían que iban a compilarlo con los compiladores de Intel, en lugar de gcc..

Lo queremos ya, lo queremos ya.. XD



Manueru publicado el 22 Junio, 2006

Hola, quería saber si al salir la nueva versión, los que tenemos TIger u otra versión de MacOS X ¿Tendremos que comprar el Leopard o habrá una actualización del sistema al estilo de las de Linux?



juandesant publicado el 23 Junio, 2006

Hola, Manueru…

Hay dos tipos de actualizaciones de Mac OS X: las menores, por ejemplo, de 10.4.3 a 10.4.6, que es la última, que son gratuitas; y las mayores, como de 10.3 (Panther) a 10.4 (Tiger), que son de pago. Leopard será 10.5, así que para pasarse a Leopard hay que pasar por caja… o bien comprar una máquina que lleve Leopard instalado.

De todas formas, hasta finales de 2006, principios de 2007, no te preocupes ;-)



dariogf publicado el 23 Junio, 2006

Muy interesante, no tiene desperdicio ;)



Manueru publicado el 23 Junio, 2006

Muchas gracias por la aclaración :)



Orophin publicado el 23 Junio, 2006

Aprovechando que ha salido el tema. Cuantas licencias vienen por caja de OS X? vamos, que legalmente en cuantos equipos puedo instalarlo?

Al ser nuevo en mac los sistemas que tengo han venido con las máquinas y esto me pilla totalmente nuevo.



juandesant publicado el 23 Junio, 2006

Legalmente, el sistema que viene con la máquina es exclusivamente para esa máquina… u otra en su lugar. En los últimos años, las grandes actualizaciones costaban 129$ para una instalación, y 199$ para 5 instalaciones.

Otra cosa es que Mac OS X —hasta ahora— no pide número de serie ninguno, de modo que es técnicamente posible instalarlo en tantas máquinas como desees.



UNIX4ALL publicado el 23 Junio, 2006

Uhhhh, yo tampoco duraré en instalarlo en mi viejo iBook G3 Dual-USB, la cosa es … ¿ Estará soportado ?.

Saludos !



eduo publicado el 23 Junio, 2006

Como bien has comentado se pueden esperar mejoras en cuanto a rendimiento en Leopard al igual que las hemos visto en todas las revisiones anteriores de OSX.

Algo importante es recordar siempre (especialmente a los switchers) que aunque el numero de version parece menor (10.0, 10.1, 10.2) realmente son revisiones mayores del sistema, equivalentes a pasar de Windows 95 a 98 o de Windows 2000 a XP. El sistema de versionamiento (que se usa para sacarle jugo a la imagen del “X”) puede confundir a la gente acostumbrada a ver cambios de version mayores (lo cual nos plantaria este año en el MacOSX XV o MacOSX 15, si se siguiera el mismo patron). Se paga por estas revisiones mayores igual que en otros sistemas operativos de pago se paga por versiones mayores (digo “se paga” por simplificar el argumento, claro, poca gente conozco que sepa siquiera lo que cuesta Windows y cómo suele ser bastante más caro que los $129 de OSX para un usuario de a pie).

Eso si, los avances de velocidad han sido menos radicales a medida que pasan las versiones. Las optimizaciones y recompilaciones mayores son menos frecuentes y ahora se esta haciendo mucho más “fine tuning” utilizando finalmente una base estable. Si hubiera un cambio de kernel se podría notar una diferencia radical de velocidad pero no puedo evitar pensar que sería entonces otra de esas versiones donde se dejan de soportar, oficialmente, macs que podían tirar de Tiger perfectamente (soy de la opinion que esto es normal y que la gente realmente no valora la cantidad de tiempo util que da un Mac y la cantidad de versiones nuevas de software que puede soportar antes de ser oficialmente desfasada, que suele ser una o dos versiones antes de serlo fisicamente).

Mucho se ha hablado de las posibilidades del cambio de kernel y me parece interesante saber las opciones que hay por ahi. En los articulos de FatBits John ha dado varias explicaciones he incluso ha tenido que retractarse al serle explicado que hay limitaciones en algunas de sus propuestas pero lo que si queda claro es que el Kernel se esta quedando corto. Lo que era una buena idea hace dos decadas y comodo hace media (NeXT y OSX, respectivamente) ya esta empezando a volverse la pared de piedra que delimita el terreno. Lo que antes proveia un comodo ambiente esta volviendose una limitacion.

Contrario a todas las opiniones que existen yo personalmente pienso que el kernel deberia ser cambiado o modificado sin tener que necesariamente usar uno ya existente. Hasta donde sabemos Apple puede llevar trabajando en un nuevo kernel propio desde hace años y esa (junto con Transient) puede ser una de las razones por las que no se ha liberado el fuente del kernel para intel (porque puede tener ya inicios de lo que sera y porque puede que el kernel nuevo solo soporte Intel).

Al final del dia pienso que aunque no venga un kernel nuevo siguen habiendo montones de optimizaciones que pueden hacerse a aplicaciones e interacciones. Una de las razones que OSX desempeñe tan bien es precisamente que en su momento se tuvo que optimizar a mas no poder para procesadores limitados (G4 en portatiles), con lo que al moverse a un procesador más moderno las optimizaciones ya estaban hechas. Si siguen teniendo las limitaciones mayores eso significa que nos llegan mas optimizaciones pequeñas. Es facil ir rapido cuando tienes un ferrari pero requiere ser bueno para ir a 300 k/h en un Renault 5 :)

Por cierto, fabuloso el MoRU, no lo conocia. Que cosas. Que bonitas son las sorpresas.



juandesant publicado el 23 Junio, 2006

¡Hola, eduo, encantado por tu estupendo comentario! Ya hice un resumen de esas optimizaciones anteriores para faq-mac en el artículo enlazado…

Y respecto al cambio de núcleo, en el artículo siguiente de la bitácora se compara un programa de análisis estadístico para Linux y Mac OS X, R, antes y después de cambiar el asignador de memoria… y lo que antes parecían ser problemas del kernel, ahora ya no lo parecen…

* “Linux versus Mac OS X en Intel Core”:http://www.entremaqueros.com/bitacoras/memoria/?p=566



juandesant publicado el 23 Junio, 2006

UNIX4ALL, no está claro… aunque en principio no hay razón para descartar el soporte a los mismos equipos G3 soportados por Tiger. En el caso de que algún equipo se quedara fuera, puede ser más problemático hacer que funcionen con Leopard, si no se hacen públicos los códigos fuentes de Leopard… aunque, por ahora, sí se está haciendo con TODO el código fuente de Tiger para PowerPC.



Carlos Correa Loyola publicado el 24 Junio, 2006

Este tipo de artículos son los que me gusta leer de cabo a rabo sin pasar nada por alto, pues ya se necesita un nivel más técnico en el mundo Mac OS X.

Simplemente dejar mi comentario para decir que ahora mismo el kernel de Mac OS X tiene lo mejor de ambos mundos: un kernel híbrido (también conocido como kernel modificado) que es una adopción entre microkernel y kernel monolítico (muy popular en el mundo linux). Esto lo sitúa muy por delante en cuestión de adopción de tecnologías recientes frente a un Linux o similares.

Y si he dicho alguna burrada, que sea juande el que me corrija.

Saludos.



juandesant publicado el 24 Junio, 2006

Hola, Carlos, hay otros lectores de la bitácora que te pueden responder tanto o mejor que yo, pero como ninguno lo ha hecho todavía… ;-)

El kernel Mach es un microkernel, pero el kernel FreeBSD es monolítico. XNU, que es como se llama el kernel de Darwin, utiliza el kernel BSD para la mayoría de servicios no relacionados con la gestión de procesos, pero utiliza los servicios de Mach para la creación de tareas, hilos, y demás. Y después está el uso de módulos de kernel que permite introducir drivers en el espacio del kernel sin necesidad de compilarlos directamente en el kernel.

Por cierto, las primeras versiones de Linux eran totalmente monolíticas, pero se fue introduciendo también el concepto de módulos del kernel para poder incluir otros drivers si se iban necesitando… pero con un coste mayor de acceso a esos drivers, de modo que se sigue aconsejando la recompilación del núcleo para hacer uso de los drivers más habituales.

El carácter híbrido de XNU tiene sus ventajas, como una mayor estabilidad, pero también tiene inconvenientes propios, como una menor seguridad, al existir dos esquemas de privilegios: los privilegios BSD para archivos, y los privilegios Mach para la ejecución. Así que ese es otro punto en el que se debe trabajar.

ps. Por cierto, seguramente XNU venga de mezclar el nombre del nuKernel que se estaba creado para Copland y nunca vio la luz, y la X de UNIX y Mac OS X.



Miguel Pérez publicado el 27 Junio, 2006

Excelente artículo, lo he leido una y otra vez y no me canso, y también los comentarios.



Miguel Pérez publicado el 5 Septiembre, 2006

Leyendo algunas cosas más sobre micro kernels y kernels monolíticos, ¿crees que a Apple le interese por ahora cambiar el kernel en Leopard?, no le será más provechoso desarrollar otras funcionalidades (como Time Machine, Core Animation) que gastar su tiempo en el kernel. Para llegar al kernel que ahora tiene Linux pasó mucho tiempo. Además el incremento en velocidad cara al usuario final ya se ha dado con los procesadores Intel, me vuelvo a preguntar ¿le interesará a Apple cambiar el kernel?, por lo menos por ahora.



juandesant publicado el 5 Septiembre, 2006

Estoy de acuerdo contigo, Miguel. Apple parece estar apostando por el metacompilador LLVM para optimizar ciertas partes del código, de modo que en mi opinión seguiremos viendo incrementos de velocidad, sin cambiar la estructura del kernel.



Linuzzz publicado el 18 Septiembre, 2006

Yo soy relativamente nuevo en mundo MAC, ya estoy cambiando todas mis PCs, a ver si alguien me puede ayudar, ¿Qué pasará con los programas para el leopard?
¿Tendría yo que actualizar o comprar nuevos programas que sean compatibles con el leopard? O puedo utilizar los programas que tengo instalados en mi maquina ahora…… yo tengo el sistema 10.3 (panther), uso Dreamweaver, photoshop, etc. y no quise cambiar al 10.4 tiger. Ahora que viene el Leopard pues sí lo estoy considerando.



juandesant publicado el 19 Septiembre, 2006

Tus programas funcionarían sin problema, Linuzzz. Si alguno no funcionara, sería por culpa de una mala práctica del programador, y tendrías una actualización gratuita que lo resolvería.



Leopard versus Tiger « M & M publicado el 4 Marzo, 2007

[...] Leopard versus Tiger Excelente artículo de Juan de Dios Santander que releo cada cierto tiempo para acordarme que voy por el camino correcto. Este es el enlace. [...]



Escribe una respuesta...






Cerrar
Enviar por Correo