Mention cpuio never finishes without real I/O in documentation
authorTomohiro Kusumi <>
Wed, 27 Jul 2016 13:37:12 +0000 (22:37 +0900)
committerJens Axboe <>
Wed, 27 Jul 2016 14:29:45 +0000 (08:29 -0600)
reap_threads() terminates cpuio threads only when there is
at least one real I/O thread that is exiting.

> if (*nr_running == cputhreads && !pending && realthreads)
> fio_terminate_threads(TERMINATE_ALL);

Signed-off-by: Tomohiro Kusumi <>
Signed-off-by: Jens Axboe <>

diff --git a/HOWTO b/HOWTO
index ca1542d5fdf88b7fa0e6e607ab019a98c5d2d770..b9076d5e7708c8565b9ef35af304262a300972a4 100644 (file)
--- a/HOWTO
+++ b/HOWTO
@@ -757,7 +757,8 @@ ioengine=str        Defines how the job issues io to the file. The following
                                85% of the CPU. In case of SMP machines,
                                use numjobs=<no_of_cpu> to get desired CPU
                                usage, as the cpuload only loads a single
-                               CPU at the desired rate.
+                               CPU at the desired rate. A job never finishes
+                               unless there is at least one non-cpuio job.
                        guasi   The GUASI IO engine is the Generic Userspace
                                Asyncronous Syscall Interface approach
diff --git a/fio.1 b/fio.1
index 0461d90e1f8ba6077fe38507021662f17c5f87ba..a9abe3fcec4e6a87cce2c425800d3e894d02ddb1 100644 (file)
--- a/fio.1
+++ b/fio.1
@@ -656,7 +656,8 @@ and send/receive. This ioengine defines engine specific options.
 .B cpuio
 Doesn't transfer any data, but burns CPU cycles according to \fBcpuload\fR and
-\fBcpuchunks\fR parameters.
+\fBcpuchunks\fR parameters. A job never finishes unless there is at least one
+non-cpuio job.
 .B guasi
 The GUASI I/O engine is the Generic Userspace Asynchronous Syscall Interface