filesetup: don't track file allocation for jobs == 1
authorJens Axboe <axboe@kernel.dk>
Mon, 9 Oct 2017 18:37:14 +0000 (12:37 -0600)
committerJens Axboe <axboe@kernel.dk>
Mon, 9 Oct 2017 18:37:14 +0000 (12:37 -0600)
We only really need this for multiple jobs, and we only check it
if we are in job > 1. But we always mark the file as allocated.
For jobs with lots of files (millions), this takes a long time
to do at setup time.

Running this sample job:

./fio --alloc-size=131072 --name=filecreate --ioengine=filecreate --size=1g --nr_files=1m --openfiles=256

takes ~16s before, and about ~7s afterwards.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
filesetup.c

index 891a55a1ddb97ab30c7cc375cd9246fed21addd8..789f0ed29ea501be4c5e3c3ee895093b305b5787 100644 (file)
@@ -1588,7 +1588,8 @@ int add_file(struct thread_data *td, const char *fname, int numjob, int inc)
        if (f->filetype == FIO_TYPE_FILE)
                td->nr_normal_files++;
 
-       set_already_allocated(file_name);
+       if (td->o.numjobs > 1)
+               set_already_allocated(file_name);
 
        if (inc)
                td->o.nr_files++;