Demasiados Threads Bajan el Rendimiento

Es bueno notar que hay que seleccionar correctamente el nivel de concurrencia de las aplicaciones de acuerdo al hardware en el que se van a ejecutar.

Si se tienen muchos thread compitiendo por el tiempo de las o las CPUs se pierde mucho tiempo en la selección de qué thread se ejecuta y el context switching.

En la aplicación que me ocupa, se usan varios threads para aprovechar los tiempos de espera al leer y escribir de la base de datos. Como al hacer una consulta, el driver se duerme a la espera de que haya datos que leer desde el socket, otros thread puede pedir una escritura o hacer un procesamiento de algo leído ateriormente. Además disponemos de un hardware con 2 procesadores Xeon.

La idea era tener una thread que esté continuamente leyendo datos de a lotes y poniéndlos en una cola para ser procesados, un conjunto de threads procesando los lotes leídos y poniéndolos en otra cola y un thread the lea de esa última cola y los escriba en la base.

En un primer momento se detectó que el tiempo de procesamiento estaba muy fuertemente determinado por el tiempo de lectura, es decir, todos los demás threads estaban a la espera de que hubiera algo que procesar en casi todo momento.

Se contraron los esfuerzos en mejorar la consulta de lectura y ¡oh sorpresa!, el tiempo de lectura se redujo, pero el tiempo total aumentó.

  • Antes: 18.262.559 registros en 40.753 segundos.
  • Después: 12.070.144 registros en 56.271 segundos.

Menos registros insumen más tiempo, sin embargo los tiempos de cada etapa de la tarea eran menores:

  • Antes: lectura 1.454, escritura 25.804 y procesamiento 814
  • Después: lectura 913, escritura 14.082 y procesamiento 221

¿Entonces procesando un 33% menos de registros y con una consulta un poco mejor los tiempos de lectura, procesamiento y escritura se reducen, pero el tiempo total aumenta? ¿En qué se perdió ese tiempo? El tiempo de lectura contempla desde que se realiza la consulta hasta que se ha leído el lote completo. El tiempo de procesamiento contenpla desde que se toma el lote hasta que se lo deposita para ser escrito y el tiempo de escritura desde que se lo toma hasta que se lo ha escrito completamente. Si en cada uno de los procesos el thread es detenido porque otro thread necesita la CPU, ese tiempo se está contabilizando doble. Por ejemplo si mientras se escribe un lote se lee otro.

Mi teoría es que ese tiempo es overhead por tener 6 threads (1 lee, 1 escribe y 4 procesan) con 2 procesadores. Mucha competencia hace que se pierda mucho tiempo de procesamiento.

Reduje en número de threads que hacen procesamiento a 2. Si observo una mejora en los números, probaré con sólo 1 thread que procese.

Software Legal en Argentina: Resumen

Pasando un poco en limpio, las últimas entradas de este blog.

Según La Nación, no se venden más versiones OEM de Windows así que retiramos esa alternativa.

Veamos la alternativa más barata en lo posible en la plataforma Windows.

  • Activar online un XP pirata $390.
  • Office para estudiantes y profesores: $299.
  • Total: $689.

Ninguno es la última versión disponible y la licencia de XP no es transferible a otra PC.

En MAC algo equivalente sale $968. El MacOS X sí es el último disponible y supongo que el office también. La versión de Office para MAC (siempre para estudiantes y profesores) es más cara.

Software Legal para Mac

Si tenés una MAC o si querés tenerla, podés comprar también el sistema operativo y la suite de oficina online.

Si te la comprás nueva, el Mac OS X viene incorporado.

Precios de Software para MAC

Lo curioso es que acá tabién te venden la versión de Office para estudiantes y profesores, pero no dice cómo hay que demostrar serlo.

Windows Vista: Home Basic vs. Ultimate

Windows Vista viene en varios sabores. Estuve mirando las diferencias y la verdad que no sé hasta qué punto justifican el salto de US$174,99 a US$359,99 (más del doble).

  1. “Elegant Windows Aero desktop experience with glass-like menu bars, Windows Flip 3D, and Live Thumbnails”. Eso no es más que efectos visuales. ¿Cuánto estás dispuesto a pagar por algo no esencial?
  2. “Best choice for laptops with Windows Mobility Center and Tablet PC support”. Si no tenés una tablet PC o una handheld, no tiene ninguna utilidad. Y si sí tienes una, tampoco creo que sea esencial.
  3. “Collaborate and share documents with Windows Meeting Space”. Es una aplicación, ni más ni menos. Las típicas aplicaciones que la gente empieza a necesitar algo a partir del momento en que sabe que existes y no antes.
  4. “Extend Windows Vista to secondary displays and devices with Windows SideShow”. Hay que tener dos monitores.
  5. “Windows Media Center”. A algunas personas le sirven estas aplicaciones para integrar el tele a la PC. Sobre todo si tenés cable digital o muchos DVDs.
  6. “Protect against hardware failure with Windows Complete PC Backup and Restore”. ¿La herramienta de backup es un extra?
  7. “Windows Fax and Scan. Easily send and receive faxes or scan documents and images with Windows Fax and Scan”. No conozco nadie que use el fax de la PC y los programas para escanear vienen cuando comprás el escáner. ¿Ahora Windows lo hace fácil?
  8. “Use Scheduled Backup to automatically backup your files”. Eso ni vale la pena mencionarlo. Me parece un detalle muy poco importante como para no haberlo incluído en al apartado 6.
  9. “Easier remote access for your business. Get to the resources and applications you need with Remote Desktop Connection”. No incluir esto en todas las versiones es de mal tipo.
  10. “Better protect your data against loss with Windows BitLocker Drive Encryption”. Es casi positivo que no esté porque el 99% de la gente no encripta nada.
  11. “Easily make DVDs with Windows DVD Maker”. Una aplicación para hacer DVDs con menúes (eso supongo).
  12. 3 Juegos.
  13. “Create high definition movies with Windows Movie Maker in High Definition”. Creo que para usar esto se necesita tener una filmadora.

La larga lista de diferencias entre la versión más barata y la más cara puede hacernos sentir que nos estamos perdiendo de algo por no tener tanto dinero para gastar (o invertir).

La realidad es que la lista se reduce a 3 cosas:

  1. Efectos visuales en el escritorio.
  2. Media Center.
  3. Más aplicaciones incluidas de fábrica.

Como al comprar Windows vista en el DVD vienen todas las versiones y es el instalador el que decide qué instalar según qué licencia hayamos adquirido, todas las diferencias son diferencias de configuración. No hay más que estrategias de venta detrás de esos distintos sabores.