Home | History | Annotate | only in /system/extras/ioshark
Up to higher level directory
NameDateSize
Android.mk21-Aug-20181.6K
collect-straces-ftraces.sh21-Aug-20186.5K
collect-straces.sh21-Aug-20182.7K
compile-only.sh21-Aug-20183.6K
compile_ioshark.c21-Aug-201814.9K
compile_ioshark.h21-Aug-20182.1K
compile_ioshark_subr.c21-Aug-20187.1K
convert_format.c21-Aug-20187.5K
dump_ioshark_filenames.c21-Aug-20182.4K
ioshark.h21-Aug-20183K
ioshark_bench.c21-Aug-201821.7K
ioshark_bench.h21-Aug-20183.7K
ioshark_bench_mmap.c21-Aug-20185.1K
ioshark_bench_subr.c21-Aug-201817.4K
monkey-strace+fstrace.tgz21-Aug-201829.4M
monkeystracebig.tgz21-Aug-201828.8M
monkeytracebig.tar.gz21-Aug-201818.9M
README21-Aug-20183.2K
wl.tar21-Aug-201836.9M

README

      1 IOshark is a repeatable application workload storage benchmark. You
      2 can find more documentation on IOshark at :
      3 https://docs.google.com/a/google.com/document/d/1Bhq7iNPVc_JzwRrkmZqcPjMvWgpHX0r3Ncq-ZsRNOBA/edit?usp=sharing
      4 
      5 The short summary of what IOshark is : IOshark has 2 components, one
      6 is a strace+ftrace compiler that takes straces and select ftraces fed
      7 into it and compiles this into bytecodes (stored in *.wl files). The
      8 compiler runs on a Linux host. The second component (which runs on the
      9 device) is the tester that takes as input the bytecode files (*.wl
     10 files) and executes them on the device.
     11 
     12 How to Run :
     13 ----------
     14 - First collect straces and compile these into bytecodes. The wrapper
     15 script provided (collect-straces.sh) collects straces, ships them to
     16 the host where the script runs, compiles and packages up the bytecode
     17 files into a wl.tar file.
     18 - Ship the wl.tar file and the iostark_bench binaries to the target
     19 device (on /data/local/tmp say). Explode the tarfile.
     20 - Run the tester. "ioshark_bench *.wl" runs the test with default
     21 options. 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
     25 seen in the original straces.
     26 -n <N> : Run for N iterations
     27 -t <N> : Limit to N threads. By default (without this option), IOshark
     28 will 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 
     34 FILE FORMAT :
     35 -----------
     36 
     37 Each IOshark workload file is composed of the following
     38 
     39 Header
     40 File State : Table of File Entries. Each entry describes a file
     41 File Op : Table of File Operations. One entry describes one operation
     42 
     43 Each of the above is described below :
     44 
     45 Note : Everything is in Big Endian byte order.
     46 
     47 Header {
     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 
     56 File State {
     57        u_int64_t	fileno;
     58        u_int64_t	size;
     59        u_int64_t 	global_filename_ix;
     60 }
     61 
     62 File 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