I am confused around the interaction between the jobname, nrfiles, and
numjobs parameters together and, in particular, where nrfiles == 1. In
this case, when I run fio with nrfiles=1 and numjobs=3, only one file
is created. However, if I bump nrfiles=2, 6 files are created. I can
repro this with HEAD.
FIO=fio-data-$(date +%s)
rm -rf ${FIO} && mkdir ${FIO} && \
./fio --name=${FIO} --directory=${FIO} --rw=write --size=1m \
--bs=64k --scramble_buffers=1 --ioengine=sync --nrfiles=2 \
--numjobs=3 > /dev/null && ls ${FIO} | wc -l
6
rm -rf ${FIO} && mkdir ${FIO} && \
./fio --name=${FIO} --directory=${FIO} --rw=write --size=1m \
--bs=64k --scramble_buffers=1 --ioengine=sync --nrfiles=1 \
--numjobs=3 > /dev/null && ls ${FIO} | wc -l
1
Note that the filename in the run with --nrfiles=1 is simply "jobname"
instead of "jobname.jobnumber.filenumber". After looking at the code,
it turns out that this happens because the job name is the same as the
directory name. A very quick code scan leads me to believe that this
comes from init.c that does this:
if (o->nr_files == 1 && exists_and_not_file(jobname))
add_file(td, jobname);
else {
for (i = 0; i < o->nr_files; i++)
add_file(td, make_filename(fname, o, jobname,
td->thread_number, i));
}
Is there a reason for the short circuit in the first case? Would be
great to document this somewhere if there is a reason the code should
stay.
Cheers,
Niraj
--
To unsubscribe from this list: send the line "unsubscribe fio" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html