From jcmm986 at gmail.com Wed Mar 3 05:41:43 2010 From: jcmm986 at gmail.com (Jennifer Maldonado) Date: Wed, 3 Mar 2010 09:11:43 -0430 Subject: [caracas-pm] =?iso-8859-1?q?pregunta_sobre_la_librer=EDa_Threads?= =?iso-8859-1?q?=2Epm?= Message-ID: Buenos d?as, Saludos a todos, la pregunta es la siguiente: Esta librer?a viene ya instalada a partir de perl 5.8, la version de donde se ejecutar? el script es 5.8 sin embargo arroja este error: This Perl hasn't been configured and built properly for the threads module to work. (The 'useithreads' configuration option hasn't been used.) Having threads support requires all of Perl and all of the XS modules in the Perl installation to be rebuilt, it is not just a question of adding the threads module. (In other words, threaded and non-threaded Perls are binary incompatible.) If you want to the use the threads module, please contact the people who built your Perl. Cannot continue, aborting. y revisando en las rutas que contiene @INC se encuentra el Threads.pm es decir que si se encuentra pero no se consigue habilitado en el archivo de Config.pm. ?Que podr?a hacer en este caso? ?volver a instalar Perl con las opciones ? ? modificar el archivo Config.pm? ?Tienen alguna sugerencia de otra librer?a de igual o mejor funcionalidad? -- Saludos y un Abrazo. Jennifer. -------------- next part -------------- An HTML attachment was scrubbed... URL: From jcmm986 at gmail.com Wed Mar 3 09:58:00 2010 From: jcmm986 at gmail.com (Jennifer Maldonado) Date: Wed, 3 Mar 2010 13:28:00 -0430 Subject: [caracas-pm] (no subject) In-Reply-To: <4B8E9BDB.1030600@gmail.com> References: <4B8E9BDB.1030600@gmail.com> Message-ID: Es un HP-UX, ya estaba instalado. El 3 de marzo de 2010 12:56, Jos? Miguel Parrella Romero < joseparrella at gmail.com> escribi?: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA256 > > Jennifer Maldonado escribi?: > > Esta librer?a viene ya instalada a partir de perl 5.8, la version de > > donde se ejecutar? el script es 5.8 sin embargo arroja este error: > > ?En qu? sistema operativo est?s ejecutando Perl? Tu script necesita > threads.pm, pero tu Perl debe haber sido construido con el flag que te > dice en el mensaje de error. ?C?mo conseguiste ese binario? > > Yo tengo Perl 5.10.1 en Debian, y fue construido con -Dusethreads y con > useithreads=define. Este es el que viene en Debian Unstable. > > Personalmente no he probado otras implementaciones as? que no podr?a > recomendarte que veas otros m?dulos, pero para eso es la lista. > > HTH, > > - -- > Jos? Miguel Parrella Romero (bureado.com.ve) PGP: 0?88D4B7DF > Debian Developer Caracas, VE/Quito, EC > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.10 (GNU/Linux) > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ > > iQIcBAEBCAAGBQJLjpvaAAoJEMAyQqmI1LffM4sP+gJc03F1bcRifYtEwsoOOHt4 > 0g3a2EruHdkJzDaPCj5IA9D2L3+8ekcFY5r5ffdHEZcu2yT/7nBJhrO8Wc4N5Ab8 > CjIKeFGhabWHngc6rhSQp+cAQXVrPXr9Hga/BN8cGj2rTMl3p3vLuI3njcEaxPTe > rACuIO8XZ5YpZNfpSZQ/YZSU8uiwG2dbuLVRhGhX7lQ0GH6kR4Zb9A+a11auzzS/ > JOlbGB552QW9ORgfVR1ABjsc2Nmqqh8qdgo1q9zBrqywwYuP4kf58ywuPs2RucOw > 0b5LKqtjeKgahFdE4yN80ChFKEu4I1GbbV4bs1gqOSBZnu/bYNFNo30CTImhi9kl > GGybTqgf1iusr2MLqmBJJ+RzISvdpKmS2NWhsHWua5vAwbsSd5JKmfefNPRu94v7 > gLK4YrUOzGCUtDlP2ANo+rJiJHhnwvmnyGspvPUckytJknufQkTUrMKpUVIMF/Zz > YDshqUi0Y5GHzQLjoWHV9fDqD1WN6cCwZ+ZwkwtINwVnk4yqqE9sUwMo2IAcxMpQ > 6o49siSedqrIYZyqobjDIcw0GVPYR+/7VE64tHs7udATxDQ2qODaYJ2CJP6BS9ge > RfUPtaxE3JGqmF+G9jgSc5wTJ8r/GBvn57f2yV4EI+SnUueQLyW5RCO50Ol5JkPl > 8TkJEahRN6HqB3Jyo35z > =0a0m > -----END PGP SIGNATURE----- > -- Saludos y un Abrazo. Jennifer. -------------- next part -------------- An HTML attachment was scrubbed... URL: From jcmm986 at gmail.com Fri Mar 5 11:58:20 2010 From: jcmm986 at gmail.com (Jennifer Maldonado) Date: Fri, 5 Mar 2010 15:28:20 -0430 Subject: [caracas-pm] =?iso-8859-1?q?pregunta_sobre_la_librer=EDa_Threads?= =?iso-8859-1?q?=2Epm?= In-Reply-To: <1267649130.25253.78.camel@deepthought.itverx.com.ve> References: <1267649130.25253.78.camel@deepthought.itverx.com.ve> Message-ID: Muchisimas Gracias a todos. Ahora estoy pensando si usar el m?todo forks. ?Es cierto que consume menos recursos que la librer?a threads.? Saludos. El 3 de marzo de 2010 16:15, Ernesto Hern?ndez-Novich escribi?: > On Wed, 2010-03-03 at 09:11 -0430, Jennifer Maldonado wrote: > > Esta librer?a viene ya instalada a partir de perl 5.8, la version de > > donde se ejecutar? el script es 5.8 sin embargo arroja este error: > > > > This Perl hasn't been configured and built properly for > > the threads > > module to work. (The 'useithreads' configuration option > > hasn't been used.) > > > > Having threads support requires all of Perl and all of > > the XS modules in > > the Perl installation to be rebuilt, it is not just a > > question of adding > > the threads module. (In other words, threaded and > > non-threaded Perls > > are binary incompatible.) > > > > If you want to the use the threads module, please contact > > the people > > who built your Perl. > > > > Cannot continue, aborting. > > > > y revisando en las rutas que contiene @INC se encuentra el Threads.pm > > es decir que si se encuentra pero no se consigue habilitado en el > > archivo de Config.pm. > > ?Que podr?a hacer en este caso? > > Tienes que recompilar el Perl desde los fuentes con las opciones que se > indican. > > En otro mensaje le? que es un HP/UX. Es posible que el Perl de HP/UX no > tenga hilos porque simplemente obviaron compilarlo con esa opci?n o > porque un sistema HP/UX est?ndar no tenga librer?a para soporte a hilos > utilizable para compilar. En otras palabras, es posible que tengas que > instalar paquetes adicionales de HP/UX para poder compilar Perl desde > los fuentes. > > Busca en http://www.cpan.org/ports/#hpux y prueba si alguna te sirve. > -- > Ernesto Hern?ndez-Novich - Linux 2.6.28 i686 - Unix: Live free or die! > Geek by nature, Linux by choice, Debian of course. > If you can't aptitude it, it isn't useful or doesn't exist. > GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3 > > > -- Saludos y un Abrazo. Jennifer. -------------- next part -------------- An HTML attachment was scrubbed... URL: From lem at itverx.com.ve Fri Mar 5 12:11:53 2010 From: lem at itverx.com.ve (Luis E. =?ISO-8859-1?Q?Mu=F1oz?=) Date: Fri, 05 Mar 2010 15:41:53 -0430 Subject: [caracas-pm] =?iso-8859-1?q?pregunta_sobre_la_librer=EDa_=09Threa?= =?iso-8859-1?q?ds=2Epm?= In-Reply-To: References: <1267649130.25253.78.camel@deepthought.itverx.com.ve> Message-ID: <1267819913.6211.161.camel@maclem-ether.ius.cc> On Fri, 2010-03-05 at 15:28 -0430, Jennifer Maldonado wrote: > Muchisimas Gracias a todos. > Ahora estoy pensando si usar el m?todo forks. > ?Es cierto que consume menos recursos que la librer?a threads.? Hola Jennifer. Es importante entender la diferencia entre un "proceso" (fork) y un "hilo" (thread). Acad?micamente, los procesos consumen m?s recursos que los hilos. En la pr?ctica, es muy posible que la diferencia no importe para tu aplicaci?n. El uso de hilos tambi?n es delicado, porque todas las librer?as que vas a usar deben ser "thread-safe", esto significa, deben haber sido escritas a sabiendas de que ser?n ejecutadas por aplicaciones que usan hilos y por tanto, soportan esta modalidad. Te sugiero que desarrolles lo que vas a desarrollar usando procesos (fork). En el peor caso, se tratar? de un prototipo. Siempre tienes tiempo de optimizar. No trates de hacerlo prematuramente. Saludos -lem From ait at p2ee.org Fri Mar 5 13:12:06 2010 From: ait at p2ee.org (Alejandro Imass) Date: Fri, 5 Mar 2010 16:12:06 -0500 Subject: [caracas-pm] =?iso-8859-1?q?Fwd=3A__pregunta_sobre_la_librer=EDa_?= =?iso-8859-1?q?Threads=2Epm?= In-Reply-To: References: <1267649130.25253.78.camel@deepthought.itverx.com.ve> Message-ID: Hay algo mal configuirado en el mailman de esta lista, al darle reply escoje por default a la persona y no a la lista. ---------- Forwarded message ---------- From: Alejandro Imass Date: 2010/3/5 Subject: Re: [caracas-pm] pregunta sobre la librer?a Threads.pm To: Jennifer Maldonado 2010/3/5 Jennifer Maldonado : > Muchisimas Gracias a todos. > Ahora estoy pensando si usar el m?todo forks. > ?Es cierto que consume menos recursos que la librer?a threads.? > Para poder contestar esta pregunta es necesario saber qu? quieres hacer??? Teoricamente todo lo que se puede hacer con threads se puede hacer con procesos (aka fork). Son casi lo mismo[2] y es mas que todo un tema filos?fico y muy dependiente de la plataforma[1]. En Linux los threads se implementan como LWP (Light-Weight Processes) y el api se adhiere al est?ndar Posix 1003.1c (hasta donde s?). Generalmente, el espacio de memoria es compartido entre los threads mientras que en los procesos cada proceso es completamente independiente, y ?stos ?ltimos suelen consumir m?s recursos (en teor?a). Por ejemplo, si vas a "disparar" varios procesos Perl, cada uno tendr? su instancia del interpretador, aunque es posible que se compartan algunos segmentos de c?digo (librer?as en RAM), por lo tanto va a consumir mucho m?s recursos que se disparas muchos threads del mismo programa. Adicionalmente, compartir informaci?n entre procesos es mucho m?s dificil (y/o lenta) si usas procesos, y en muchas ocasiones tienes que recurrir a IPC heredado de Sistema V (System V Inter Process Communication) para lograrlo. Cada uno tiene sus ventajas y desventajas, todo depende del uso. Si tu cuello de botella no es CPU sino RAM, los threads pueden ser mejor opci?n. Supongamos que vas a hacer un servidor de red (de cualquier cosa) tu tiempo de respuesta es alto pero no consume recursos de CPU mientras esperas las respuestas de otros sistemas. Con el modelo de procesos a lo mejor se te agota la RAM con tan solo 500 procesos, con threads a lo mejor te permite acomodar 10.000. Tanto los threads como procesos pueden usar m?ltiples CPUs, al menos en Linux (no s? en HP-UX). Si cada tarea es muy CPU-intensiva entonces es probable que el modelo de procesos sea una mejor opci?n. El threading _casi siempre_ va a fugar memoria, y en Linux esto es especialmente cierto por la forma en que se implementa el copy-on-write (ver esta discusi?n en PM http://www.perlmonks.org/?node_id=824655). Si vas a usar threading por ejemplo para Apache mod_perl, debes re-iniciar los procesos de vez en cuando (http://httpd.apache.org/docs/2.0/mod/mpm_common.html#maxrequestsperchild) En definitiva en *nix es casi siempre mejor idea usar procesos a menos que tengas alguna raz?n en particular para usar Threads. Si est?s haciendo un servidor en red de alg?n tipo con Perl, te recomiendo que veas POE, realmente te puede ahorrar mucho tiempo y dolores de cabeza, y casi todo lo que necesitas est? hecho ya para POE: http://poe.perl.org Saludos, Alejandro Imass [1] Por eso es que yo le echo tanta vaina la gente de Java que jura y perjura que Java es realmente 100% portable, y quiz?s lo sea con los green threads, pero como todos sabemos eso ser?a inoperante en un ambiente de la vida real ;-) En la realidad siempre tendr?n que recurrir a Native Threading y Just-In-Time Compiling para que sirva para algo, por lo que su portabilidad se va al carajo viejo en la vida real. [2] En la actualidad hay como 3 grandes meta-patrones que de alguna forma compiten entre s?: Process, Threads ?y EDA/SEDA (Event-Driven-Architecture , Staged-Event DA respectivamente). Al final del d?a no son m?s que patrones de dise?o que depender?n que el SO realmente haga algo con ello. Por ejemplo, si el timeslicing del sistema es preemtive o es tiempo real. Y en honor a la verdad, casi todo se reduce a polling de todas formas ;-) asi que todo esto es pura teor?a. Y cada vez que sale alg?n genio diciendo que descubri? la piedra filosofal, los estudios demuestran que el modelo de procesos sigue siendo el m?s estable, eficiente y efectivo. > Saludos. > > El 3 de marzo de 2010 16:15, Ernesto Hern?ndez-Novich > escribi?: >> From emhnemhn at gmail.com Fri Mar 5 13:23:11 2010 From: emhnemhn at gmail.com (Ernesto =?ISO-8859-1?Q?Hern=E1ndez-Novich?=) Date: Fri, 05 Mar 2010 16:53:11 -0430 Subject: [caracas-pm] =?iso-8859-1?q?Fwd=3A__pregunta_sobre_la_librer=EDa_?= =?iso-8859-1?q?Threads=2Epm?= In-Reply-To: References: <1267649130.25253.78.camel@deepthought.itverx.com.ve> Message-ID: <1267824191.25253.214.camel@deepthought.itverx.com.ve> On Fri, 2010-03-05 at 16:12 -0500, Alejandro Imass wrote: > Hay algo mal configuirado en el mailman de esta lista, al darle reply > escoje por default a la persona y no a la lista. Es intencional. Los mensajes de la lista tienen un _encabezado_ que la identifica. Tu cliente de correos seguro que tiene Reply, Reply-All y Reply-List. -- Ernesto Hern?ndez-Novich - Linux 2.6.28 i686 - Unix: Live free or die! Geek by nature, Linux by choice, Debian of course. If you can't aptitude it, it isn't useful or doesn't exist. GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3 From jcmm986 at gmail.com Fri Mar 5 18:17:17 2010 From: jcmm986 at gmail.com (Jennifer Maldonado) Date: Fri, 5 Mar 2010 21:47:17 -0430 Subject: [caracas-pm] =?iso-8859-1?q?pregunta_sobre_la_librer=EDa_Threads?= =?iso-8859-1?q?=2Epm?= In-Reply-To: References: <1267649130.25253.78.camel@deepthought.itverx.com.ve> Message-ID: Gracias lo tomar? encuenta :D . La pregunta surgi? luego de ver que la autora de un modulo llamado forks dijo esto: *"The standard Perl 5.8.0 threads implementation is very memory consuming, which makes it basically impossible to use in a production environment, particularly with mod_perl and Apache. Because of the use of the standard Unix fork() capabilities, most operating systems will be able to use the Copy-On-Write (COW) memory sharing capabilities (whereas with the standard Perl 5.8.0 threads implementation, this is thwarted by the Perl interpreter cloning process that is used to create threads). The memory savings have been confirmed."* http://search.cpan.org/~elizabeth/forks-0.16/lib/forks.pm El 5 de marzo de 2010 16:38, Alejandro Imass escribi?: > 2010/3/5 Jennifer Maldonado : > > Muchisimas Gracias a todos. > > Ahora estoy pensando si usar el m?todo forks. > > ?Es cierto que consume menos recursos que la librer?a threads.? > > > > Para poder contestar esta pregunta es necesario saber qu? quieres hacer??? > > Teoricamente todo lo que se puede hacer con threads se puede hacer con > procesos (aka fork). Son casi lo mismo[2] y es mas que todo un tema > filos?fico y muy dependiente de la plataforma[1]. > > En Linux los threads se implementan como LWP (Light-Weight Processes) > y el api se adhiere al est?ndar Posix 1003.1c (hasta donde s?). > Generalmente, el espacio de memoria es compartido entre los threads > mientras que en los procesos cada proceso es completamente > independiente, y ?stos ?ltimos suelen consumir m?s recursos (en > teor?a). > > Por ejemplo, si vas a "disparar" varios procesos Perl, cada uno tendr? > su instancia del interpretador, aunque es posible que se compartan > algunos segmentos de c?digo (librer?as en RAM), por lo tanto va a > consumir mucho m?s recursos que se disparas muchos threads del mismo > programa. Adicionalmente, compartir informaci?n entre procesos es > mucho m?s dificil (y/o lenta) si usas procesos, y en muchas ocasiones > tienes que recurrir a IPC heredado de Sistema V (System V Inter > Process Communication) para lograrlo. > > Cada uno tiene sus ventajas y desventajas, todo depende del uso. Si tu > cuello de botella no es CPU sino RAM, los threads pueden ser mejor > opci?n. Supongamos que vas a hacer un servidor de red (de cualquier > cosa) tu tiempo de respuesta es alto pero no consume recursos de CPU > mientras esperas las respuestas de otros sistemas. Con el modelo de > procesos a lo mejor se te agota la RAM con tan solo 500 procesos, con > threads a lo mejor te permite acomodar 10.000. Tanto los threads como > procesos pueden usar m?ltiples CPUs, al menos en Linux (no s? en > HP-UX). Si cada tarea es muy CPU-intensiva entonces es probable que el > modelo de procesos sea una mejor opci?n. > > El threading _casi siempre_ va a fugar memoria, y en Linux esto es > especialmente cierto por la forma en que se implementa el > copy-on-write (ver esta discusi?n en PM > http://www.perlmonks.org/?node_id=824655). Si vas a usar threading por > ejemplo para Apache mod_perl, debes re-iniciar los procesos de vez en > cuando ( > http://httpd.apache.org/docs/2.0/mod/mpm_common.html#maxrequestsperchild) > > En definitiva en *nix es casi siempre mejor idea usar procesos a menos > que tengas alguna raz?n en particular para usar Threads. Si est?s > haciendo un servidor en red de alg?n tipo con Perl, te recomiendo que > veas POE, realmente te puede ahorrar mucho tiempo y dolores de cabeza, > y casi todo lo que necesitas est? hecho ya para POE: > http://poe.perl.org > > Saludos, > Alejandro Imass > > > > [1] Por eso es que yo le echo tanta vaina la gente de Java que jura y > perjura que Java es realmente 100% portable, y quiz?s lo sea con los > green threads, pero como todos sabemos eso ser?a inoperante en un > ambiente de la vida real ;-) En la realidad siempre tendr?n que > recurrir a Native Threading y Just-In-Time Compiling para que sirva > para algo, por lo que su portabilidad se va al carajo viejo en la vida > real. > > [2] En la actualidad hay como 3 grandes meta-patrones que de alguna > forma compiten entre s?: Process, Threads y EDA/SEDA > (Event-Driven-Architecture , Staged-Event DA respectivamente). Al > final del d?a no son m?s que patrones de dise?o que depender?n que el > SO realmente haga algo con ello. Por ejemplo, si el timeslicing del > sistema es preemtive o es tiempo real. Y en honor a la verdad, casi > todo se reduce a polling de todas formas ;-) asi que todo esto es pura > teor?a. Y cada vez que sale alg?n genio diciendo que descubri? la > piedra filosofal, los estudios demuestran que el modelo de procesos > sigue siendo el m?s estable, eficiente y efectivo. > > > Saludos. > > > > El 3 de marzo de 2010 16:15, Ernesto Hern?ndez-Novich < > emhnemhn at gmail.com> > > escribi?: > >> > -- Saludos y un Abrazo. Jennifer. -------------- next part -------------- An HTML attachment was scrubbed... URL: From lem at itverx.com.ve Fri Mar 5 18:54:33 2010 From: lem at itverx.com.ve (Luis E. =?ISO-8859-1?Q?Mu=F1oz?=) Date: Fri, 05 Mar 2010 22:24:33 -0430 Subject: [caracas-pm] =?iso-8859-1?q?pregunta_sobre_la_librer=EDa_=09Threa?= =?iso-8859-1?q?ds=2Epm?= In-Reply-To: References: <1267649130.25253.78.camel@deepthought.itverx.com.ve> Message-ID: <1267844073.6211.232.camel@maclem-ether.ius.cc> On Fri, 2010-03-05 at 21:47 -0430, Jennifer Maldonado wrote: > > Gracias lo tomar? encuenta :D . La pregunta surgi? luego de ver que la > autora de un modulo llamado forks dijo esto: > [...] Nota que forks _emula_ threads usando fork(). F?jate tambi?n que habla de COW (Copy On Write), que es una t?cnica que se usa para la copia de procesos que ocurre al hacer la llamada fork() y que funciona como explico m?s abajo. En principio, el proceso padre se _copia_ a un proceso hijo. En arquitecturas razonablemente modernas, la copia es muy r?pida porque no es una verdadera copia. El proceso hijo y el proceso padre quedan compuestos con las mismas p?ginas de memoria, s?lo que en el hijo las p?ginas se marcan diciendo que son de s?lo lectura. Cuando el proceso hijo trata de modificar una de sus p?ginas, la operaci?n es interceptada por el sistema, que inmediatamente hace la copia de s?lo esa p?gina, para luego dejar continuar al hijo. Esto permite que s?lo sea necesario copiar las pocas p?ginas que t?picamente se deben cambiar al crear un proceso hijo. En su momento esto revolucion? el desempe?o de los sistemas Unix (todos los procesos nacen de una secuencia de llamadas fork() / exec()) porque anteriormente, _todas_ las p?ginas del proceso se copiaban en la llamada fork(), para luego ser descartadas con el exec(). Los threads tratan de ir m?s all? en cuando a desempe?o, a costa de sacrificar algunas cosas como el aislamiento. Son una abstracci?n interesante, pero en la pr?ctica introducen relaciones de dependencia con librer?as / versiones que debes tener muy presente. Lo que sigue es trabajar en forma as?ncrona. Esto es, emplear llamadas como select() / poll() y variantes de otras funciones que no se bloquean cuando esperan por algo, que permiten que tu programa se ponga a hacer otra cosa mientras llega un insumo que necesita. Este patr?n hace que la concurrencia sea _expl?cita_, es decir, que tengas que manejarla tu. Hay herramientas que te ayudan a construir c?digo con este patr?n (POE es un ejemplo). Hacer debugging de problemas de concurrencia no es ni sencillo ni divertido, de modo que no uses threads a menos que est?s totalmente segura de que tienes que usar threads. Aun en ese caso, prueba con las otras dos opciones antes :-) Saludos -lem From alimoreno at gmail.com Mon Mar 15 10:13:46 2010 From: alimoreno at gmail.com (Ali Moreno) Date: Mon, 15 Mar 2010 10:13:46 -0700 (PDT) Subject: [caracas-pm] Invitation to connect on LinkedIn Message-ID: <1271839273.6240039.1268673226583.JavaMail.app@ech3-cdn10.prod> LinkedIn ------------ I'd like to add you to my professional network on LinkedIn. - Ali Confirma que conoces a Ali Moreno https://www.linkedin.com/e/isd/1148334188/wSDjzskG/EML-invg_56/ ------ (c) 2010, LinkedIn Corporation -------------- next part -------------- An HTML attachment was scrubbed... URL: