X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=fio.c;h=b79aa93e644296be9bdf0439863760d8dd4a6cfd;hb=d8005759746a2cb5c8269201911b1997aa714e80;hp=1997bb7cc8761e28ba9baf9f8d303530805d37ab;hpb=f4705a73fda9a84a12a26bcd6bc2ab4f012ace71;p=fio.git diff --git a/fio.c b/fio.c index 1997bb7c..b79aa93e 100644 --- a/fio.c +++ b/fio.c @@ -49,6 +49,7 @@ int nr_process = 0; int nr_thread = 0; int shm_id = 0; int temp_stall_ts; +unsigned long done_secs = 0; static struct fio_mutex *startup_mutex; static volatile int fio_abort; @@ -74,10 +75,12 @@ static void terminate_threads(int group_id) struct thread_data *td; int i; + dprint(FD_PROCESS, "terminate group_id=%d\n", group_id); + for_each_td(td, i) { if (group_id == TERMINATE_ALL || groupid == td->groupid) { - dprint(FD_PROCESS, "setting terminate on %d\n", - td->pid); + dprint(FD_PROCESS, "setting terminate on %s/%d\n", + td->o.name, td->pid); td->terminate = 1; td->o.start_delay = 0; @@ -1111,10 +1114,13 @@ reaped: (*nr_running)--; (*m_rate) -= td->o.ratemin; (*t_rate) -= td->o.rate; - pending--; + if (!td->pid) + pending--; if (td->error) exit_value++; + + done_secs += mtime_since_now(&td->epoch) / 1000; } if (*nr_running == cputhreads && !pending && realthreads) @@ -1222,8 +1228,11 @@ static void run_threads(void) continue; } - if (td->o.stonewall && (nr_started || nr_running)) + if (td->o.stonewall && (nr_started || nr_running)) { + dprint(FD_PROCESS, "%s: stonewall wait\n", + td->o.name); break; + } /* * Set state to created. Thread will transition