📄 iozone.c
字号:
#define READER_MASK (1 << READER_TEST)#define RANDOM_RW_MASK (1 << RANDOM_RW_TEST)#define RANDOM_MIX_MASK (1 << RANDOM_MIX_TEST)#define REVERSE_MASK (1 << REVERSE_TEST)#define REWRITE_REC_MASK (1 << REWRITE_REC_TEST)#define STRIDE_READ_MASK (1 << STRIDE_READ_TEST)#define FWRITER_MASK (1 << FWRITER_TEST)#define FREADER_MASK (1 << FREADER_TEST)#ifdef HAVE_PREAD#define PWRITER_MASK (1 << PWRITER_TEST)#define PREADER_MASK (1 << PREADER_TEST)#endif /* HAVE_PREAD */#ifdef HAVE_PREADV#define PWRITEV_MASK (1 << PWRITEV_TEST)#define PREADV_MASK (1 << PREADV_TEST)#endif /* HAVE_PREADV *//* * child_stat->flag values and transitions *//* Parent initializes children to HOLD */#define CHILD_STATE_HOLD 0 /* Child tells master when it's READY */#define CHILD_STATE_READY 1 /* Parent tells child to BEGIN */#define CHILD_STATE_BEGIN 2 /* Child tells parent that it's DONE */#define CHILD_STATE_DONE 3 /******************************************************************//* *//* FUNCTION DECLARATIONS *//* *//******************************************************************/char *initfile();void mmap_end();void alloc_pbuf();void auto_test(); /* perform automatic test series */void show_help(); /* show development help */static double time_so_far(); /* time since start of program */#ifdef unixstatic double utime_so_far(); /* user time */static double stime_so_far(); /* system time */static double clk_tck(); /* Get clocks/tick */static double cputime_so_far();#else#define cputime_so_far() time_so_far()#endifstatic double time_so_far1(); /* time since start of program */void get_resolution();void get_rusage_resolution();void signal_handler(); /* clean up if user interrupts us */void begin(); /* The main worker in the app */void fetchit(); /* Prime on chip cache */void purgeit(); /* Purge on chip cache */void throughput_test(); /* Multi process throughput */void multi_throughput_test(); /* Multi process throughput */void prepage(); /* Pre-fault user buffer */void get_date();int get_pattern(); /* Set pattern based on version */#ifdef HAVE_ANSIC_Cfloat do_compute(float); /* compute cycle simulation */#elsefloat do_compute(); /* compute cycle simulation */#endifvoid write_perf_test(); /* write/rewrite test */void fwrite_perf_test(); /* fwrite/refwrite test */void fread_perf_test(); /* fread/refread test */void read_perf_test(); /* read/reread test */void mix_perf_test(); /* read/reread test */void random_perf_test(); /* random read/write test */void reverse_perf_test(); /* reverse read test */void rewriterec_perf_test(); /* rewrite record test */void read_stride_perf_test(); /* read with stride test */#ifdef HAVE_PREADvoid pread_perf_test(); /* pread/re-pread test */void pwrite_perf_test(); /* pwrite/re-pwrite test */#endif /* HAVE_PREAD */#ifdef HAVE_PREADVvoid preadv_perf_test(); /* preadv/re-preadv test */void pwritev_perf_test(); /* pwritev/re-pwritev test */#endif /* HAVE_PREADV */void store_dvalue(); /* Store doubles array */void dump_excel();void dump_throughput();int sp_start_child_send();int sp_start_master_listen();#ifdef HAVE_ANSIC_C#if defined (HAVE_PREAD) && defined(_LARGEFILE64_SOURCE)ssize_t pwrite64(); ssize_t pread64(); #endif#if !defined(linux)char *getenv();char *inet_ntoa();int system();#endifvoid my_nap();int thread_exit();#ifdef ASYNC_IOsize_t async_write();void async_release();int async_read();int async_read_no_copy();size_t async_write_no_copy();void end_async();void async_init();#elsesize_t async_write();size_t async_write_no_copy();void async_release();#endifvoid do_float();int create_xls();void close_xls();void do_label();int mylockf(int, int, int);int mylockr(int,int, int, off64_t, off64_t);int rand(void);void srand(unsigned int);int get_client_info(void);void exit(int);void find_remote_shell(char *);void find_external_mon(char *,char *);void start_monitor(char *);void stop_monitor(char *);void takeoff_cache();void del_cache();void fill_area(long long *, long long *, long long);void fill_buffer(char *,long long ,long long ,char, long long );void store_value(off64_t);void store_times(double, double);static double cpu_util(double, double);void dump_cputimes(void);void purge_buffer_cache(void);char *alloc_mem(long long,int);void *(thread_rwrite_test)(void *);void *(thread_write_test)(void *);void *(thread_read_test)(void*);#ifdef HAVE_PREADvoid *(thread_pread_test)(void*);void *(thread_pwrite_test)(void*);#endifvoid *(thread_cleanup_test)(void*);void *(thread_cleanup_quick)(void*);void *(thread_ranread_test)(void *);void *(thread_mix_test)(void *);void *(thread_ranwrite_test)(void *);void *(thread_rread_test)(void *);void *(thread_reverse_read_test)(void *);void *(thread_stride_read_test)(void *);void *(thread_set_base)(void *);void *(thread_join)(long long, void *);void disrupt(int);#if defined(Windows)void disruptw(HANDLE);#endiflong long get_traj(FILE *, long long *, float *, long);void create_temp(off64_t, long long );FILE *open_w_traj(void);FILE *open_r_traj(void);void traj_vers(void);void r_traj_size(void);long long w_traj_size(void);void init_file_sizes();off64_t get_next_file_size(off64_t);void add_file_size(off64_t);void init_file_sizes( off64_t, off64_t);off64_t get_next_record_size(off64_t);void add_record_size(off64_t);void init_record_sizes( off64_t, off64_t);void del_record_sizes( void );void do_speed_check(int);#elsevoid do_speed_check();#if !defined(linux)char *getenv();char *inet_ntoa();int system();#endifvoid my_nap();int thread_exit();void close_xls();void do_label();int create_xls();void do_float();#ifdef ASYNC_IOvoid async_release();size_t async_write();size_t async_write_no_copy();int async_read();int async_read_no_copy();#endifint mylockf();int mylockr();int rand();void srand();int get_client_info();void exit();void find_remote_shell();void traj_vers();void r_traj_size();long long w_traj_size();FILE *open_w_traj();FILE *open_r_traj();void create_temp();void fill_buffer();char *alloc_mem();void *(thread_rwrite_test)();void *(thread_write_test)();void *(thread_read_test)();void *(thread_cleanup_test)();void *(thread_ranread_test)();void *(thread_mix_test)();void *(thread_ranwrite_test)();void *(thread_rread_test)();void *(thread_reverse_read_test)();void *(thread_stride_read_test)();void *(thread_set_base)();void *(thread_join)();void disrupt();long long get_traj();void init_file_sizes();off64_t get_next_file_size();void add_file_size();void init_record_sizes();off64_t get_next_record_size();void add_record_size();void dump_cputimes();static double cpu_util();void del_record_sizes();#endif#ifdef _LARGEFILE64_SOURCE#define I_LSEEK(x,y,z) lseek64(x,(off64_t)(y),z)#define I_OPEN(x,y,z) open64(x,(int)(y),(int)(z))#define I_CREAT(x,y) creat64(x,(int)(y))#define I_FOPEN(x,y) fopen64(x,y)#ifdef HAVE_PREAD#define I_PREAD(a,b,c,d) pread64(a,b,(size_t)(c),(off64_t)(d))#define I_PWRITE(a,b,c,d) pwrite64(a,b,(size_t)(c),(off64_t)(d))#endif#define I_MMAP(a,b,c,d,e,f) mmap64((void *)(a),(size_t)(b),(int)(c),(int)(d),(int)(e),(off64_t)(f))#else#define I_LSEEK(x,y,z) lseek(x,(off_t)(y),z)#define I_OPEN(x,y,z) open(x,(int)(y),(int)(z))#define I_CREAT(x,y) creat(x,(int)(y))#define I_FOPEN(x,y) fopen(x,y)#ifdef HAVE_PREAD#define I_PREAD(a,b,c,d) pread(a,b,(size_t)(c),(off_t)(d))#define I_PWRITE(a,b,c,d) pwrite(a,b,(size_t)(c),(off_t)(d))#endif#define I_MMAP(a,b,c,d,e,f) mmap((void *)(a),(size_t)(b),(int)(c),(int)(d),(int)(e),(off_t)(f))#endif/************************************************************************//* The list of tests to be called. *//************************************************************************/void (*func[])() = { write_perf_test, read_perf_test, random_perf_test, reverse_perf_test, rewriterec_perf_test, read_stride_perf_test, fwrite_perf_test, fread_perf_test, mix_perf_test #ifdef HAVE_PREAD , pwrite_perf_test, pread_perf_test#ifdef HAVE_PREADV , pwritev_perf_test, preadv_perf_test#endif /* HAVE_PREADV */#endif /* HAVE_PREAD */ };/*char *test_output[] = {" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " \n" };*/char *test_output[] = {" ", " ", " ", " ", " ", " ", " ", " ", "", " ", " ", " \n" };long long test_soutput[] = {2,2,2,1,1,1,2,2,2,2,2,2};/******************************************************************//* *//* GLOBAL VARIABLES *//* *//*******************************************************************//* * Set the size of the shared memory segment for the children * to put their results. */#define SHMSIZE ((( sizeof(struct child_stats) * MAXSTREAMS) )+4096 )/* * Pointer to the shared memory segment. */VOLATILE struct child_stats *shmaddr;double totaltime,total_time, temp_time ,total_kilos;off64_t report_array[MAX_X][MAX_Y];double report_darray[MAX_X][MAXSTREAMS];double time_res,cputime_res;long long throughput_array[MAX_X]; /* Filesize & record size are constants */short current_x, current_y;long long orig_size;long long max_x, max_y;unsigned long long goodkilos;off64_t kilobytes64 = (off64_t)KILOBYTES;long long goodrecl;off64_t offset = 0; /*offset for random I/O */off64_t offset64 = 0; /*offset for random I/O */off64_t filebytes64;off64_t r_range[100];off64_t s_range[100];int r_count,s_count;char *barray[MAXSTREAMS];char *haveshm;extern int optind;long long onetime, auto_mode, sfd, multi_buffer;int fd;int sp_msfd,sp_mrfd,sp_csfd,sp_crfd;int begin_proc,num_processors,ioz_processor_bind;long long res_prob,rec_prob;char silent,read_sync;char master_iozone, client_iozone,distributed;int bif_fd,s_count;int bif_row,bif_column;char aflag, Eflag, hflag, Rflag, rflag, sflag;char diag_v,sent_stop,dedup;char *dedup_ibuf;char *dedup_temp;char bif_flag;int rlocking;int share_file;char gflag,nflag;char yflag,qflag;#ifdef Windowschar *build_name = "Windows";#elsechar *build_name = NAME;#endifchar imon_start[256],imon_stop[256]; char trflag; char cpuutilflag;char seq_mix;long base_time;long long mint, maxt; long long w_traj_ops, r_traj_ops, w_traj_fsize,r_traj_fsize;long long r_traj_ops_completed,r_traj_bytes_completed;long long w_traj_ops_completed,w_traj_bytes_completed;int w_traj_items, r_traj_items;char fflag, Uflag,uflag,lflag,include_tflag; struct runtime runtimes [MAX_X] [MAX_Y]; /* in parallel with report_array[][] */long long include_test[50];long long include_mask;char RWONLYflag, NOCROSSflag; /*auto mode 2 - kcollins 8-21-96*/char mfflag;long long status, x, y, childids[MAXSTREAMS+1], myid, num_child;int pct_read,speed_code;#ifndef NO_THREADSpthread_t p_childids[MAXSTREAMS+1];#endifoff64_t next64;char wol_opened, rol_opened;FILE *wqfd,*rwqfd,*rqfd,*rrqfd;extern char *optarg;#ifndef __AIX__long long ret;#elseshort ret;#endifstruct size_entry { struct size_entry *next; off64_t size;};struct size_entry *size_list=0;struct size_entry *rec_size_list=0;off64_t maximum_file_size;off64_t minimum_file_size;char bif_filename [MAXNAMESIZE]; /* name of biff file */char filename [MAXNAMESIZE]; /* name of temporary file */char mountname [MAXNAMESIZE]; /* name of device */char dummyfile [MAXSTREAMS][MAXNAMESIZE]; /* name of dummy file */char dummyfile1 [MAXNAMESIZE]; /* name of dummy file */char *filearray[MAXSTREAMS]; /* array of file names */char tfile[] = "iozone";char *buffer,*buffer1, *mbuffer,*mainbuffer;FILE *pi,*r_traj_fd,*w_traj_fd;VOLATILE char *pbuffer;char *default_filename="iozone.tmp"; /*default name of temporary file*/VOLATILE char stoptime;char Cflag;char use_thread = 0;long long debug1=0; long long debug=0;unsigned long cache_size=CACHE_SIZE;unsigned long cache_line_size=CACHE_LINE_SIZE;long long *pstatus;off64_t min_file_size = KILOBYTES_START;off64_t max_file_size = KILOBYTES_END;long long min_rec_size = RECLEN_START;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -