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

📄 iozone.c

📁 硬盘速度测试 linux下 源码 c/c
💻 C
📖 第 1 页 / 共 5 页
字号:
} VOLATILE *child_stat;/* * Used for cpu time statistics. */struct runtime {	float	walltime;	float	cputime;	float	cpuutil;};#ifdef __convex_spp#include <sys/cnx_ail.h>#endif#include <sys/socket.h>#include <netinet/in.h>#include <netdb.h>/*  * Messages the controlling process sends to children. * Internal representation that is arch specific. * This is used when using the network distributed mode. */struct client_command {	char c_host_name[100];	char c_client_name[100];	char c_working_dir[200];	char c_file_name[200];	char c_path_dir[200];	char c_execute_name[200];	char c_write_traj_filename[200];	char c_read_traj_filename[200];	int c_oflag;	int c_mfflag;	int c_unbuffered;	int c_noretest;	int c_read_sync;	int c_jflag;	int c_async_flag;	int c_k_flag;	int c_h_flag;	int c_mflag;	int c_pflag;	int c_stride_flag;	int c_verify;	int c_sverify;	int c_odsync;	int c_diag_v;	int c_dedup;	int c_Q_flag;	int c_L_flag;	int c_OPS_flag;	int c_mmapflag;	int c_mmapasflag;	int c_mmapnsflag;	int c_mmapssflag;	int c_no_copy_flag;	int c_include_close;	int c_include_flush;	int c_disrupt_flag;	int c_compute_flag;	int c_xflag;	int c_MS_flag;	int c_mmap_mix;	int c_Kplus_flag;	int c_stop_flag;	int c_w_traj_flag;	int c_r_traj_flag;	int c_direct_flag;	int c_cpuutilflag;	int c_seq_mix;	int c_client_number;	int c_command;	int c_testnum;	int c_no_unlink;	int c_file_lock;	int c_rec_lock;	int c_Kplus_readers;	int c_multiplier;	int c_share_file;	int c_pattern;	int c_version;	int c_base_time;	int c_num_child;	int c_pct_read;	int c_advise_op;	int c_advise_flag;	int c_restf;	long long c_stride;	long long c_rest_val;	long long c_delay;	long long c_purge;	long long c_fetchon;	long long c_numrecs64;	long long c_reclen;	long long c_child_flag;	long long c_delay_start;	long long c_depth;	float c_compute_time;};	/* * All data in this is in string format for portability in a  * hetrogeneous environment. * * Messages that the master will send to the clients * over the socket. This provides neutral format * so that heterogeneous clusters will work. * This is used when using the network distributed mode. * WARNING !!! This data structure MUST not be bigger * than 1448 bytes or fragmentation will kick your butt. */struct client_neutral_command {	char c_host_name[40];	char c_client_name[100];	char c_working_dir[100];	char c_file_name[100];	char c_path_dir[100];	char c_execute_name[100];	char c_write_traj_filename[100];	char c_read_traj_filename[100];	char c_oflag[2];	char c_mfflag[2];	char c_unbuffered[2];	char c_noretest[2];	char c_read_sync[2];	char c_jflag[2];	char c_async_flag[2];	char c_k_flag[2];	char c_h_flag[2];	char c_mflag[2];	char c_pflag[2];	char c_stride_flag[2];	char c_verify[2];	char c_sverify[2];	char c_odsync[2];	char c_diag_v[2];	char c_dedup[2];	char c_Q_flag[2];	char c_L_flag[2];	char c_OPS_flag[2];	char c_mmapflag[2];	char c_mmapasflag[2];	char c_mmapnsflag[2];	char c_mmapssflag[2];	char c_no_copy_flag[2];	char c_include_close[2];	char c_include_flush[2];	char c_disrupt_flag[2];	char c_compute_flag[2];	char c_stop_flag[2];	char c_xflag[2];	char c_MS_flag[2];	char c_mmap_mix[2];	char c_Kplus_flag[2];	char c_w_traj_flag[2];		/* small int */	char c_r_traj_flag[2];		/* small int */	char c_direct_flag[2]; 		/* small int */	char c_cpuutilflag[2]; 		/* small int */	char c_seq_mix[2]; 		/* small int */	char c_stride[10]; 		/* small long long */	char c_rest_val[10]; 		/* small long long */	char c_purge[10]; 		/* very small long long */	char c_fetchon[10]; 		/* very small long long */	char c_multiplier[10]; 		/* small int */	char c_share_file[10];		/* small int */	char c_file_lock[10]; 		/* small int */	char c_rec_lock[10]; 		/* small int */	char c_Kplus_readers[10];	/* small int */	char c_client_number[20]; 	/* int */	char c_command[20]; 		/* int */	char c_testnum[20]; 		/* int */	char c_no_unlink[20]; 		/* int */	char c_pattern[20]; 		/* int */	char c_version[20]; 		/* int */	char c_base_time[20]; 		/* int */	char c_num_child[20]; 		/* int */	char c_pct_read[6]; 		/* small int */	char c_advise_op[4]; 		/* small int */	char c_advise_flag[4]; 		/* small int */	char c_restf[4]; 		/* small int */	char c_depth[20]; 		/* small long long */	char c_child_flag[40]; 		/* small long long */	char c_delay[80]; 		/* long long */	char c_numrecs64[80]; 		/* long long */	char c_reclen[80]; 		/* long long */	char c_delay_start[80]; 	/* long long */	char c_compute_time[80]; 	/* float */};	/*  * Messages the clients will send to the master. * Internal representation on each client and the master. * This is used when using the network distributed mode. */struct master_command {	char m_host_name[100];	char m_client_name[100];	char m_stop_flag; 	int m_client_number;	int m_child_port;	int m_child_async_port;	int m_command;	int m_testnum;	int m_version;	float m_throughput;	float m_cputime;	float m_walltime;	float m_actual;	long long m_child_flag;};	/* * Messages that the clients will send to the master * over the socket. This provides neutral format * so that heterogeneous clusters will work. * This is used when using the network distributed mode. */struct master_neutral_command {	char m_host_name[100];	char m_client_name[100];	char m_client_number[20];	/* int */	char m_stop_flag[4];		/* char +space */	char m_child_port[20];		/* int */	char m_child_async_port[20];	/* int */	char m_command[20];		/* int */	char m_testnum[20];		/* int */	char m_version[20];		/* int */	char m_throughput[80];		/* float */	char m_cputime[80];		/* float */	char m_walltime[80];		/* float */	char m_actual[80];		/* float */	char m_child_flag[80];		/* long long */};	/* * Possible values for the commands sent to the master */#define R_CHILD_JOIN        1#define R_STAT_DATA         2#define R_FLAG_DATA         3/* * Possible values for the master's commands sent to a client * * The R_FLAG_DATA is also used by the master to tell the  * client to update its flags. */#define R_JOIN_ACK        4#define R_STOP_FLAG       5#define R_TERMINATE       6#define R_DEATH           7/* These are the defaults for the processor. They can be  * over written by the command line options. */#define CACHE_LINE_SIZE 32#define CACHE_SIZE ( 1024 * 1024 )#define MEG (1024 * 1024)/* * For stride testing use a prime number to avoid stripe * wrap hitting the same spindle. */#define STRIDE 17/************************************************************************//*									*//*    DEFINED CONSTANTS							*//*									*//* Never add a comment to the end of a #define. Some compilers will     *//* choke and fail the compile.						*//************************************************************************//* * Size of buffer for capturing the machine's name. */#define IBUFSIZE 100/* * How many I/Os before a non-uniform access. */#define DISRUPT 100/* * Set the crossover size. This is where the small transfers * are skipped to save time. There is an option to  * disable the skipping. */#define LARGE_REC 65536/* Default number of kilobytes in file */#define KILOBYTES 512 			/* Default number of bytes in a record */#define RECLEN 1024			/* Default size of file in bytes*/#define FILESIZE (KILOBYTES*1024)	/* Default number of records */#define NUMRECS FILESIZE/RECLEN		#ifdef __bsdi__/* At 8 Meg switch to large records */#define CROSSOVER (8*1024)		/*maximum buffer size*/#define MAXBUFFERSIZE (8*1024*1024)		#else/* At 16 Meg switch to large records */#define CROSSOVER (16*1024)		/* Maximum buffer size*/#define MAXBUFFERSIZE (16*1024*1024)		#endif/* Maximum number of children. Threads/procs/clients */#define	MAXSTREAMS	256		/* Minimum buffer size */#define MINBUFFERSIZE 128/* If things ran way too fast */#define TOOFAST 10/* Set the maximum number of types of tests */#define MAXTESTS 10/* Default fill pattern for verification */#define PATTERN get_pattern();#define PATTERN1 0xBB/* Used for Excel internal tables */#define MAX_X 100			/* Used for Excel internal tables */#define MAX_Y 512			#define USAGE  "\tUsage: For usage information type iozone -h \n\n"/* Maximum number of characters in filename */#define MAXNAMESIZE 1000                /* * Define the typical output that the user will see on their * screen. */#ifdef NO_PRINT_LLD#ifdef HAVE_PREAD#include <sys/times.h>#if defined(HAVE_PREAD) && defined(HAVE_PREADV)#define CONTROL_STRING1 "%16ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%9ld%9ld%8ld%10ld%9ld%10ld%9ld%10ld%10ld%9ld\n"#define CONTROL_STRING2 "%16s%8s%8s%8s%8s%10s%8s%8s%8s%8s%8s%9s%9s%8s%9s%8s%9s%7s%10s%10s%10s%9s%9s\n"#define CONTROL_STRING3 "%16s%8s%8s%8s%8s%10s%8s%8s%8s%8s%8s%9s%9s%8s%9s\n"#define CONTROL_STRING4 "%16s%8s%8s%8s%8s%10s\n"#else#define CONTROL_STRING1 "%16ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%9ld%9ld%8ld%10ld%9ld%10ld\n"#define CONTROL_STRING2 "%16s%8s%8s%8s%8s%10s%8s%8s%8s%8s%8s%9s%9s%8s%9s%8s%9s%7s%10s\n"#define CONTROL_STRING3 "%16s%8s%8s%8s%8s%10s%8s%8s%8s%8s%8s\n"#define CONTROL_STRING4 "%16s%8s%8s%8s%8s%10s\n"#endif#else#define CONTROL_STRING1 "%16ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%9ld%9ld\n"#define CONTROL_STRING2 "%16s%8s%8s%8s%8s%10s%8s%8s%8s%8s%8s%9s%9s%8s%9s\n"#define CONTROL_STRING3 "%16s%8s%8s%8s%8s%10s%8s%8s%8s%8s%8s%9s%9s%8s%9s\n"#define CONTROL_STRING4 "%16s%8s%8s%8s%8s%10s\n"#endif#endif#ifndef NO_PRINT_LLD#ifdef HAVE_PREAD#include <sys/times.h>#if defined(HAVE_PREAD) && defined(HAVE_PREADV)#define CONTROL_STRING1 "%16lld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%9ld%9ld%8ld%10ld%9ld%10ld%9ld%10ld%10ld%9ld\n"#define CONTROL_STRING2 "%16s%8s%8s%8s%8s%10s%8s%8s%8s%8s%8s%9s%9s%8s%9s%8s%9s%7s%10s%10s%10s%9s%9s\n"#define CONTROL_STRING3 "%16s%8s%8s%8s%8s%10s%8s%8s%8s%8s%8s%9s%9s%8s%9s\n"#define CONTROL_STRING4 "%16s%8s%8s%8s%8s%10s\n"#else#define CONTROL_STRING1 "%16lld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%9ld%9ld%8ld%10ld%9ld%10ld\n"#define CONTROL_STRING2 "%16s%8s%8s%8s%8s%10s%8s%8s%8s%8s%8s%9s%9s%8s%9s%8s%9s%7s%10s\n"#define CONTROL_STRING3 "%16s%8s%8s%8s%8s%10s%8s%8s%8s%8s%8s%9s%9s%8s%9s\n"#define CONTROL_STRING4 "%16s%8s%8s%8s%8s%10s\n"#endif#else#define CONTROL_STRING1 "%16lld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%8ld%9ld%9ld\n"#define CONTROL_STRING2 "%16s%8s%8s%8s%8s%10s%8s%8s%8s%8s%8s%9s%9s%8s%9s\n"#define CONTROL_STRING3 "%16s%8s%8s%8s%8s%10s%8s%8s%8s%8s%8s%9s%9s%8s%9s\n"#define CONTROL_STRING4 "%16s%8s%8s%8s%8s%10s\n"#endif#endif/*     For 'auto mode', these defines determine the number of iterations    to perform for both the file size and the record length.*/ /* Start with 64 kbyte minimum file size by default */#define KILOBYTES_START       64/* Default maximum file size. This is 512 Mbytes */#define KILOBYTES_END (1024*512)/* Default starting record size */#define RECLEN_START  4096/* Default maximum record size */#define RECLEN_END    (MAXBUFFERSIZE)/* Multiplier for each itteration on file and record size */#define MULTIPLIER    2/* * Assign numeric values to each of the tests. */#define WRITER_TEST		0#define READER_TEST		1#define RANDOM_RW_TEST		2#define REVERSE_TEST		3#define REWRITE_REC_TEST	4#define STRIDE_READ_TEST	5#define FWRITER_TEST		6#define FREADER_TEST		7#define RANDOM_MIX_TEST		8#ifdef HAVE_PREAD#define PWRITER_TEST		9#define PREADER_TEST		10	#endif /* HAVE_PREAD */#ifdef HAVE_PREADV#define PWRITEV_TEST		11#define PREADV_TEST		12#endif /* HAVE_PREADV */#define WRITER_MASK		(1 << WRITER_TEST)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -