Questo è un sequel del mio precedente question. Sto usando fork per creare processi figlio. All'interno bambino, sto dando il comando per eseguire un processo come segue:tempo impiegato dal processo figlio biforcuto
if((childpid=fork())==0)
{
system("./runBinary ");
exit(1)
}
mio runBinary ha la funzionalità di misurare quanto tempo ci vuole, dall'inizio alla fine.
Quello che mi stupisce è che quando eseguo runBinary direttamente su riga di comando, ci vogliono circa 60 secondi. Tuttavia, quando lo eseguo come un processo figlio, richiede più, come ~ 75 o più. C'è qualcosa che posso fare o sto sbagliando, che sta portando a questo?
Grazie per l'aiuto in anticipo. ULTERIORI DETTAGLI: Sono in esecuzione su server RHEL linux, con 24 core. Sto misurando il tempo della CPU. Alla volta, forzo solo 8 figli (in sequenza), ognuno dei quali è associato a un core diverso, usando taskset (non mostrato nel codice). Il sistema non è caricato tranne per il mio programma.
Forse ci vogliono 15 secondi per il processo padre di sonno per essere svegliati dal o/s dopo che il bambino è uscito? –
@JonathanLeffler puoi dire come confermarlo? Grazie – user984260
@sarnold in realtà è runBinary che è a sua volta misurare il tempo. – user984260