X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=init.c;h=3eaf9b7f383bab8451d4c75b9d193772870cbe84;hp=ced9d859aa853ddf9fb04c2a6395aa418e5f166d;hb=c1d5725eaad49dbf5b3a05c27b0b3677af69f64c;hpb=2e77841b9bc7f99ffd1caa2c2c84af2a66731658 diff --git a/init.c b/init.c index ced9d859..3eaf9b7f 100644 --- a/init.c +++ b/init.c @@ -124,7 +124,7 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num) if (td == &def_thread) return 0; - if (td->io_engine & FIO_SYNCIO) + if (td->io_ops->flags & FIO_SYNCIO) td->iodepth = 1; else { if (!td->iodepth) @@ -196,9 +196,12 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num) ddir = td->ddir + (!td->sequential << 1) + (td->iomix << 2); if (!terse_output) { - if (!job_add_num) - fprintf(f_out, "%s: (g=%d): rw=%s, odir=%d, bs=%d-%d, rate=%d, ioengine=%s, iodepth=%d\n", td->name, td->groupid, ddir_str[ddir], td->odirect, td->min_bs, td->max_bs, td->rate, td->io_engine_name, td->iodepth); - else if (job_add_num == 1) + if (!job_add_num) { + if (td->io_ops->flags & FIO_CPUIO) + fprintf(f_out, "%s: ioengine=cpu, cpuload=%u, cpucycle=%u\n", td->name, td->cpuload, td->cpucycle); + else + fprintf(f_out, "%s: (g=%d): rw=%s, odir=%d, bs=%d-%d, rate=%d, ioengine=%s, iodepth=%d\n", td->name, td->groupid, ddir_str[ddir], td->odirect, td->min_bs, td->max_bs, td->rate, td->io_ops->name, td->iodepth); + } else if (job_add_num == 1) fprintf(f_out, "...\n"); } @@ -591,34 +594,14 @@ static int str_mem_cb(struct thread_data *td, char *mem) static int str_ioengine_cb(struct thread_data *td, char *str) { - if (!strncmp(str, "linuxaio", 8) || !strncmp(str, "aio", 3) || - !strncmp(str, "libaio", 6)) { - strcpy(td->io_engine_name, "libaio"); - td->io_engine = FIO_LIBAIO; - return 0; - } else if (!strncmp(str, "posixaio", 8)) { - strcpy(td->io_engine_name, "posixaio"); - td->io_engine = FIO_POSIXAIO; - return 0; - } else if (!strncmp(str, "sync", 4)) { - strcpy(td->io_engine_name, "sync"); - td->io_engine = FIO_SYNCIO; - return 0; - } else if (!strncmp(str, "mmap", 4)) { - strcpy(td->io_engine_name, "mmap"); - td->io_engine = FIO_MMAPIO; - return 0; - } else if (!strncmp(str, "sgio", 4)) { - strcpy(td->io_engine_name, "sgio"); - td->io_engine = FIO_SGIO; - return 0; - } else if (!strncmp(str, "splice", 6)) { - strcpy(td->io_engine_name, "splice"); - td->io_engine = FIO_SPLICEIO; + if (!str) + str = DEF_IO_ENGINE_NAME; + + td->io_ops = load_ioengine(td, str); + if (td->io_ops) return 0; - } - log_err("fio: ioengine: { linuxaio, aio, libaio }, posixaio, sync, mmap, sgio, splice\n"); + log_err("fio: ioengine: { linuxaio, aio, libaio }, posixaio, sync, mmap, sgio, splice, cpu\n"); return 1; } @@ -726,6 +709,14 @@ int parse_jobs_ini(char *file, int stonewall_flag) fgetpos(f, &off); continue; } + if (!check_int(p, "cpuload", &td->cpuload)) { + fgetpos(f, &off); + continue; + } + if (!check_int(p, "cpuchunks", &td->cpucycle)) { + fgetpos(f, &off); + continue; + } if (!check_int(p, "thinktime", &td->thinktime)) { fgetpos(f, &off); continue; @@ -750,7 +741,7 @@ int parse_jobs_ini(char *file, int stonewall_flag) continue; } if (!check_str_time(p, "timeout", &ull)) { - td->timeout = ul1; + td->timeout = ull; fgetpos(f, &off); continue; } @@ -987,8 +978,6 @@ static int fill_def_thread(void) def_thread.bs = DEF_BS; def_thread.min_bs = -1; def_thread.max_bs = -1; - def_thread.io_engine = DEF_IO_ENGINE; - strcpy(def_thread.io_engine_name, DEF_IO_ENGINE_NAME); def_thread.odirect = DEF_ODIRECT; def_thread.ratecycle = DEF_RATE_CYCLE; def_thread.sequential = DEF_SEQUENTIAL; @@ -1025,7 +1014,6 @@ static void usage(char *name) printf("\t-l Generate per-job latency logs\n"); printf("\t-w Generate per-job bandwidth logs\n"); printf("\t-m Minimal (terse) output\n"); - printf("\t-f Job file (Required)\n"); printf("\t-v Print version info and exit\n"); } @@ -1037,15 +1025,15 @@ static int parse_cmd_line(int argc, char *argv[]) switch (c) { case 't': def_timeout = atoi(optarg); - idx++; + idx = optind; break; case 'l': write_lat_log = 1; - idx++; + idx = optind; break; case 'w': write_bw_log = 1; - idx++; + idx = optind; break; case 'o': f_out = fopen(optarg, "w+"); @@ -1054,11 +1042,11 @@ static int parse_cmd_line(int argc, char *argv[]) exit(1); } f_err = f_out; - idx++; + idx = optind; break; case 'm': terse_output = 1; - idx++; + idx = optind; break; case 'h': usage(argv[0]); @@ -1075,7 +1063,7 @@ static int parse_cmd_line(int argc, char *argv[]) ini_file[ini_idx - 1] = strdup(argv[idx]); idx++; } - + if (!f_out) { f_out = stdout; f_err = stderr;