Hola a todos!
-- estoy laburando en un proyecto que tienen un sistema ya funcionando en producción hecho con GLASS. Debuging: Ahora bien, al principio buscar errores que el usuario me reportaba pude salir victorioso gracias a los propios Halos+inspector seaside + Gemtools me las arregle bien (sin conocer bien el modelo). Preguntonta: Existe la posibilidad de hacer un snapshot de esa imagen corriendo en gemstone y levantarla en un pharo? si? no? consejos para trabajar con datos Pharo sin gemstone? o volcar parte de la info para trabajar mas comodo? Performance: Por otra parte, el sistema estuvo funcionando un tiempo muy bien, a nivel de funcionalidad estan contentos, perooo, estan teniendo problemas de performance sobre todo en la ejecucion de informes (los informes en este sistema generan mucha basura, pero incluso pasando el GC a manopla el sistema presenta lentitud en la ejecucion e esos informes). Estuvimos viendo este post http://gemstonesoup.wordpress.com/2009/02/28/approaching-the-speed-of-light-ssd-drives-for-gemstones/ en donde Hernan inlcuso comenta la mejora con discos SSD por problemas de i/o. Para sacarnos la duda, montamos el sistema en un servidor externo con discos SSD y si bien vimos una mejora de perfomance notable, luego montamos el mismo sistema en discos "comunes" y la mejora seguia, por lo que asumimos que el tema es de hardware... asi y todo, el servidor actual no es tan chiquito (tiene 8 procesadores y 8GB ram) de los cuales, la VM de gemstone usa 4cpu y 6 GB ram (la base de gemstone pesa 14GB pero tiene pocos usuarios concurrentes, unos 10 usuarios.). Conclusion: queremos estar seguros que sea solamente un tema de hard o hay algo mejorable en el sistema (seguro q lo hay, pero algo que sea bien notable que este provocando esos cuellos de botella). Finalmente pregunto: existe un profiler o algo similar en gemstone que me permita monitorear eso o que tecnica recomiendan para detectar este tipo de problemas? gracias, Leo -- To post to this group, send email to [hidden email] To unsubscribe from this group, send email to [hidden email] http://www.clubSmalltalk.org --- Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" de Grupos de Google. Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a [hidden email]. Para obtener más opciones, visita https://groups.google.com/groups/opt_out. |
Leo, sobre la cuestión de performance
en reportes,
hay una cosa muy tonta (que tal vez ya saben, pero no está de más recordarla) que generalmente a los programadores "comunes" de ST nos cuesta. Los mensajes de enumeration de Collection (do:, select:, sobre todo cosas como sortBy:) cuando los evalúas en el cliente, se van "trayendo" uno por uno los elementos de la colección para la evaluación, y desproxeándolos. Si era un select: que te dejaba un 10% de la colección en un resultado local, igual te trajiste todos los elementos. y encima, después los tenés que recolectar. Para evitar eso, hay que dar mensajes que hagan ese procesamiento de colecciones en el servidor y sólo te pasen la colección resultado. Es decir, que funcione como cliente delgado en ese caso. Saludos On 19/09/2013 07:25 p.m., Leonardo Andres De Marco wrote:
-- -- To post to this group, send email to [hidden email] To unsubscribe from this group, send email to [hidden email] http://www.clubSmalltalk.org --- Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" de Grupos de Google. Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a [hidden email]. Para obtener más opciones, visita https://groups.google.com/groups/opt_out. |
In reply to this post by Leonardo Andres De Marco
Leo: No es que el tema sea de hardware. Eso te sobra. Lo que seguramente pasa es que seguro que tenes código que para manejar cierta cvantidad de objetos no es optimo.
Claro esta, si le pones un server el doble de rapido solucionas el problema sin arreglar nada. Si conseguis un profiler podes probar pero nomas que a simple vista y con un debugger vas a poder arreglar muchas cosas.
Saludos El 19 de septiembre de 2013 19:25, Leonardo Andres De Marco <[hidden email]> escribió:
-- To post to this group, send email to [hidden email] To unsubscribe from this group, send email to [hidden email] http://www.clubSmalltalk.org --- Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" de Grupos de Google. Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a [hidden email]. Para obtener más opciones, visita https://groups.google.com/groups/opt_out. |
In reply to this post by Leonardo Andres De Marco
Si el problema tiene que ver con I/O, entonces cualquier profiler del server mismo deberia mostrarlo... top en Linux, por ejemplo, suele mostrar cuanto tiempo se va en I/O wait. Eso no quiere decir que acelerar el I/O vaya a resolver el problema de fondo, ya que un exceso aparente de I/O puede ser consecuencia de por ejemplo lo que dijo Carlos acerca de replicar objetos en vez de forwardear requests. No me quedo claro si los reportes de ejecutan del lado del cliente o del lado del server. 2013/9/19 Leonardo Andres De Marco <[hidden email]>
-- To post to this group, send email to [hidden email] To unsubscribe from this group, send email to [hidden email] http://www.clubSmalltalk.org --- Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" de Grupos de Google. Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a [hidden email]. Para obtener más opciones, visita https://groups.google.com/groups/opt_out. |
In reply to this post by Leonardo Andres De Marco
Leo, Gemstone trae un profiler que se llama ProfMonitor. Podes ejecutarlo con: ProfMonitor monitorBlock: [ ... codigo ... ] inspeccionando el resultado o con ProfMonitor new
traceObjectCreation: true;
monitorBlock: [ ... código ... ];
report
si queres que te de un informe sobre los objetos que se crean durante la corrida (es un poco mas lento este ultimo paso pero muy util). También tienen una herramientas que se llama stat monitor o algo asi que te permite obtener estadísticas sobre lo que pasa en la base (fijate en los manuales).
Por otro lado para Debuguear es muy útil el Jade que provee Foster (si tenes Windows o Mac). Te lo podes bajar de: http://seaside.gemtalksystems.com/jade/
2013/9/19 Leonardo Andres De Marco <[hidden email]>
-- To post to this group, send email to [hidden email] To unsubscribe from this group, send email to [hidden email] http://www.clubSmalltalk.org --- Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" de Grupos de Google. Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a [hidden email]. Para obtener más opciones, visita https://groups.google.com/groups/opt_out. |
In reply to this post by Leonardo Andres De Marco
Carlos, el gallego en privado me estuvo dando un par de consejos en ese sentido, pero mas alla de donde procesa (en este caso es todo en el server) me comento el tema de los select: y los detect: cambiarlos por diccionarios. llendo a un caso concreto, supongamos que tenemos resuelto esto con un detect: self personas detect:[: each | each nombre = 'Leo']. es menos performante que cachear todo en un Diccionario x nombre y que luego hacer: self personas at: 'Leo' a nivel de codigo voy a empezar revisando este tipo de cosas...y luego probar. abz leo Leo, sobre la cuestión de performance en reportes,
hay una cosa muy tonta (que tal vez ya saben, pero no está de más recordarla) que generalmente a los programadores "comunes" de ST nos cuesta. Los mensajes de enumeration de Collection (do:, select:, sobre todo cosas como sortBy:) cuando los evalúas en el cliente, se van "trayendo" uno por uno los elementos de la colección para la evaluación, y desproxeándolos. Si era un select: que te dejaba un 10% de la colección en un resultado local, igual te trajiste todos los elementos. y encima, después los tenés que recolectar. Para evitar eso, hay que dar mensajes que hagan ese procesamiento de colecciones en el servidor y sólo te pasen la colección resultado. Es decir, que funcione como cliente delgado en ese caso. Saludos On 19/09/2013 07:25 p.m., Leonardo Andres De Marco wrote:
-- -- To post to this group, send email to [hidden email] To unsubscribe from this group, send email to [hidden email] http://www.clubSmalltalk.org --- Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" de Grupos de Google. Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a [hidden email]. Para obtener más opciones, visita https://groups.google.com/groups/opt_out. -- -- To post to this group, send email to [hidden email] To unsubscribe from this group, send email to [hidden email] http://www.clubSmalltalk.org --- Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" de Grupos de Google. Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a [hidden email]. Para obtener más opciones, visita https://groups.google.com/groups/opt_out. |
In reply to this post by Leonardo Andres De Marco
Si galle, ahi el amigo Gabriel me paso una data muy copada al respecto. Gracias x toda la ayuda x linea privada! abrazo, Leo Leo:
No es que el tema sea de hardware. Eso te sobra.
Lo que seguramente pasa es que seguro que tenes código que para manejar cierta cvantidad de objetos no es optimo.
Claro esta, si le pones un server el doble de rapido solucionas el problema sin arreglar nada.
Si conseguis un profiler podes probar pero nomas que a simple vista y con un debugger vas a poder arreglar muchas cosas.
Saludos El 19 de septiembre de 2013 19:25, Leonardo Andres De Marco <[hidden email]> escribió:
-- To post to this group, send email to [hidden email] To unsubscribe from this group, send email to [hidden email] http://www.clubSmalltalk.org --- Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" de Grupos de Google. Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a [hidden email]. Para obtener más opciones, visita https://groups.google.com/groups/opt_out. -- -- To post to this group, send email to [hidden email] To unsubscribe from this group, send email to [hidden email] http://www.clubSmalltalk.org --- Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" de Grupos de Google. Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a [hidden email]. Para obtener más opciones, visita https://groups.google.com/groups/opt_out. |
In reply to this post by Leonardo Andres De Marco
Andres, justamente eso hicimos, ejecutamos un top en el server y comprobamos que no habia demasiados problemas de I/O, en cambio si al ejecutar un informe el proceso topaz se va al 100% al toque (lo que no puedo distinguir es que procesador se va al 100 o si son los 4, si hubiera alguna forma de ver esto agradeceria el consejo). Efectivamente el nuevo hard donde hicimos la prueba tiene mejor procesador y seguramente influyo en la mejora que percibimos alli. saludos! Si el problema tiene que ver con I/O, entonces cualquier profiler del server mismo deberia mostrarlo... top en Linux, por ejemplo, suele mostrar cuanto tiempo se va en I/O wait. Eso no quiere decir que acelerar el I/O vaya a resolver el problema de fondo, ya que un exceso aparente de I/O puede ser consecuencia de por ejemplo lo que dijo Carlos acerca de replicar objetos en vez de forwardear requests. No me quedo claro si los reportes de ejecutan del lado del cliente o del lado del server.
2013/9/19 Leonardo Andres De Marco <[hidden email]>
-- To post to this group, send email to [hidden email] To unsubscribe from this group, send email to [hidden email] http://www.clubSmalltalk.org --- Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" de Grupos de Google. Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a [hidden email]. Para obtener más opciones, visita https://groups.google.com/groups/opt_out. -- -- To post to this group, send email to [hidden email] To unsubscribe from this group, send email to [hidden email] http://www.clubSmalltalk.org --- Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" de Grupos de Google. Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a [hidden email]. Para obtener más opciones, visita https://groups.google.com/groups/opt_out. |
In reply to this post by Leonardo Andres De Marco
Gabriel, mil gracias por este dato, algo asi estaba buscando. Gracias a todos x los aportes, voy a seguir una estrategia conjunta entre 1) Mejoramiento de codigo en donde se pueda (sobre todo en el armado de reportes, la utilizacion de colecciones con detect:/select:) Leo,
Gemstone trae un profiler que se llama ProfMonitor. Podes ejecutarlo con:
ProfMonitor monitorBlock: [ ... codigo ... ] inspeccionando el resultado o con ProfMonitor new
traceObjectCreation: true;
monitorBlock: [ ... código ... ];
report
si queres que te de un informe sobre los objetos que se crean durante la corrida (es un poco mas lento este ultimo paso pero muy util).
También tienen una herramientas que se llama stat monitor o algo asi que te permite obtener estadísticas sobre lo que pasa en la base (fijate en los manuales).
Por otro lado para Debuguear es muy útil el Jade que provee Foster (si tenes Windows o Mac). Te lo podes bajar de: http://seaside.gemtalksystems.com/jade/ 2013/9/19 Leonardo Andres De Marco <[hidden email]>
-- To post to this group, send email to [hidden email] To unsubscribe from this group, send email to [hidden email] http://www.clubSmalltalk.org --- Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" de Grupos de Google. Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a [hidden email]. Para obtener más opciones, visita https://groups.google.com/groups/opt_out. -- -- To post to this group, send email to [hidden email] To unsubscribe from this group, send email to [hidden email] http://www.clubSmalltalk.org --- Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" de Grupos de Google. Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a [hidden email]. Para obtener más opciones, visita https://groups.google.com/groups/opt_out. |
In reply to this post by leodm
Que un server este yendo al 100% de ultima es inevitable. O sea, nadie se espanta si la maquina de uno, que puede correr N threads, se va al 100% si lo que estas haciendo es compactar video con N threads. El tema es 100% de que. Seria un problema mucho mas grande que el CPU se fuera al 100% y que top diga algo como "si, 100% de CPU, de lo cual el 70% es I/O wait". Si hay 100% de CPU y casi nada de I/O wait, entonces el hardware esta haciendo lo que corresponde. Ahora bien, si el 100% es por busqueda lineal de 'Leo', entonces hay que cambiar el algoritmo y hacer que ese 100% de CPU sea mas eficiente en terminos de lograr el resultado que uno busca.2013/9/20 <[hidden email]>
-- To post to this group, send email to [hidden email] To unsubscribe from this group, send email to [hidden email] http://www.clubSmalltalk.org --- Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" de Grupos de Google. Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a [hidden email]. Para obtener más opciones, visita https://groups.google.com/groups/opt_out. |
In reply to this post by leodm
El 20 de septiembre de 2013 15:18, <[hidden email]> escribió:
Cuando estés ejecutando el "top" apretá 1 Saludos Hernán -- To post to this group, send email to [hidden email] To unsubscribe from this group, send email to [hidden email] http://www.clubSmalltalk.org --- Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" de Grupos de Google. Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a [hidden email]. Para obtener más opciones, visita https://groups.google.com/groups/opt_out. |
Hola. Podes usar htop en el servidor que es mas amigable que top :) También hay pila de otros comandos al estilo top (ojo alguno solo los podes correr como root o con sudo), como iotop, nettop, iftop, atop... Consejo, buscate con el administrador de paquetes del linux que uses todos los paquetes que se contengan top.
Saludos! El 22 de septiembre de 2013 01:04, Hernán Morales Durand <[hidden email]> escribió:
-- To post to this group, send email to [hidden email] To unsubscribe from this group, send email to [hidden email] http://www.clubSmalltalk.org --- Has recibido este mensaje porque estás suscrito al grupo "ClubSmalltalk" de Grupos de Google. Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a [hidden email]. Para obtener más opciones, visita https://groups.google.com/groups/opt_out. |
Free forum by Nabble | Edit this page |