Sql 2005 MultiHilo o hyperthreading o Dual Core

27/07/2006 - 10:52 por GenioMaestro | Informe spam
Hola a todos:

Tengo una aplicación desarrollada en sql 2005 que entrará en produccion en
septiembre, espero, y tengo algunos problemas que me hacen dudar sobre la
configuracion de la maquina de produccion.

Es un sistema de calculo bursatil. La base de datos tiene ya unos 15 GB y
creciendo. La estructura interna es muy sencilla, tan solo tengo dos tablas
principales, una de cotizaciones con 8 campos y otra de calculos con 53
campos. Pero eso si, cada tabla tiene unos 25 Millones de registros.

El programa lo he desarrollado en el portatil, un centrino 1.6 con 1 Gb de
memoria y se mueve muy bien, usando el micro siempre por encima del 80% y
mucho tiempo al 100%, lo que veo normal porque estoy haciendo muchos
calculos matematicos y consultas bastante complejas.

El problema lo tengo al pasar a la maquina grande de desarrollo. Es un
Pentium4 3.2 con HT, un 630 o 640 con 2 Gb de memoria y 200 Gb de disco duro
Sata2 de 3 Gbs y NCQ. En esta maquina, el uso del procesador está cerca del
50% con un máximo del 55%. Parece como si no usara el HT. Y sin embargo, los
dos graficos se mueven en paralelo, cuando uno sube el otro baja y
viceversa.

En el portatil centrino no hay HT y supuse que al pasarlo a la maquina
grande, con un micro más potente, los tiempos mejorarían, pero no es así. He
probado a poner un Dual Core, que no es HT, pero me pasa lo mismo. Los
tiempos de calculo son exactamente los mismos, tanto en el portatil como en
el P4 con HT que con el Dual Core.

Alguna idea de lo que puede estar pasando???? Que maquina pongo en
produccion si todas las maquinas me tardan lo mismo????

Todas las maquinas tienen Windows XP Pro SP2, y la version demo de 6 meses
de Sql Server 2005 Enterprise.

Espero vuestras ideas y orientaciones.

Gracias.

Preguntas similare

Leer las respuestas

#1 Miguel Egea
28/07/2006 - 01:19 | Informe spam
Revisa a ver si tienes muchas esperas CXPACKET, es decir esperas por
paralelismo usa el hint maxdop con valor 1 para no permitir paralelismo y
comprueba si has mejorado el rendimiento.

Saludos
Miguel Egea
"GenioMaestro" wrote in message
news:%
Hola a todos:

Tengo una aplicación desarrollada en sql 2005 que entrará en produccion en
septiembre, espero, y tengo algunos problemas que me hacen dudar sobre la
configuracion de la maquina de produccion.

Es un sistema de calculo bursatil. La base de datos tiene ya unos 15 GB y
creciendo. La estructura interna es muy sencilla, tan solo tengo dos
tablas principales, una de cotizaciones con 8 campos y otra de calculos
con 53 campos. Pero eso si, cada tabla tiene unos 25 Millones de
registros.

El programa lo he desarrollado en el portatil, un centrino 1.6 con 1 Gb de
memoria y se mueve muy bien, usando el micro siempre por encima del 80% y
mucho tiempo al 100%, lo que veo normal porque estoy haciendo muchos
calculos matematicos y consultas bastante complejas.

El problema lo tengo al pasar a la maquina grande de desarrollo. Es un
Pentium4 3.2 con HT, un 630 o 640 con 2 Gb de memoria y 200 Gb de disco
duro Sata2 de 3 Gbs y NCQ. En esta maquina, el uso del procesador está
cerca del 50% con un máximo del 55%. Parece como si no usara el HT. Y sin
embargo, los dos graficos se mueven en paralelo, cuando uno sube el otro
baja y viceversa.

En el portatil centrino no hay HT y supuse que al pasarlo a la maquina
grande, con un micro más potente, los tiempos mejorarían, pero no es así.
He probado a poner un Dual Core, que no es HT, pero me pasa lo mismo. Los
tiempos de calculo son exactamente los mismos, tanto en el portatil como
en el P4 con HT que con el Dual Core.

