Unix - Hilos

 
Vista:

Hilos

Publicado por Chusi (4 intervenciones) el 11/01/2007 00:41:09
Hola, tengo un problema al ejecutar el comando $time sobre una version que hice del comando copy con hilos (en c) me dan los siguientes resultados:

real 0m5.744s
user 0m0.084s
sys 0m1.636s

La versión que trae unix del comando copy me da estos:

real 0m2.267s
user 0m0.008s
sys 0m0.700s

Alguien me puede explicar a que es debido que el tiempo de usuario sea mucho mayor (10 veces mas) de una version con hilos comparado con la version sin hilos? Me esta volviendo loco! Saludos!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Hilos

Publicado por Tom (178 intervenciones) el 11/01/2007 11:11:22
1.- ¿ En qué Unix ?
2.- ¿ Con qué librería de threads?
3.- ¿ Por qué piensas que con threads debería ser más rápido ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Hilos

Publicado por Chusi (4 intervenciones) el 11/01/2007 11:24:36
En UNIX.

Uso las librerias fcntl.h stdio.h pthread.h semaphore.h.

Lo que hace el programa en hilos es mediante un doble buffer y el uso de semaforos, la coordinacion de lector y escritor, que son un hilo cada uno.
Hago llamadas para crear los hilos, inicializo semaforos y funciona correctamente, ese no es el problema.
No pienso que deberia ir mas rapido pero necesito saber porque el tiempo de usuario es tan diferente de una versión con hilos, a la version del copy que tiene UNIX.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Hilos

Publicado por Tom (178 intervenciones) el 11/01/2007 12:09:27
Antes que nada, lo que me dices que usas no son librerías, son ficheros de cabeceras.

¿ Cual UNIX ? (Solaris, DG/UX, AIX, ...)

Yo supongo que el tiempo de usuario se dispara porque tu versión de cp tiene muchas más esperas , las de los semáforos, las de E/S, las propias de los threads.

No sé si usar semáforos es tu mejor opción; quizás iría mejor con mutexes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Hilos

Publicado por Chusi (4 intervenciones) el 11/01/2007 12:28:26
El que te viene con Ubuntu!
Los tiempos de los semaforos, writes, creacion de hilos y toda llamada al sistema afecta al tiempo de sistema, no al de usuario.
Y no sé si sera buena opcion o no pero viene estipulado que se debe hacer con esas cabeceras y me han pedido que explique a que es debida esa diferencia de tiempo y no se que responder! :(
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Hilos

Publicado por Tom (178 intervenciones) el 11/01/2007 14:45:36
O sea, en Linux.

Tienes razón y no. Yo me refería a tiempos __de_espera__. Los tiempos de espera de E/S y de semáforos no son tiempos de proceso. Durante esas esperas tu programa no tiene asignado tiempo de procesador.

En tu caso (Linux) el tiempo de usuario (míralo en times(2)) es, en realidad, el tiempo de CPU asignado a tu programa, sin contar el tiempo empleado por las syscalls, y está bien claro porqué se dispara ya que al usar threads y semáforos, tu prog necesita mucho más proceso.

Para que lo veas, ejecuta:
strace cp fichero1 fichero2

y luego compara con
strace mi_cp fichero1 fichero2

Y, como tampoco das muchos datos, te recomiendo que investigues los problemas que tiene la implementación de los threads POSIX en Linux. Tendrás que buscar info teniendo en cuenta la versión del kernel que usas (básicamente si es anterior o posterior a la 2.6) y si estás linkando con unixthreads (su mayor problema es el "monitor" de threads y el mal manejo de signals) o NPTL (implementación mucho más eficaz).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Hilos

Publicado por Chusi (4 intervenciones) el 13/01/2007 13:51:27
Muchas gracias Tom, intentare comprobar eso que me dices y a ver si me dan por valida esa explicacion! Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar