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.318
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.318
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.737
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.737
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
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 05:40:33.


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