⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iozone.c

📁 硬盘速度测试 linux下 源码 c/c
💻 C
📖 第 1 页 / 共 5 页
字号:
#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 + -