Alguna idea de lo que puede estar pasando???? Que maquina pongo en
produccion si todas las maquinas me tardan lo mismo????

Todas las maquinas tienen Windows XP Pro SP2, y la version demo de 6 meses
de Sql Server 2005 Enterprise.

Espero vuestras ideas y orientaciones.

Gracias.

Respuesta Responder a este mensaje
#2 GenioMaestro
28/07/2006 - 11:03 | Informe spam
Como se monitorizan esas esperas CXPACKET??? Plis.

"Miguel Egea" escribió en el mensaje
news:
Revisa a ver si tienes muchas esperas CXPACKET, es decir esperas por
paralelismo usa el hint maxdop con valor 1 para no permitir paralelismo y
comprueba si has mejorado el rendimiento.

Saludos
Miguel Egea
"GenioMaestro" wrote in message
news:%
Hola a todos:

Tengo una aplicación desarrollada en sql 2005 que entrará en produccion
en septiembre, espero, y tengo algunos problemas que me hacen dudar sobre
la configuracion de la maquina de produccion.

Es un sistema de calculo bursatil. La base de datos tiene ya unos 15 GB y
creciendo. La estructura interna es muy sencilla, tan solo tengo dos
tablas principales, una de cotizaciones con 8 campos y otra de calculos
con 53 campos. Pero eso si, cada tabla tiene unos 25 Millones de
registros.

El programa lo he desarrollado en el portatil, un centrino 1.6 con 1 Gb
de memoria y se mueve muy bien, usando el micro siempre por encima del
80% y mucho tiempo al 100%, lo que veo normal porque estoy haciendo
muchos calculos matematicos y consultas bastante complejas.

El problema lo tengo al pasar a la maquina grande de desarrollo. Es un
Pentium4 3.2 con HT, un 630 o 640 con 2 Gb de memoria y 200 Gb de disco
duro Sata2 de 3 Gbs y NCQ. En esta maquina, el uso del procesador está
cerca del 50% con un máximo del 55%. Parece como si no usara el HT. Y sin
embargo, los dos graficos se mueven en paralelo, cuando uno sube el otro
baja y viceversa.

En el portatil centrino no hay HT y supuse que al pasarlo a la maquina
grande, con un micro más potente, los tiempos mejorarían, pero no es así.
He probado a poner un Dual Core, que no es HT, pero me pasa lo mismo. Los
tiempos de calculo son exactamente los mismos, tanto en el portatil como
en el P4 con HT que con el Dual Core.

Alguna idea de lo que puede estar pasando???? Que maquina pongo en
produccion si todas las maquinas me tardan lo mismo????

Todas las maquinas tienen Windows XP Pro SP2, y la version demo de 6
meses de Sql Server 2005 Enterprise.

Espero vuestras ideas y orientaciones.

Gracias.




Respuesta Responder a este mensaje
#3 Miguel Egea
28/07/2006 - 11:25 | Informe spam
primero ejecutas dbcc sqlperf(waitstats,clear)
ejecuts tus consultas
y despues
dbcc sqlperf(waitstats)


saludos

"GenioMaestro" wrote in message
news:
Como se monitorizan esas esperas CXPACKET??? Plis.

"Miguel Egea" escribió en el mensaje
news:
Revisa a ver si tienes muchas esperas CXPACKET, es decir esperas por
paralelismo usa el hint maxdop con valor 1 para no permitir paralelismo y
comprueba si has mejorado el rendimiento.

Saludos
Miguel Egea
"GenioMaestro" wrote in message
news:%
Hola a todos:

Tengo una aplicación desarrollada en sql 2005 que entrará en produccion
en septiembre, espero, y tengo algunos problemas que me hacen dudar
sobre la configuracion de la maquina de produccion.

Es un sistema de calculo bursatil. La base de datos tiene ya unos 15 GB
y creciendo. La estructura interna es muy sencilla, tan solo tengo dos
tablas principales, una de cotizaciones con 8 campos y otra de calculos
con 53 campos. Pero eso si, cada tabla tiene unos 25 Millones de
registros.

