Leer Txt... v6 y v7: más tiempo y más consumo de memoria


(heber.microsipdf) #1

Estamos en una etapa de definición de estrategias para satisfacer las necesidades de nuestros clientes. Nuestros desarrollos hacen mucho uso de archivos de texto para comunicación con velneo. Como prueba se realizó lo siguiente:

En v6 tengo un proceso que limpia una tabla temporal, conecta con una dll, espera la respuesta, lee el resultado de un archivo de texto, llena la tabla temporal con el contenido del archivo de texto y al final elimina el archivo de texto. El mapa contiene además muchas tablas más, contenido visual, etc.

Resultado después de 10 ejecuciones, 1600 registros en archivo de texto:

Tiempo de proceso promedio: 5 segundos

Consumo de memoria inicial vRunner: 9.5 mb

Consumo de memoria final:  11 mb

Consumo de CPU máximo: hasta 19% menos de un segundo

 

En v7 programé un proceso que limpia una tabla temporal, lee un archivo de texto y llena la tabla temporal con el contenido del archivo de texto. Como se ve no están todos los pasos necesarios -conexión con dll-, pero son suficientes para la prueba.

Tiempo promedio: 6.5 segundos  -sin conexión y espera de resultado de dll-

Consumo de memoria inicial vClient: 15.6mb

Por cada ejecución de importación aumentaba 10.5mb

Llegó hasta los 113mb y seguiría subiendo por cada ejecución del proceso.

Consumo de CPU máximo: 60% de CPU durante 2 segundos promedio

 

Quizá lo del tiempo se puede soslayar, pero el consumo de memoria y CPU me parece voraz.

¿Es un error el que no libere memoria y consuma tanto CPU? ¿seguirá así?

 

 

 


([N4] davidgu) #2

Estimado Heber

 

Uno de los problemas puede venir por que la comparación es un poco diferente, es decir, si no me equivoco en el caso de 6.x lo haces con vrunner con lo que no hay ningún tráfico de red, en el caso de V7 lo haces desde el vClient con lo que hay un trafico de información entre el servidor y el cliente (Aunque estén en la misma máquina). Prueba a realizarlo con un proceso en tercer plano ( 7.1 ) y debería ir más rápido.

 

Respecto al uso de memoria, si no me equivoco debe ser un tema derivado del funcionamiento de caches del vClient, es decir el vClient esta "cacheando", esas fichas que estas dando de alta ( No se si luego las vuelves a borrar después de importar ). Esto lo hace por si necesitas ver esas fichas no tener que pedirlas de nuevo al servidor. Internamente esta controlado que esa cache crezca mientras la máquina tenga un 50% de memoria física disponible (La ocupe el vClient u otro programa). Si la máquina esta por encima del 50% de memoria fisica ocupada, el vClient empezara a liberar memoria para que tu máquina siempre este sobrada de memoria. Es lo que llamamos uso de memoria adaptativa. Si tu máquina llegara a usar el máximo de memoria física disponible, el vClient reduciría el uso de memoria al mínimo, en tu caso unos 15,6 mb.

 

Saludos


(heber.microsipdf) #3

Muchas gracias por las respuestas.

Efectivamente estoy eliminando las fichas en cada importación. Al eliminarlas ya no debería guardarlas en cache, ¿es correcto?

o, ¿como puedo eliminarlas del caché también?

 


([N4] davidgu) #4

Estimado Heber

Intentaremos reproducirlo a ver si vemos que sucede exactamente, muchas gracias.

Saludos


([N4] velavisual) #5

@heber

 

Al parecer teneis disponible para comunicar v6 y v7,las funciones remotas. Hay un artículo en el blog.

 

Podrías desde v6, lanzar funciones remotas que en cada transaccion te lleve a las nubes (o donde esté tu v7Server) por ejemplo X registros en bloque. Después en v7Server, descomponer ese bloque en registros y darlos de alta.

 

No sé, en la forma que lo hago normalmente en v6.

 

X registros, podría ser por ejemplo: bloques de 1000 o 10.000 registros


(heber.microsipdf) #6

 

Adjunto archivo de texto de importación, imagen del proceso de importación y la función para extraer datos.

Me interesa mucho. Somos una empresa nivel 3, me pidieron que analizara la factibilidad para empezar desde ya los nuevos desarrollos en V7, y como les comento usamos mucho la eliminación e importación de datos con archivos de texto.

Muchas gracias.

 

[attachment=4129,430] [attachment=4129,431]


(heber.microsipdf) #7

Intenté adjuntar más de dos archivos y no era posible publicar el post. Hasta que lo dejé en dos fue posible.

Velavisual, gracias por la sugerencia. Lo que queremos es centrarnos en una plataforma - versión.

Adjunto archivo de texto con el que hice la prueba.

[attachment=4131,432]


([N4] velavisual) #8

@Heber

 

Para evitar el caché entre vclient y vserver,

 

¿ Por qué no usas el servidor de disco -SDV- para llevar el fichero local al servidor y allí hacer la importación ?

 

 


(heber.microsipdf) #9

ups... creo que olvidé mencionar algo, todo lo tengo instalado en local, servidor, cliente, admin, develop, y todo lo ejecuto en local, es decir, el archivo de importación está en la misma máquina donde está instalado el servidor.


([N4] velavisual) #10

@Heber

 

¿ Por qué no usas un usuario Nivel 1 en las nubes para hacer estas pruebas ?

Siempre las situaciones hay que hacerlas en las peores condiciones posibles de infraesructura para valorar las mejoras y rendimientos. Al menos eso pienso yo.

 

Te diría que pruebes a llevar al SDV de la nube el .txt de local e importarlo allí.

 

 


(heber.microsipdf) #11

Como me lo sugirió davidgu, he modificado el proceso. La importación la lanzo en un tercer plano.

El resultado es bastante bueno, se reduce considerablemente el tiempo y la memoria que usa el cliente apenas sube a 16mb, lo mismo sucede con el uso de CPU.

Ahora el servicio vServer es quien usa CPU 98% durante la importación, y es este servicio quien guarda en caché supongo, pues en cada ejecución la memoria que consume va aumentando 10.5mb por cada ejecución, aunque con el paso de los minutos poco a poco va liberando memoria, ahora está en 47mb, ya ha liberado la mitad del caché.

Esto ya me parece bastante aceptable, aunque me gustaría mucho que al eliminar registros de las tablas, éstos registros también fueran eliminados del caché, pues ya no se necesitarán más.

Seguiré haciendo pruebas.

Muchas gracias por su ayuda y comentarios.

 


(heber.microsipdf) #12

Velavisual, debido a nuestra estrategia de negocios, no pensamos usar licencias en la nube, pues el 100% de las aplicaciones necesitan conectividad con un ERP instalado de forma local en los clientes.

Pero te aseguro que las pruebas las hago en ciertas condiciones que no son favorables, por ejemplo, la máquina donde está instalado es XP celeron 1gz, con 256 mb en RAM. Si de por sí esto ya es poco, estoy ejecutando un navegador opera, cliente de correo thunderbird, aMSN, vDevelop, vAdmin, vClient, RK launcher, servidor Firebird, xplorer2, etc.

En la nube los procesadores son más veloces, mucho más que esto.

En las pruebas que hago además trataré de poner los ejemplos más difíciles para procesarlos y ver la respuesta de v7. Muchas gracias por tu interés y sugerencias, las tomaré mucho en cuenta y se las comentaré al área comercial para compararlas con la estrategia de negocios en la que trabajan.

Saludos cordiales