Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-11-2013
rabata2001 rabata2001 is offline
Miembro
 
Registrado: nov 2010
Posts: 88
Poder: 14
rabata2001 Va por buen camino
Smile Programa congelado debido a la carga

Buenas a todos,

Tengo un PC (Windows XP) dónde estoy ejecutando tres aplicaciones a la vez y me es necesario así porque ese PC saca información a pantallas al exterior con una tarjeta gráfica de 4 salidas (salida a TV).

El primero proceso y el más costoso realiza un proceso que tarda más o menos 1,5 segundos y deja congelado al pc mientras se ejecuta y esto ocurre cada 4 segundos.

El segundo sistema es más pequeño y es rápido en su ejecución (casi no le afecta)

El tercer sistema es rápido en su ejecución pero es el que más molesta en su visualización se trata de un reloj y una cuenta atrás (Timer cada segundo), debido al efecto del primer programa a veces se salta segundos (se congela). Por ejemplo en el reloj se observa: 10:15:23, 10:15:24, 10:15:26 (no llega a verse pintado la 10:15:25).

He probado usando la afinidad de CPU's al ser un sistema de doble núcleo con windows XP. Lo conveniente sería que una CPU se ocupase de los dos primeras aplicaciones y otra CPU se ocupase del tercer sistema (Visualización del reloj) para evitar la congelación.

¿Alguien se ha encontrado con algo similar?. ¿Alguien ha soluciona esto?. ¿Algún sistema que lo resuelva o través de configuración?.

Gracias a todos por vuestra colaboración.
Responder Con Cita
  #2  
Antiguo 21-11-2013
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Hola rabata2001,

Lo único que puedes hacer es que lo realices con hilos, puede ser la solución a tu problema.

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #3  
Antiguo 21-11-2013
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por olbeup Ver Mensaje
Lo único que puedes hacer es que lo realices con hilos, puede ser la solución a tu problema.
Utilizar diferentes hilos en el mismo programa podría solventar el problemas si los tres procesos se hicieran desde la misma aplicación, pero tal y como explica rabata2001, se trata de tres aplicaciones distintas corriendo en el mismo sistema, por lo tanto,por definición ya funcionan en tres hilos distintos.

Rabata2001, dices que has probado lo de asignar afinidad a los procesadores . ¿Has comprobado que se asigna bien? ¿Has usado imagecfg u otro programa?
Si es así y el problema sigue estando, es posible que no sea problema del procesador, sino de otra cosa.

Asumo que el proceso que te provoca "la parada" en el sistema es el primero.
¿Si lo paras, los otros funcionan bien?

Si ya tienes claro que el problema está en ese proceso, habrá que centrarse en él, para solventarlo.
¿Exactamente qué hece ese proceso que bloquea?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 21-11-2013
rabata2001 rabata2001 is offline
Miembro
 
Registrado: nov 2010
Posts: 88
Poder: 14
rabata2001 Va por buen camino
Smile

buenas tardes y gracias por vuestro comentarios

Cita:
dices que has probado lo de asignar afinidad a los procesadores . ¿Has comprobado que se asigna bien? ¿Has usado imagecfg u otro programa?
No conozco ese sistema que me indicas imagecfg, intentaré descargarlo y probarlo. La asignación la hago desde el mismo panel de procesos de windows XP (afinidad y prioridad)

Cita:
Asumo que el proceso que te provoca "la parada" en el sistema es el primero.
¿Si lo paras, los otros funcionan bien?
Si, al parar el sistema primero, todo se visualiza correctamente

Cita:
Si ya tienes claro que el problema está en ese proceso, habrá que centrarse en él, para solventarlo.
¿Exactamente qué hece ese proceso que bloquea?
El primero muestra una clasificación de resultados que se realiza cada 5 segundos y el proceso tarda en completarse en el peor de los casos entre 1 y 2 segundos (a veces tarda mucho menos). El proceso realiza consultas a la base de datos para obtener la información (bbdd está en otro servidor, Interbase 7 windows server 2003 32bits) y una vez que calcula los datos los pinta en varios StringGrid, estos a su vez formatea colores y textos según los datos proporcionados. El proceso es largo y tedioso, pero debería consumir todas las cpu's, sino simplemente la asignada.

