[PATCH] Basic support for a cpu cycle eater job
This will allow you to put some cpu load on the box, while other
threads are doing IO.
diff --git a/fio.h b/fio.h
index a87fcef..ee47599 100644
--- a/fio.h
+++ b/fio.h
@@ -131,6 +131,7 @@
FIO_POSIXAIO = 1 << 3,
FIO_SGIO = 1 << 4,
FIO_SPLICEIO = 1 << 5 | FIO_SYNCIO,
+ FIO_CPUIO = 1 << 6,
};
/*
@@ -262,6 +263,12 @@
unsigned int num_maps;
/*
+ * CPU "io" cycle burner
+ */
+ unsigned int cpuload;
+ unsigned int cpucycle;
+
+ /*
* bandwidth and latency stats
*/
struct io_stat clat_stat[2]; /* completion latency */
@@ -307,13 +314,17 @@
struct list_head io_log_list;
};
-#define td_verror(td, err) \
+#define __td_verror(td, err, msg) \
do { \
int e = (err); \
(td)->error = e; \
- snprintf(td->verror, sizeof(td->verror) - 1, "file:%s:%d, error=%s", __FILE__, __LINE__, strerror(e)); \
+ snprintf(td->verror, sizeof(td->verror) - 1, "file:%s:%d, error=%s", __FILE__, __LINE__, (msg)); \
} while (0)
+
+#define td_verror(td, err) __td_verror((td), (err), strerror((err)))
+#define td_vmsg(td, err, msg) __td_verror((td), (err), (msg))
+
extern struct io_u *__get_io_u(struct thread_data *);
extern void put_io_u(struct thread_data *, struct io_u *);
@@ -409,6 +420,7 @@
extern unsigned long mtime_since(struct timeval *, struct timeval *);
extern unsigned long mtime_since_now(struct timeval *);
extern unsigned long time_since_now(struct timeval *);
+extern void __usec_sleep(unsigned int);
extern void usec_sleep(struct thread_data *, unsigned long);
extern void rate_throttle(struct thread_data *, unsigned long, unsigned int);