El programa lo he desarrollado en el portatil, un centrino 1.6 con 1 Gb
de memoria y se mueve muy bien, usando el micro siempre por encima del
80% y mucho tiempo al 100%, lo que veo normal porque estoy haciendo
muchos calculos matematicos y consultas bastante complejas.

El problema lo tengo al pasar a la maquina grande de desarrollo. Es un
Pentium4 3.2 con HT, un 630 o 640 con 2 Gb de memoria y 200 Gb de disco
duro Sata2 de 3 Gbs y NCQ. En esta maquina, el uso del procesador está
cerca del 50% con un máximo del 55%. Parece como si no usara el HT. Y
sin embargo, los dos graficos se mueven en paralelo, cuando uno sube el
otro baja y viceversa.

En el portatil centrino no hay HT y supuse que al pasarlo a la maquina
grande, con un micro más potente, los tiempos mejorarían, pero no es
así. He probado a poner un Dual Core, que no es HT, pero me pasa lo
mismo. Los tiempos de calculo son exactamente los mismos, tanto en el
portatil como en el P4 con HT que con el Dual Core.

Alguna idea de lo que puede estar pasando???? Que maquina pongo en
produccion si todas las maquinas me tardan lo mismo????

Todas las maquinas tienen Windows XP Pro SP2, y la version demo de 6
meses de Sql Server 2005 Enterprise.

Espero vuestras ideas y orientaciones.

Gracias.








Respuesta Responder a este mensaje
#4 GenioMaestro
28/07/2006 - 12:14 | Informe spam
Me dice esto:

Total 89835 571562 578
SOS_SCHEDULER_YIELD 58124 312 296
PAGELATCH_EX 24534 93 78
SLEEP_BPOOL_FLUSH 3214 19109 140
WRITELOG 2467 2265 62
PAGEIOLATCH_SH 422 9796 0
PAGEIOLATCH_EX 380 4265 0
LAZYWRITER_SLEEP 269 267625 0
SLEEP_TASK 234 0 0
ASYNC_NETWORK_IO 115 31 0
SQLTRACE_BUFFER_FLUSH 67 268000 0
PAGEIOLATCH_UP 9 62 0


La fila de CXPACKET da cero en las tres columnas. Por tanto mi problema no
es por las esperas CXPACKET.

Creo que el problema es otro. No se exactamente donde lo he leido, pero creo
que lo unico que se puede paralelizar son las SELECT, no los INSERT, ni los
UPDATE, ni los DELETE.

Precisamente, el sistema de calculo lo que hace es, primero un INSERT en la
tabla calculos, y luego varios UPDATE en la misma tabla.

Lo que tengo es un registro en la tabla de calculos por cada registro en la
tabla de cotizaciones. Y luego calculo muchas cosas interdependientes, es
decir, algunos calculos se hacen mediante select sobre la tabla de
cotizaciones, pero otros se hacen con select de la tabla calculos. Más
claro. Las columnas 1 a 7 de la tabla calculos las obtengo con una select
sobre la tabla cotizaciones, pero para calcular las columnas 8 a 11 necesito
datos de las columnas 1 a 7 de la tabla de calculos.

Creo el sistema de calculo no corre más porque no puede correr más. Si
desactivo el HT en el equipo grande, el uso de micro se mueve exactamente
igual que en el portatil, y los tiempos son ligeramente inferiores, de 3.8
seg que tarda en el portatil a 3.1 que tarda en el fijo.

El problema que sigo teniendo es que maquina pongo en produccion, por que
una maquina multiprocesador creo que no aumentará el rendimiento del
sistema. Entonces creo que lo unico que puedo poner es un XEON normal, no un
XEON MP, o bien un AMD 64, no un AMD 64X2.

Alguna correccion o sugerencia????

Gracias.

"Miguel Egea" escribió en el mensaje
news:
primero ejecutas dbcc sqlperf(waitstats,clear)
ejecuts tus consultas
y despues
dbcc sqlperf(waitstats)


saludos