Saludos.

Última edición por rabata2001 fecha: 21-11-2013 a las 13:34:55.
Responder Con Cita
  #5  
Antiguo 21-11-2013
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por rabata2001 Ver Mensaje
No conozco ese sistema que me indicas imagecfg, intentaré descargarlo y probarlo. La asignación la hago desde el mismo panel de procesos de windows XP (afinidad y prioridad)
Es un programa que sirve para hacerlo de forma programática. Pero si lo has hecho desde el Administrador, deberia ser lo mismo.


Cita:
Empezado por rabata2001 Ver Mensaje
Si, al parar el sistema primero, todo se visualiza correctamente
Entonces ya es seguro que es por el primer sistema y que no es por el procesador, sino por alguna otra causa.


Cita:
Empezado por rabata2001 Ver Mensaje
El primero muestra una clasificación de resultados que se realiza cada 5 segundos y el proceso tarda en completarse en el peor de los casos entre 1 y 2 segundos (a veces tarda mucho menos). El proceso realiza consultas a la base de datos para obtener la información (bbdd está en otro servidor, Interbase 7 windows server 2003 32bits) y una vez que calcula los datos los pinta en varios StringGrid, estos a su vez formatea colores y textos según los datos proporcionados. El proceso es largo y tedioso, pero debería consumir todas las cpu's, sino simplemente la asignada.
Eso me parece lo lógico.
Deberías poder comprobar eso mirando el gráfico de procesadores. En ese caso sólo 1 debería estar al máximo.
No tiene sentido que se te bloquee TODO el equipo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 22-11-2013
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
¿Has probado a subir o bajar la prioridad de los procesos?

En el Administrador de procesos, seleccionas el proceso y con botón derecho haces click. Luego vas a "establecer prioridad" y eliges alguna.
Prueba a subir la del primero y bajar la de los otros dos y también la contraria, bajar la prioridad del primer proceso y subir la de los otros dos.
Responder Con Cita
  #7  
Antiguo 22-11-2013
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
¿El primer proceso lo has hecho tu?
Si es así, quizás podrías hacer que devuelva el control después de cada parte que ejecuta:
Código Delphi [-]
begin
   PreguntarBaseDeDatos;
   Application.ProcessMessages;

   for i := 1 to CantidadFilas do
   begin
      PintarFila(i);
      Application.ProcessMessages;
   end;
end;

o

Código Delphi [-]
begin
   PreguntarBaseDeDatos;
   Sleep(100);

   for i := 1 to CantidadFilas do
   begin
      PintarFila(i);
      Sleep(100);
   end;
end;
Responder Con Cita
  #8  
Antiguo 22-11-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
rabata2001,

Cita:
Empezado por rabata2001
...Tengo un PC (Windows XP) dónde estoy ejecutando tres aplicaciones a la vez...

...El primero proceso...tarda más o menos 1,5 segundos y deja congelado al PC mientras se ejecuta...cada 4 segundos...

...El segundo sistema...es rápido en su ejecución...

...El tercer sistema...es el que más molesta...se trata de un reloj...debido al efecto del primer programa a veces se salta segundos (se congela)...

...El primero muestra una clasificación de resultados...realiza consultas a la base de datos para obtener la información (bbdd está en otro servidor, Interbase 7 Windows Server 2003 32 Bits) y una vez que calcula los datos los pinta en varios StringGrid, estos a su vez formatea colores y textos según los datos proporcionados...
Te comento:

1- Si el primer proceso se ejecuta en 1.5 seg en promedio y este se ejecuta cada 4 seg aproximadamente, esto implica que en un minuto el PC estará bloqueado 22.5 seg (60 seg / 4 seg * 1.5 seg), según la descripción del problema, luego en una hora el PC estará bloqueado 22.5 minutos en promedio.

2- ¿Has considerado utilizar hilos en el primer proceso como se sugirió en el Msg #2?, el proceso en si bloquea el PC, si este es dividido en hilos esto mejorara el rendimiento de dicho proceso, en el menor de los casos usar la instrucción Application.ProcessMessages como se sugirió en el Msg #7, aunque en este caso es aconsejable incluir programación por hilos en el primer proceso en función de la descripción del problema.

