Esta es una secuela de mi anterior question. Estoy usando un tenedor para crear un proceso infantil. En el interior del niño, estoy dando comandos para ejecutar un proceso de la siguiente manera:tiempo tomado por proceso hijo bifurcado
if((childpid=fork())==0)
{
system("./runBinary ");
exit(1)
}
Mi runBinary tiene la funcionalidad de medición de la cantidad de tiempo que lleva de principio a fin.
Lo que me sorprende es que cuando ejecuto runBinary directamente en la línea de comandos, tarda ~ 60 segundos. Sin embargo, cuando lo ejecuto como un proceso secundario, toma más, como ~ 75 o más. ¿Hay algo que pueda hacer o que esté haciendo mal en la actualidad, que me está llevando a esto?
Gracias por la ayuda con antelación. MÁS DETALLES: Me estoy ejecutando en el servidor RHEL de Linux, con 24 núcleos. Estoy midiendo el tiempo de la CPU. En un momento, solo doy 8 hijos (secuencialmente), cada uno de los cuales está vinculado a un núcleo diferente, usando el conjunto de tareas (no se muestra en el código). El sistema no está cargado a excepción de mi propio programa.
Tal vez se tarda 15 segundos para su proceso padre de dormir para ser despertado por el o/s después de que el niño sale? –
@JonathanLeffler ¿Puedes decir cómo confirmar eso? Gracias – user984260
@sarnold en realidad es runBinary que mide el tiempo. – user984260