• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..--

Android.bpD23-Mar-20241.5 KiB6759

READMED23-Mar-20243.2 KiB10593

collect-straces-ftraces.shD23-Mar-20246.5 KiB203139

collect-straces.shD23-Mar-20242.7 KiB9856

compile-only.shD23-Mar-20243.6 KiB12277

compile_ioshark.cD23-Mar-202414.9 KiB687605

compile_ioshark.hD23-Mar-20242.1 KiB8254

compile_ioshark_subr.cD23-Mar-20247.1 KiB281239

convert_format.cD23-Mar-20247.5 KiB284256

dump_ioshark_filenames.cD23-Mar-20242.4 KiB8158

ioshark.hD23-Mar-20243 KiB13078

ioshark_bench.cD23-Mar-202421.7 KiB874730

ioshark_bench.hD23-Mar-20243.7 KiB159121

ioshark_bench_mmap.cD23-Mar-20245.1 KiB202157

ioshark_bench_subr.cD23-Mar-202417.3 KiB721613

monkey-strace+fstrace.tgzD23-Mar-202429.4 MiB

monkeystracebig.tgzD23-Mar-202428.8 MiB

monkeytracebig.tar.gzD23-Mar-202418.9 MiB

wl.tarD23-Mar-202436.9 MiB

README

1IOshark is a repeatable application workload storage benchmark. You
2can find more documentation on IOshark at :
3https://docs.google.com/a/google.com/document/d/1Bhq7iNPVc_JzwRrkmZqcPjMvWgpHX0r3Ncq-ZsRNOBA/edit?usp=sharing
4
5The short summary of what IOshark is : IOshark has 2 components, one
6is a strace+ftrace compiler that takes straces and select ftraces fed
7into it and compiles this into bytecodes (stored in *.wl files). The
8compiler runs on a Linux host. The second component (which runs on the
9device) is the tester that takes as input the bytecode files (*.wl
10files) and executes them on the device.
11
12How to Run :
13----------
14- First collect straces and compile these into bytecodes. The wrapper
15script provided (collect-straces.sh) collects straces, ships them to
16the host where the script runs, compiles and packages up the bytecode
17files into a wl.tar file.
18- Ship the wl.tar file and the iostark_bench binaries to the target
19device (on /data/local/tmp say). Explode the tarfile.
20- Run the tester. "ioshark_bench *.wl" runs the test with default
21options. Supported ioshark_bench options :
22-b : Explicitly specify a blockdev (to get IO stats from from
23/proc/diskstats).
24-d : Preserve the delays between successive filesystem syscalls as
25seen in the original straces.
26-n <N> : Run for N iterations
27-t <N> : Limit to N threads. By default (without this option), IOshark
28will launch as many threads as there are input files, so 1 thread/file.
29-v : verbose. Chatty mode.
30-s : One line summary.
31-q : Don't create the files in read-only partitions like /system and
32/vendor. Instead do reads on those files.
33
34FILE FORMAT :
35-----------
36
37Each IOshark workload file is composed of the following
38
39Header
40File State : Table of File Entries. Each entry describes a file
41File Op : Table of File Operations. One entry describes one operation
42
43Each of the above is described below :
44
45Note : Everything is in Big Endian byte order.
46
47Header {
48       /* IOshark version number */
49       u_int64_t	ioshark_version;
50       /* Total number of files used in this IOshark workload file */
51       u_int64_t	num_files;
52       /* Total number of IO operations in this IOshark workload file */
53       u_int64_t       num_io_operations;
54}
55
56File State {
57       u_int64_t	fileno;
58       u_int64_t	size;
59       u_int64_t 	global_filename_ix;
60}
61
62File Op {
63	/* delta us between previous file op and this */
64	u_int64_t		delta_us;
65#define file_op			file_op_union.file_op_u
66	union {
67		enum file_op		file_op_u;
68		int32_t			enum_size;
69	} file_op_union;
70	u_int64_t		fileno;
71	union {
72		struct lseek_args {
73#define lseek_offset	u.lseek_a.offset
74#define lseek_action	u.lseek_a.action
75			u_int64_t	offset;
76			int32_t		action;
77		} lseek_a;
78		struct prw_args {
79#define prw_offset	u.prw_a.offset
80#define prw_len		u.prw_a.len
81			u_int64_t	offset;
82			u_int64_t	len;
83		} prw_a;
84#define rw_len		u.rw_a.len
85		struct rw_args {
86			u_int64_t	len;
87		} rw_a;
88#define mmap_offset	u.mmap_a.offset
89#define mmap_len	u.mmap_a.len
90#define mmap_prot	u.mmap_a.prot
91		struct mmap_args {
92			u_int64_t	offset;
93			u_int64_t	len;
94			int32_t		prot;
95	} mmap_a;
96#define open_flags	u.open_a.flags
97#define open_mode	u.open_a.mode
98		struct open_args {
99			int32_t		flags;
100			int32_t		mode;
101		} open_a;
102	} u;
103
104}
105