IOshark is a repeatable application workload storage benchmark. You can find more documentation on IOshark at : https://docs.google.com/a/google.com/document/d/1Bhq7iNPVc_JzwRrkmZqcPjMvWgpHX0r3Ncq-ZsRNOBA/edit?usp=sharing
The short summary of what IOshark is : IOshark has 2 components, one is a strace+ftrace compiler that takes straces and select ftraces fed into it and compiles this into bytecodes (stored in .wl files). The compiler runs on a Linux host. The second component (which runs on the device) is the tester that takes as input the bytecode files (.wl files) and executes them on the device.
Each IOshark workload file is composed of the following
Header File State : Table of File Entries. Each entry describes a file File Op : Table of File Operations. One entry describes one operation
Each of the above is described below :
Note : Everything is in Big Endian byte order.
Header { /* IOshark version number / u_int64_t ioshark_version; / Total number of files used in this IOshark workload file / u_int64_t num_files; / Total number of IO operations in this IOshark workload file */ u_int64_t num_io_operations; }
File State { u_int64_t fileno; u_int64_t size; u_int64_t global_filename_ix; }
File Op { /* delta us between previous file op and this */ u_int64_t delta_us; #define file_op file_op_union.file_op_u union { enum file_op file_op_u; int32_t enum_size; } file_op_union; u_int64_t fileno; union { struct lseek_args { #define lseek_offset u.lseek_a.offset #define lseek_action u.lseek_a.action u_int64_t offset; int32_t action; } lseek_a; struct prw_args { #define prw_offset u.prw_a.offset #define prw_len u.prw_a.len u_int64_t offset; u_int64_t len; } prw_a; #define rw_len u.rw_a.len struct rw_args { u_int64_t len; } rw_a; #define mmap_offset u.mmap_a.offset #define mmap_len u.mmap_a.len #define mmap_prot u.mmap_a.prot struct mmap_args { u_int64_t offset; u_int64_t len; int32_t prot; } mmap_a; #define open_flags u.open_a.flags #define open_mode u.open_a.mode struct open_args { int32_t flags; int32_t mode; } open_a; } u;
}