Improve job grouping
authorJens Axboe <jens.axboe@oracle.com>
Mon, 12 Mar 2007 14:09:24 +0000 (15:09 +0100)
committerJens Axboe <jens.axboe@oracle.com>
Mon, 12 Mar 2007 14:09:24 +0000 (15:09 +0100)
Group jobs as follows:

- Jobs before or after a stonewall have different groupids
- Jobs grouped with numjobs have a private groupid

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
init.c

diff --git a/init.c b/init.c
index bbd0675861be4d55ad336f1b78f540dbaeeadd62..a2ff7bc5593063d2964e4f8a23632ae221ceca73 100644 (file)
--- a/init.c
+++ b/init.c
@@ -623,6 +623,8 @@ FILE *f_err = NULL;
 static int write_lat_log = 0;
 int write_bw_log = 0;
 
 static int write_lat_log = 0;
 int write_bw_log = 0;
 
+static int prev_group_jobs;
+
 FILE *get_f_out()
 {
        return f_out;
 FILE *get_f_out()
 {
        return f_out;
@@ -896,10 +898,13 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num)
        td->ts.slat_stat[0].min_val = td->ts.slat_stat[1].min_val = ULONG_MAX;
        td->ts.bw_stat[0].min_val = td->ts.bw_stat[1].min_val = ULONG_MAX;
 
        td->ts.slat_stat[0].min_val = td->ts.slat_stat[1].min_val = ULONG_MAX;
        td->ts.bw_stat[0].min_val = td->ts.bw_stat[1].min_val = ULONG_MAX;
 
-       if (td->stonewall && td->thread_number > 1)
+       if ((td->stonewall || td->numjobs > 1) && prev_group_jobs) {
+               prev_group_jobs = 0;
                groupid++;
                groupid++;
+       }
 
        td->groupid = groupid;
 
        td->groupid = groupid;
+       prev_group_jobs++;
 
        if (setup_rate(td))
                goto err;
 
        if (setup_rate(td))
                goto err;
@@ -955,6 +960,12 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num)
                if (add_job(td_new, jobname, job_add_num))
                        goto err;
        }
                if (add_job(td_new, jobname, job_add_num))
                        goto err;
        }
+
+       if (td->numjobs > 1) {
+               groupid++;
+               prev_group_jobs = 0;
+       }
+
        return 0;
 err:
        put_job(td);
        return 0;
 err:
        put_job(td);