Pregunto:

1- ¿Cuales son las especificaciones técnicas del PC que ejecuta los procesos a nivel de Hardware y Software (CPU, RAM, Hard Disk, Motherboard, Tarjeta Gráfica y SO)?.

2- ¿Tienes acceso al código fuente de los programas?.

3- ¿Haz considerado optimizar el algoritmo de clasificación de resultados del primer proceso?.

4- ¿Que otros procesos se ejecutan en el PC, que puedan afectar el performance de los procesos en cuestión (Antivirus, Servicios, Utilitarios, Aplicaciones, etc?.

5- En el caso de que la PC en cuestión tenga un bajo nivel de prestaciones, ¿Haz considerado hacer un upgrade de la misma?.

6- ¿Existe la posibilidad de probar las aplicaciones en cuestión en otra máquina para contrastar su performance con el PC original?.

La decisión de un cambio de hardware o una actualización de los procesos dependerá del nivel de criticidad de las aplicaciones, los recursos disponibles y los análisis realizados en función de todo lo comentado.

Espero sea útil

Nelson.
Responder Con Cita
  #9  
Antiguo 22-11-2013
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
No sirve con solo saber cual es el programa. Hay que saber cual es el codigo, exacto, que provoca el bloqueo. Muéstranos eso y vemos que se puede hacer.
__________________
El malabarista.
Responder Con Cita
  #10  
Antiguo 26-11-2013
rabata2001 rabata2001 is offline
Miembro
 
Registrado: nov 2010
Posts: 88
Poder: 14
rabata2001 Va por buen camino
Smile

Muchas Gracias a todos.

Ya he conseguido desbloquear. existían dos problemas:

El primer Problema.- se solucionó haciendo mas eficiente el segundo programa, aunque era pequeño, pero también consumía recursos (cada seg.)

El segundo problema.- También solucionado. Estoy usando en el programa más costoso, los alpha skins, este proceso saca del mismo PC 5 pantallas a TV, se consumen muchos recursos al utilizar los skins y bloqueaba también el pc, ha sido deshabilitar el skins y va muchísimo mejor.

El sistema donde se ejecuta al ser windows xp no sé si asocia correctamente afinidad y prioridad.

Gracias nuevamente a todos por vuestros consejos. De todas formas aplicaré mejoras de rendimiento, os tendré al tanto.
Responder Con Cita
  #11  
Antiguo 26-11-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
rabata2001,

Cita:
Empezado por rabata2001
...Ya he conseguido desbloquear...se solucionó haciendo mas eficiente el segundo programa...en el programa más costoso...ha sido deshabilitar los alpha skins y va muchísimo mejor...


Cita:
Empezado por rabata2001
...al ser Windows XP no sé si asocia correctamente afinidad y prioridad...
Te sugiero que evalúes la posibilidad de sustituir Windows XP por Windows 7 Professional x32 o x64, el performance de ejecución aumenta considerablemente.

Espero sea útil

Nelson.
Responder Con Cita
  #12  
Antiguo 10-12-2013
rabata2001 rabata2001 is offline
Miembro
 
Registrado: nov 2010
Posts: 88
Poder: 14
rabata2001 Va por buen camino
Smile

Estoy pensando no sólo en windows 7 sino pasarme directamente a Windows 8, para ver el rendimiento de todas las aplicaciones del sistema
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
INFO: DLL's, BPL's, carga dinámica, carga estática y Packages en Runtime Neftali [Germán.Estévez] OOP 26 13-12-2013 19:29:55
congelado de la imagen de la aplicacion delphi_oracle Conexión con bases de datos 7 05-09-2006 21:00:39
Problema de impresion debido al PrintItemIndex!!! neon Impresión 1 09-11-2004 12:41:48
Problema de impresion debido al PrintItemIndex!!! neon Impresión 0 03-11-2004 14:02:13
Detección de Carga de un programa craven Varios 3 24-11-2003 16:10:46


La franja horaria es GMT +2. Ahora son las 21:47:10.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi