2012-02-10 15 views
7

¿Alguien puede ofrecerme alguna información sobre por qué mi implementación en la nube sería más lenta que una computadora local en términos de "caballos de fuerza"?Poder de cálculo de Azure: Extra Large VM lento

Tengo una aplicación de cálculo intensivo que utiliza un rol de trabajador para llevar a cabo millones de cálculos (en paralelo).

Actualmente en Azure estoy realizando pruebas con una máquina virtual extra grande (8 núcleos, 16 GB) para realizar el procesamiento. En promedio, toma 45 minutos por iteración, mientras que el mismo código que se ejecuta en una máquina local de 4 núcleos y 8 GB tarda solo 15 minutos.

Los registros de Azure indican que la utilización total del procesador es del 99% pero tengo 12GB de memoria libre, así que definitivamente intentaré cargar más datos en la memoria para cada iteración.

¿Los 8 núcleos son individualmente de muy baja especificación? ¿El almacenamiento local es realmente local? Es decir, ¿el almacenamiento local está realmente en un dispositivo físico diferente y, por lo tanto, recuperar datos del archivo y escribir resultados en el disco es lento?

Respuesta

1

preguntas de los pares en aquí, voy a tratar de responder a algunas ...

El almacenamiento local es local - significa en el mismo disco, en un área restringida. ¿Estás utilizando las API de almacenamiento local para acceder a ella? El almacenamiento local también es desechable: si su aplicación se redistribuye, se perderán todos los datos del almacenamiento local. Si está utilizando una unidad Azure, entonces sí, esperaría algunas demoras, ya que esto escribe en el almacenamiento de blobs, pero no lo ha mencionado.

La especificación de CPU se define en el sitio web de Azure.

Aunque es difícil resolver su problema real de lentitud sin tener una mejor idea de la arquitectura y el proceso que sigue su trabajo de fondo. Pero como regla general, me sorprendería ver los resultados que está indicando. (¿Es una máquina virtual una VM o un hardware dedicado?)

+0

Sí, estoy usando el almacenamiento local a través de la API. La volatilidad no es un problema para mí. Copio los conjuntos de datos de entrada del almacenamiento de blobs, escribo los resultados provisionales en el almacenamiento local y luego la salida final vuelve a blob. Creo que tendré que agregar más información de seguimiento para averiguar si estoy computado o vinculado a IO. – user1200984

0

Me parece lo mismo cuando se ejecuta código analítico pesado (es decir, poco uso de disco, no se necesita mucha RAM). Supongo que el problema es que seleccionan las CPU en función del precio y la cantidad de núcleos en lugar de la potencia. La teoría es que debe paralelizar su código para aprovechar todos esos núcleos, pero a veces es difícil o costoso (en tiempo de codificación). Considere votar por more CPU power, pero a veces es difícil o costoso.

+0

Sospecho que tienes razón (muchos núcleos de baja potencia). Mi código es altamente paralelo. En este sentido, encontré extensiones PLINQ un gran impulso. A fin de cuentas, esto solo me permite escalar a través de procesadores, mientras que parece que tendré que escalar a través de múltiples roles de trabajador. :-( – user1200984

2

Estoy experimentando el mismo problema. Mi aplicación web con la base de datos (en sql azul) también es muy lenta en comparación con mi computadora local.

Detalles del servidor local: - servidor de nivel de entrada de Dell < $ 1000, con 4 núcleos y 8 GB de memoria. - Server se ejecuta como máquinas virtuales - incluso servidor de base de datos está en el mismo servidor (compartir el mismo hardware con el servidor web)

Azure: - WebRole en el servidor extra grande con 8 núcleos. - SQL Azure (Supongo que en el servidor físico diferente)

¡Mi expectativa era que mejoraría el rendimiento cuando implemente en azul! :( adivinar lo que, es 4 veces más lenta (verificado utilizando el código de perfiles que los tiempos de cada petición)

Estoy decepcionado, creo que es muy lento 8 núcleos.

Corrí la prueba en mi viejo computadora (Intel Pentium). Instaló las mismas VM locales en ese (host VMWare).Es incluso más rápido que azul.

4

Scott Guthrie (principal en el equipo de Windows Azure) me
Hola Iván,

Tenemos otras configuraciones de máquina virtual HW así - incluyendo multi-proc y opciones de memoria de alto. Verá aún más opciones en el futuro.

Espero que esto ayude,

de Scott


Mi prueba: (100% de tiempo de procesador)

cálculos matemáticos Lucas-Lehmer. versión multihilo utiliza la aplicación Parallel.For

Core i7 3770K ordenador principal (4 núcleos x 3,5 GHz) (Win 8)

SINGLETHREADED (17 números primarios): (. 11.6 segundos) 11676 ms

multiproceso (17 números primarios): 2816 ms (2,8 seg.)

Azure grande VM (4 núcleos x 1,6 GHz) (Win S 2008)

SINGLETHREADED (17 números primarios): 37275 ms

multiproceso 17 números primarios): 10118 ms

Azure Extra Grande VM (8 núcleos x 1,6 GHz) (Win S 2008)

SINGLETHREADED (17 números primarios): 36232 ms

multiproceso (17 números primarios): 6498 m informáticos

Work - FX AMD 6100 (6 núcleos x 3,3 Ghz) (Win 7 w UPD)

SINGLETHREADED (17 números primarios): 48758 ms

multiproceso (17 números primarios): 16486 ms

Vote por esta idea en la primera página http://www.mygreatwindowsazureidea.com/forums/34192-windows-azure-feature-voting/suggestions/3622286-upgrade-windows-azure-processor-from-1-6-ghz-to-mi

+0

¡La computadora de su hogar supera a todas! ¿Podemos alquilar la computadora de su casa? –

Cuestiones relacionadas