"GenioMaestro" wrote in message
news:
Como se monitorizan esas esperas CXPACKET??? Plis.

"Miguel Egea" escribió en el mensaje
news:
Revisa a ver si tienes muchas esperas CXPACKET, es decir esperas por
paralelismo usa el hint maxdop con valor 1 para no permitir paralelismo
y comprueba si has mejorado el rendimiento.

Saludos
Miguel Egea
"GenioMaestro" wrote in message
news:%
Hola a todos:

Tengo una aplicación desarrollada en sql 2005 que entrará en produccion
en septiembre, espero, y tengo algunos problemas que me hacen dudar
sobre la configuracion de la maquina de produccion.

Es un sistema de calculo bursatil. La base de datos tiene ya unos 15 GB
y creciendo. La estructura interna es muy sencilla, tan solo tengo dos
tablas principales, una de cotizaciones con 8 campos y otra de calculos
con 53 campos. Pero eso si, cada tabla tiene unos 25 Millones de
registros.

El programa lo he desarrollado en el portatil, un centrino 1.6 con 1 Gb
de memoria y se mueve muy bien, usando el micro siempre por encima del
80% y mucho tiempo al 100%, lo que veo normal porque estoy haciendo
muchos calculos matematicos y consultas bastante complejas.

El problema lo tengo al pasar a la maquina grande de desarrollo. Es un
Pentium4 3.2 con HT, un 630 o 640 con 2 Gb de memoria y 200 Gb de disco
duro Sata2 de 3 Gbs y NCQ. En esta maquina, el uso del procesador está
cerca del 50% con un máximo del 55%. Parece como si no usara el HT. Y
sin embargo, los dos graficos se mueven en paralelo, cuando uno sube el
otro baja y viceversa.

En el portatil centrino no hay HT y supuse que al pasarlo a la maquina
grande, con un micro más potente, los tiempos mejorarían, pero no es
así. He probado a poner un Dual Core, que no es HT, pero me pasa lo
mismo. Los tiempos de calculo son exactamente los mismos, tanto en el
portatil como en el P4 con HT que con el Dual Core.

Alguna idea de lo que puede estar pasando???? Que maquina pongo en
produccion si todas las maquinas me tardan lo mismo????

Todas las maquinas tienen Windows XP Pro SP2, y la version demo de 6
meses de Sql Server 2005 Enterprise.

Espero vuestras ideas y orientaciones.

Gracias.











Respuesta Responder a este mensaje
#5 Miguel Egea
28/07/2006 - 13:54 | Informe spam
de los que me parecen significativos las esperas tienes de dos tipos
pagelatch y pageiolatch una es contención de caché , la otra es contención
de disco, ninguna creo que sea especialmente significativa ni que tenga que
ver con tu proceso. Lo que si que podemos hacer es optimización pura y dura

Si puedes ejecutar tu proceso poniento set statitisc io on, set statistics
time on después ejecutar tu proceso y pasarnos los resultados podemos seguir
mirando, No es que SQL sea una aplicacioŽn indicada para hacer "calculo
vectorial", pero no creo que en operaciones "pequeñas" de cpu te vaya a
suponer un cuello de botella, tiene que haber algo más.

Saludos
Miguel Egea


"GenioMaestro" wrote in message
news:%
Me dice esto:

Total 89835 571562 578
SOS_SCHEDULER_YIELD 58124 312 296
PAGELATCH_EX 24534 93 78
SLEEP_BPOOL_FLUSH 3214 19109 140
WRITELOG 2467 2265 62
PAGEIOLATCH_SH 422 9796 0
PAGEIOLATCH_EX 380 4265 0
LAZYWRITER_SLEEP 269 267625 0
SLEEP_TASK 234 0 0
ASYNC_NETWORK_IO 115 31 0
SQLTRACE_BUFFER_FLUSH 67 268000 0
PAGEIOLATCH_UP 9 62 0


La fila de CXPACKET da cero en las tres columnas. Por tanto mi problema no
es por las esperas CXPACKET.

