If `thread' option is enabled, resource usage should be thread
based instead of process based. For the following job,
fio --ioengine=cpuio --cpuload=50 --time_based --runtime=10 --name=j0 --numjobs=4 --thread
before patch, each thread CPU statistics:
...
cpu : usr=199.67%, sys=0.14%, ctx=1475, majf=0, minf=24
...
after patch:
...
cpu : usr=49.80%, sys=0.00%, ctx=79, majf=0, minf=
18446744073709538943
...
Signed-off-by: Jens Axboe <axboe@kernel.dk>
#include <linux/unistd.h>
#include <linux/raw.h>
#include <linux/major.h>
+#include <linux/version.h>
#include <endian.h>
#include "indirect.h"
#define FIO_HAVE_FALLOC_ENG
#endif
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+#define FIO_HAVE_RUSAGE_THREAD
+#endif
+
#ifdef SYNC_FILE_RANGE_WAIT_BEFORE
#define FIO_HAVE_SYNC_FILE_RANGE
#endif
{
struct thread_stat *ts = &td->ts;
+#ifdef FIO_HAVE_RUSAGE_THREAD
+ getrusage(RUSAGE_THREAD, &td->ru_end);
+#else
getrusage(RUSAGE_SELF, &td->ru_end);
+#endif
ts->usr_time += mtime_since(&td->ru_start.ru_utime,
&td->ru_end.ru_utime);