Re: squid y reducir sus 18 hijos!!!
Antonio Castro writes: [...] Entonces tendriamos que ordenados por pesos estarían en primer lugar los procesos implementados en Windows, luego los procesos implementados en Linux, después los threads de Linux, y lo más ligero de todo creo que serían los threads de Windows. Pues no pillo de dónde sacas esa conclusión. Primero habría que definir pesado con algo más de exactitud. Una definición podría ser algo así como es más pesado cuanto más largo es el cambio de contexto (el paso de ejecutar en la CPU un proceso a ejecutar otro). Y en ese caso, medir lo que se tarde en ese cambio de contexto en cada uno de los casos. Como no tengo datos al respecto, no puedo decir si la clasificación que pones es más o menos cierta o no... En realidad me gusta más la palabra procesos ligeros que threads para el caso de Linux. Procesos ligeros hace referencia a que son procesos más ligeros que los normales en el sentido de que tienen menos contexto, y por lo tanto los cambios son más rápidos. Threads (hilos, hebras) hace referencia a que son unidades de ejecución, esto es, son planificados por el planificador de la CPU. De hecho, los procesos tradicionales suelen considerarse como de una hebra. En los sitemas con threads lo que ocurre es que un proceso normal puede tener en realidad varias hebras, varios flujos de ejecución. Para mi si tienen PID distintos, deberían llamarse procesos. Esto es relativamente poco relevante. Cada thread siempre tiene algún identificador, que puede ser o no un PID, dependiendo normalmente de la implementación. Como en Linux están implementados con clone (como ya ha comentado alguien), que funciona hasta cierto punto de forma (relativamente) análoga al fork, se usan PID como identificadores. Hala, ya está bien por hoy. Que voy a parecer un profesor de esos que dan clases... ;-) Saludos, Jesus. -- Jesus M. Gonzalez Barahona| Grupo de Sistemas y Comunicaciones [EMAIL PROTECTED] / [EMAIL PROTECTED] | ESCET, Universidad Rey Juan Carlos tel: +34 91 664 74 72 | c/ Tulipan s/n fax: +34 91 664 74 90 | 28933 Mostoles, Spain
Re: squid y reducir sus 18 hijos!!!
El viernes 11 de febrero de 2000 a la(s) 11:54:19 +0100, Jesus M. Gonzalez-Barahona contaba: Hala, ya está bien por hoy. Que voy a parecer un profesor de esos que dan clases... ;-) Pues ten por seguro que muchos nos alegraríamos :^). [EMAIL PROTECTED] [EMAIL PROTECTED] -- Just do it. David Serrano [EMAIL PROTECTED]Linux 2.2.14 - Reg. User #87069 lynx -dump http://www.ctv.es/USERS/fserrano/pgp_dsspubkey.asc | gpg --import - Hi! I'm a .signature virus! Copy me into your ~/.signature to help me spread! pgpyaOk56k0bC.pgp Description: PGP signature
Re: squid y reducir sus 18 hijos!!!
El Tue, Feb 08, 2000 at 02:40:21PM +0100, Antonio Castro dijo: On Mon, 7 Feb 2000, Hue-Bond wrote: El s=E1bado 05 de febrero de 2000 a la(s) 22:56:37 +0100, Manel Marin conta= ba: Pues que estoy configurando el squid (prometo chuleta ;-) y me encuentro que se me come una barbaridad de RAM (tengo 32MBytes) con = sus 18 hijos!!! Pero si son 18 hijos y ocupan cada uno 20 Mb (en mi equipo) es evidente que estan compartiendo la memoria. Supongo que algun programador nos podra hablar un rato de ello. [] Solo quiero añadir una cosa a lo que explicó Manuel sobre los procesos. Que si los procesos se crearon como un thread y no con fork() los procesos ademas del segmento de codigo, comparte completamente el de datos. Podría ser el caso, dado el consumo de memoria que tiene el programa quizas el autor halla optado por usar threads en vez de clonar el servidor con un fork(). Un saludo. -- ______ _ ___ / /\ / // __// /\ / /_/_/ // /\ / / / / // /_/___ / /_/__ /_ /\__/_ /////\ \__\/ \__\\\\\/
Re: squid y reducir sus 18 hijos!!!
On Thu, 10 Feb 2000, hcl wrote: El Tue, Feb 08, 2000 at 02:40:21PM +0100, Antonio Castro dijo: On Mon, 7 Feb 2000, Hue-Bond wrote: El s=E1bado 05 de febrero de 2000 a la(s) 22:56:37 +0100, Manel Marin conta= ba: Pues que estoy configurando el squid (prometo chuleta ;-) y me encuentro que se me come una barbaridad de RAM (tengo 32MBytes) con = sus 18 hijos!!! Pero si son 18 hijos y ocupan cada uno 20 Mb (en mi equipo) es evidente que estan compartiendo la memoria. Supongo que algun programador nos podra hablar un rato de ello. [] Solo quiero añadir una cosa a lo que explicó Manuel sobre los procesos. Que si los procesos se crearon como un thread y no con fork() los procesos ademas del segmento de codigo, comparte completamente el de datos. Podría ser el caso, dado el consumo de memoria que tiene el programa quizas el autor halla optado por usar threads en vez de clonar el servidor con un fork(). Los threads generan procesos ? Estamos hablando de procesos con distinto PID. Que alguien me aclare si los trheads en Linux generan procesos con PIDs distintos yo jamás he programado con threads pero tenía entendido que la única forma de generar un nuevo proceso era mediante fork(). Los trheads pensaba que eran hilos de ejecución distintos en paralelo dentro de un mismo proceso. Saludos Antonio Un saludo. -- ______ _ ___ / /\ / // __// /\ / /_/_/ // /\ / / / / // /_/___ / /_/__ /_ /\__/_ /////\ \__\/ \__\\\\\/ -- Unsubscribe? mail -s unsubscribe [EMAIL PROTECTED] /dev/null +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ /\ /\ Ciberdroide Informatica (tienda linux) \\W// http://www.ciberdroide.com _|0 0|_ +-oOOO--(___o___)--OOOo--+ | . . . . U U . . . . Antonio Castro Snurmacher | | http://slug.ctv.es/~acastro.[EMAIL PROTECTED] | +()()()--()()()--+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ (((Donde Linux)))http://www.ciberdroide.com/misc/donde/dondelinux.html +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Re: squid y reducir sus 18 hijos!!!
Cada thread Linux (esto es, cada thread montado sobre LinuxThreads) tiene un PID (identificador de proceso) distinto. Por ejemplo, aquí tienes la salida de ps para un programa con varios threads: cacharro(jgb)-jgb ps af PID TTY STAT TIME COMMAND 441 p4 S0:00 bash 462 p4 S1:03 \_ xemacs 541 p4 S0:00 \_ ./example_chat2 542 p4 S0:00 \_ ./example_chat2 543 p4 S0:00 \_ ./example_chat2 Puedes ver que tengo una bash, desde la que lanzo un xemacs y también un example_chat2. Ese programa, a su vez, genera varios threads (procesos ligeros, que comparten el mismo espacio de direcciones, y por tanto, la misma memoria, descriptores de dispositivos, etc.), que son los de PID 542 y 543. En Unix (y en Linux también) cada proceso tiene su propio espacio de direcciones. Para pasar de un proceso a otro, el kernel ha de realizar un cambio de contexto, que es una operación relativamente costosa (hay que cambiar dominios de protección, hacer flush de los bloques de registros del procesador, y algunas cosas más). Para poder hacer esos cambios de contexto más rápidamente, se usan threads. Los threads son simplemente actividades o hilos de control que comparten los recursos de un proceso. Como usan la misma memoria, etc, no hay que hacer esas operaciones costoas para hacer el cambio de un thread a otro, y el cambio es mucho más ligero (y rápido). A veces los threads se implementan en el kernel (es el caso de Linux con LinuxThreads), y en ese caso es relativamente habitual darle a cada thread un PID distinto. No sé si esto queda algo más claro... Que sea leve, Jesus. Antonio Castro writes: [...] Los threads generan procesos ? Estamos hablando de procesos con distinto PID. Que alguien me aclare si los trheads en Linux generan procesos con PIDs distintos yo jamás he programado con threads pero tenía entendido que la única forma de generar un nuevo proceso era mediante fork(). Los trheads pensaba que eran hilos de ejecución distintos en paralelo dentro de un mismo proceso. Saludos -- Jesus M. Gonzalez Barahona | Universidad Rey Juan Carlos [EMAIL PROTECTED] | ESCET [EMAIL PROTECTED] | c/ Tulipan s/n Grupo de Sistemas y Comunicaciones | 28933 Mostoles, Spain
Re: squid y reducir sus 18 hijos!!!
El martes 08 de febrero de 2000 a la(s) 14:40:21 +0100, Antonio Castro contaba: las partes que se pueden compartir se comparten para ahorrar memoria. Esto pasa con el area que contiene el c?digo del programa. No se produce duplicaci?n en memoria de esta informaci?n. De acuerdo contigo. Lo que no me concuerda es: USER PID %CPU %MEM SIZE RSS TTY STAT START TIME COMMAND proxy 232 0.0 10.0 19728 12912 ? S Jan 27 5:48 squid -D -sNY proxy 233 0.0 10.0 19728 12912 ? S Jan 27 0:00 squid -D -sNY proxy 234 0.0 10.0 19728 12912 ? S Jan 27 0:00 squid -D -sNY proxy 235 0.0 10.0 19728 12912 ? S Jan 27 0:00 squid -D -sNY proxy 236 0.0 10.0 19728 12912 ? S Jan 27 0:00 squid -D -sNY proxy 237 0.0 10.0 19728 12912 ? S Jan 27 0:00 squid -D -sNY proxy 238 0.0 10.0 19728 12912 ? S Jan 27 0:00 squid -D -sNY proxy 239 0.0 10.0 19728 12912 ? S Jan 27 0:00 squid -D -sNY proxy 240 0.0 10.0 19728 12912 ? S Jan 27 0:00 squid -D -sNY proxy 241 0.0 10.0 19728 12912 ? S Jan 27 0:00 squid -D -sNY proxy 242 0.0 10.0 19728 12912 ? S Jan 27 0:01 squid -D -sNY proxy 243 0.0 10.0 19728 12912 ? S Jan 27 0:01 squid -D -sNY proxy 244 0.0 10.0 19728 12912 ? S Jan 27 0:00 squid -D -sNY proxy 245 0.0 10.0 19728 12912 ? S Jan 27 0:01 squid -D -sNY proxy 246 0.0 10.0 19728 12912 ? S Jan 27 0:01 squid -D -sNY proxy 247 0.0 10.0 19728 12912 ? S Jan 27 0:01 squid -D -sNY proxy 248 0.0 10.0 19728 12912 ? S Jan 27 0:01 squid -D -sNY proxy 249 0.0 10.0 19728 12912 ? S Jan 27 0:01 squid -D -sNY Los 19.728 Kb no pueden ser de código, y si son de datos, ¿para qué hacen falta tantos procesos? [EMAIL PROTECTED] -- Just do it. David Serrano [EMAIL PROTECTED]Linux 2.2.14 - Reg. User #87069 lynx -dump http://www.ctv.es/USERS/fserrano/pgp_dsspubkey.asc | gpg --import - Hi! I'm a .signature virus! Copy me into your ~/.signature to help me spread! pgpx9D3C6C7HN.pgp Description: PGP signature
Re: squid y reducir sus 18 hijos!!!
Hola, [EMAIL PROTECTED] said: De acuerdo contigo. Lo que no me concuerda es: USER PID %CPU %MEM SIZE RSS TTY STAT START TIME COMMAND proxy 232 0.0 10.0 19728 12912 ? S Jan 27 5:48 squid -D -sNY proxy 233 0.0 10.0 19728 12912 ? S Jan 27 0:00 squid -D -sNY . . . Los 19.728 Kb no pueden ser de código, y si son de datos, ¿para qué hacen falta tantos procesos? Yo diría que lo que ocurre es que has instalado un Squid que venía compilado con la opción de --enable-async-io habilitada. Esta opción lo que hace es que el proceso principal lance una serie de threads para que se ocupen de la Entrada/Salida a disco (el cuello de botella básico de un proxy de web ... junto con la memoria :-) mientras que él queda libre para atender las peticiones de clientes. Se mejora la E/S y, a cambio, consume más CPU que en el modo normal (sin la opción async-io) Deben estar compartiendo memoria todos ellos, o sea que no creo que sea grave. Creo que puedes controlar el número de threads que se lanzan, pero solo en tiempo de compilación y si tienes un squid 2.3. Otra cosa es que sea conveniente o no el tener habilitada esa opción. Tengo entendido que, salvo que tengas una carga MUY fuerte de E/S, no es conveniente habilitar la opción en Linux. En el FAQ del Squid se comenta el tema, concretamente en: http://www.si.uniovi.es/mirror/squid/Doc/FAQ/FAQ-19.html#ss19.5 (por cierto, si no tienes el espacio de caché repartido en varios discos, preferentemente SCSI, tampoco creo que obtengas ninguna mejora con el uso del async-io) Para deshabilitarlo, tendrías que recompilar el squid, sin usar la opción --enable-async-io en el configure. Saludos -- Fernando Durá Colomina | e-mail: [EMAIL PROTECTED] Servei d'Informatica; Univ. de Valencia |Tel: +34 96 3864310 E-46100 Burjassot (Valencia) SPAIN |Fax: +34 96 3864200
Re: squid y reducir sus 18 hijos!!!
On Mon, 7 Feb 2000, Hue-Bond wrote: El s=E1bado 05 de febrero de 2000 a la(s) 22:56:37 +0100, Manel Marin conta= ba: Pues que estoy configurando el squid (prometo chuleta ;-) y me encuentro que se me come una barbaridad de RAM (tengo 32MBytes) con = sus 18 hijos!!! Pero si son 18 hijos y ocupan cada uno 20 Mb (en mi equipo) es evidente que estan compartiendo la memoria. Supongo que algun programador nos podra hablar un rato de ello. La estructura exacta de un proceso en Linux no la conozco pero lo que si te puedo decir es que un proceso tiene varias zonas de memoria mapeadas de forma que las partes que se pueden compartir se comparten para ahorrar memoria. Esto pasa con el area que contiene el código del programa. No se produce duplicación en memoria de esta información. Las variables de lectura escritura por ejemplo estarán en otra zona que no estariá compartida. Los procesos no acceden a memoria directamente sino que el kernel les asigna espacios de direcciones que son mapeados en memoria real de acuerdo a unas determinadas políticas establecidas en el kernel. Además el rango de direcciones disponibles ofrecido por el kernel supera el valor de la RAM física gracias a la exiestencia de una memoria de disco swap. A todo ello se le llama modelo de memoria virtual. Entre procesos que ejecutan programas distintos también se comparte memoria ya que se suelen usar librerias dinámicas compartidas y esto consigue aún mayor ahorro de memoria. Si me he equivocado en algo que alguien me corrija. [EMAIL PROTECTED] --=20 Just do it. David Serrano [EMAIL PROTECTED]Linux 2.2.14 - Reg. User #87= 069 lynx -dump http://www.ctv.es/USERS/fserrano/pgp_dsspubkey.asc | gpg --impor= t - Hi! I'm a .signature virus! Copy me into your ~/.signature to help me spre= ad! +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ /\ /\ Ciberdroide Informatica (tienda linux) \\W// http://www.ciberdroide.com _|0 0|_ +-oOOO--(___o___)--OOOo--+ | . . . . U U . . . . Antonio Castro Snurmacher | | http://slug.ctv.es/~acastro.[EMAIL PROTECTED] | +()()()--()()()--+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ (((Donde Linux)))http://www.ciberdroide.com/misc/donde/dondelinux.html +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Re: squid y reducir sus 18 hijos!!!
On Tue, Feb 08, 2000 at 02:40:21PM +0100, Antonio Castro wrote: On Mon, 7 Feb 2000, Hue-Bond wrote: El s=E1bado 05 de febrero de 2000 a la(s) 22:56:37 +0100, Manel Marin conta= ba: Pues que estoy configurando el squid (prometo chuleta ;-) y me encuentro que se me come una barbaridad de RAM (tengo 32MBytes) con = sus 18 hijos!!! Pero si son 18 hijos y ocupan cada uno 20 Mb (en mi equipo) es evidente que estan compartiendo la memoria. Supongo que algun programador nos podra hablar un rato de ello. Digo yo que no se podría hacer que squid lo hiciera todo desde un usuario y limitar la cantidad de cpu i memoria que puede usar ese usuario mediante los archivos limits o pam ??? __ Do You Yahoo!? Talk to your friends online with Yahoo! Messenger. http://im.yahoo.com
squid y reducir sus 18 hijos!!!
Hola a todos, Pues que estoy configurando el squid (prometo chuleta ;-) y me encuentro que se me come una barbaridad de RAM (tengo 32MBytes) con sus 18 hijos!!! Me he leido el archivo de configuración entero (¡¡¡toooreeero!!!) y no aparece ¿Como demonios le reduzco los hijos? Saludos, -- - Manel Marin e-mail: [EMAIL PROTECTED] Linux Powered (Debian 2.1 slink) kernel 2.2.13 Mira mis chuletas de Linux en http://perso.wanadoo.es/manel3 - Mi petición de drivers para Linux es la nº 33126 (Pasate por http://www.libranet.com/petition.html ;-)
Re: squid y reducir sus 18 hijos!!!
El sábado 05 de febrero de 2000 a la(s) 22:56:37 +0100, Manel Marin contaba: Pues que estoy configurando el squid (prometo chuleta ;-) y me encuentro que se me come una barbaridad de RAM (tengo 32MBytes) con sus 18 hijos!!! Pero si son 18 hijos y ocupan cada uno 20 Mb (en mi equipo) es evidente que estan compartiendo la memoria. Supongo que algun programador nos podra hablar un rato de ello. [EMAIL PROTECTED] -- Just do it. David Serrano [EMAIL PROTECTED]Linux 2.2.14 - Reg. User #87069 lynx -dump http://www.ctv.es/USERS/fserrano/pgp_dsspubkey.asc | gpg --import - Hi! I'm a .signature virus! Copy me into your ~/.signature to help me spread! pgpNvx5eaYsOm.pgp Description: PGP signature
Re: squid y reducir sus 18 hijos!!!
El Sat, Feb 05, 2000 at 10:56:37PM +0100, Manel Marin dijo: Hola a todos, Pues que estoy configurando el squid (prometo chuleta ;-) y me encuentro que se me come una barbaridad de RAM (tengo 32MBytes) con sus 18 hijos!!! Me he leido el archivo de configuración entero (¡¡¡toooreeero!!!) y no aparece ¿Como demonios le reduzco los hijos? la verdad es que no se eso exactamente, aunque supongo que si le dices que use un maximo de ram, el comprendera que no puede 'pocrear' tanto por cierto, ¿como se hace que el squid haga de cache offline?, es que me veo poniendo el wwwofre (o algo asi...), porque en cuanto me desconecto de internet me empieza a cantar que no hay dns, tal y tal ta'luego -- /--\ | Miembro de LIMA (Linux Malaga) | | (güeno, más o menos) | | http://lima.telenet.es | \--/ / rebeldin es un i486 con \ | Debian Linux 2.?,Kernel 2.2.13 | \--/