Creo que el problema es otro. No se exactamente donde lo he leido, pero
creo que lo unico que se puede paralelizar son las SELECT, no los INSERT,
ni los UPDATE, ni los DELETE.

Precisamente, el sistema de calculo lo que hace es, primero un INSERT en
la tabla calculos, y luego varios UPDATE en la misma tabla.

Lo que tengo es un registro en la tabla de calculos por cada registro en
la tabla de cotizaciones. Y luego calculo muchas cosas interdependientes,
es decir, algunos calculos se hacen mediante select sobre la tabla de
cotizaciones, pero otros se hacen con select de la tabla calculos. Más
claro. Las columnas 1 a 7 de la tabla calculos las obtengo con una select
sobre la tabla cotizaciones, pero para calcular las columnas 8 a 11
necesito datos de las columnas 1 a 7 de la tabla de calculos.

Creo el sistema de calculo no corre más porque no puede correr más. Si
desactivo el HT en el equipo grande, el uso de micro se mueve exactamente
igual que en el portatil, y los tiempos son ligeramente inferiores, de 3.8
seg que tarda en el portatil a 3.1 que tarda en el fijo.

El problema que sigo teniendo es que maquina pongo en produccion, por que
una maquina multiprocesador creo que no aumentará el rendimiento del
sistema. Entonces creo que lo unico que puedo poner es un XEON normal, no
un XEON MP, o bien un AMD 64, no un AMD 64X2.

Alguna correccion o sugerencia????

Gracias.

"Miguel Egea" escribió en el mensaje
news:
primero ejecutas dbcc sqlperf(waitstats,clear)
ejecuts tus consultas
y despues
dbcc sqlperf(waitstats)


saludos

"GenioMaestro" wrote in message
news:
Como se monitorizan esas esperas CXPACKET??? Plis.

"Miguel Egea" escribió en el mensaje
news:
Revisa a ver si tienes muchas esperas CXPACKET, es decir esperas por
paralelismo usa el hint maxdop con valor 1 para no permitir paralelismo
y comprueba si has mejorado el rendimiento.

Saludos
Miguel Egea
"GenioMaestro" wrote in message
news:%
Hola a todos:

Tengo una aplicación desarrollada en sql 2005 que entrará en
produccion en septiembre, espero, y tengo algunos problemas que me
hacen dudar sobre la configuracion de la maquina de produccion.

Es un sistema de calculo bursatil. La base de datos tiene ya unos 15
GB y creciendo. La estructura interna es muy sencilla, tan solo tengo
dos tablas principales, una de cotizaciones con 8 campos y otra de
calculos con 53 campos. Pero eso si, cada tabla tiene unos 25 Millones
de registros.

El programa lo he desarrollado en el portatil, un centrino 1.6 con 1
Gb de memoria y se mueve muy bien, usando el micro siempre por encima
del 80% y mucho tiempo al 100%, lo que veo normal porque estoy
haciendo muchos calculos matematicos y consultas bastante complejas.

El problema lo tengo al pasar a la maquina grande de desarrollo. Es un
Pentium4 3.2 con HT, un 630 o 640 con 2 Gb de memoria y 200 Gb de
disco duro Sata2 de 3 Gbs y NCQ. En esta maquina, el uso del
procesador está cerca del 50% con un máximo del 55%. Parece como si no
usara el HT. Y sin embargo, los dos graficos se mueven en paralelo,
cuando uno sube el otro baja y viceversa.

En el portatil centrino no hay HT y supuse que al pasarlo a la maquina
grande, con un micro más potente, los tiempos mejorarían, pero no es
así. He probado a poner un Dual Core, que no es HT, pero me pasa lo
mismo. Los tiempos de calculo son exactamente los mismos, tanto en el
portatil como en el P4 con HT que con el Dual Core.

Alguna idea de lo que puede estar pasando???? Que maquina pongo en
produccion si todas las maquinas me tardan lo mismo????

Todas las maquinas tienen Windows XP Pro SP2, y la version demo de 6
meses de Sql Server 2005 Enterprise.

Espero vuestras ideas y orientaciones.

Gracias.















Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida