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

📄 fileop.c

📁 硬盘速度测试 linux下 源码 c/c
💻 C
📖 第 1 页 / 共 3 页
字号:
	  for(j=0;j<x;j++)	  {	    sprintf(buf,"iozone_L1_%d_L2_%d",i,j);	    chdir(buf);	    dirbuf=opendir(".");	    if(dirbuf==0)	    {		printf("opendir failed\n");		exit(1);	    }	    stats[_STAT_READDIR].starttime=time_so_far();	    y=readdir(dirbuf);	    if(y == 0)	    {	      printf("readdir failed\n");	      exit(1);	    }	    stats[_STAT_READDIR].endtime=time_so_far();	    stats[_STAT_READDIR].speed=stats[_STAT_READDIR].endtime-stats[_STAT_READDIR].starttime;	      if(stats[_STAT_READDIR].speed < (double)0.0)		stats[_STAT_READDIR].speed=(double)0.0;	    stats[_STAT_READDIR].total_time+=stats[_STAT_READDIR].speed;	    stats[_STAT_READDIR].counter++;	    if(stats[_STAT_READDIR].speed < stats[_STAT_READDIR].best)		 stats[_STAT_READDIR].best=stats[_STAT_READDIR].speed;	    if(stats[_STAT_READDIR].speed > stats[_STAT_READDIR].worst)		 stats[_STAT_READDIR].worst=stats[_STAT_READDIR].speed;	    ret1=closedir(dirbuf);	    if(ret1 < 0)	    {	      printf("closedir failed\n");	      exit(1);	    }	    chdir("..");	  }	  chdir("..");	}}void file_link(int x){	int i,j,k,y;	char buf[100];	char bufn[100];	stats[_STAT_LINK].best=(double)999999.9;	stats[_STAT_LINK].worst=(double)0.0;	for(i=0;i<x;i++)	{	  sprintf(buf,"iozone_L1_%d",i);	  chdir(buf);	  for(j=0;j<x;j++)	  {	    sprintf(buf,"iozone_L1_%d_L2_%d",i,j);	    chdir(buf);	    for(k=0;k<x;k++)	    {	      sprintf(buf,"iozone_file_%d_%d_%d",i,j,k);	      sprintf(bufn,"iozone_file_%d_%d_%dL",i,j,k);	      stats[_STAT_LINK].starttime=time_so_far();	      y=link(buf,bufn);	      if(y < 0)	      {	        printf("Link failed\n");	        exit(1);	      }	      stats[_STAT_LINK].endtime=time_so_far();	      stats[_STAT_LINK].speed=stats[_STAT_LINK].endtime-stats[_STAT_LINK].starttime;	      if(stats[_STAT_LINK].speed < (double)0.0)		stats[_STAT_LINK].speed=(double)0.0;	      stats[_STAT_LINK].total_time+=stats[_STAT_LINK].speed;	      stats[_STAT_LINK].counter++;	      if(stats[_STAT_LINK].speed < stats[_STAT_LINK].best)		 stats[_STAT_LINK].best=stats[_STAT_LINK].speed;	      if(stats[_STAT_LINK].speed > stats[_STAT_LINK].worst)		 stats[_STAT_LINK].worst=stats[_STAT_LINK].speed;	    }	    chdir("..");	  }	  chdir("..");	}}void file_unlink(int x){	int i,j,k,y;	char buf[100];	char bufn[100];	stats[_STAT_UNLINK].best=(double)999999.9;	stats[_STAT_UNLINK].worst=(double)0.0;	for(i=0;i<x;i++)	{	  sprintf(buf,"iozone_L1_%d",i);	  chdir(buf);	  for(j=0;j<x;j++)	  {	    sprintf(buf,"iozone_L1_%d_L2_%d",i,j);	    chdir(buf);	    for(k=0;k<x;k++)	    {	      sprintf(buf,"iozone_file_%d_%d_%d",i,j,k);	      sprintf(bufn,"iozone_file_%d_%d_%dL",i,j,k);	      stats[_STAT_UNLINK].starttime=time_so_far();	      y=unlink(bufn);	      if(y < 0)	      {	        printf("Unlink failed\n");	        exit(1);	      }	      stats[_STAT_UNLINK].endtime=time_so_far();	      stats[_STAT_UNLINK].speed=stats[_STAT_UNLINK].endtime-stats[_STAT_UNLINK].starttime;	      if(stats[_STAT_UNLINK].speed < (double)0.0)		stats[_STAT_UNLINK].speed=(double)0.0;	      stats[_STAT_UNLINK].total_time+=stats[_STAT_UNLINK].speed;	      stats[_STAT_UNLINK].counter++;	      if(stats[_STAT_UNLINK].speed < stats[_STAT_UNLINK].best)		 stats[_STAT_UNLINK].best=stats[_STAT_UNLINK].speed;	      if(stats[_STAT_UNLINK].speed > stats[_STAT_UNLINK].worst)		 stats[_STAT_UNLINK].worst=stats[_STAT_UNLINK].speed;	    }	    chdir("..");	  }	  chdir("..");	}}voiddir_delete(int x){	int i,j;	char buf[100];	stats[_STAT_DIR_DELETE].best=(double)99999.9;	stats[_STAT_DIR_DELETE].worst=(double)0.00000000;	for(i=0;i<x;i++)	{	  sprintf(buf,"iozone_L1_%d",i);	  chdir(buf);	  for(j=0;j<x;j++)	  {	    sprintf(buf,"iozone_L1_%d_L2_%d",i,j);	    chdir(buf);	    chdir("..");	    sprintf(buf,"iozone_L1_%d_L2_%d",i,j);	    stats[_STAT_DIR_DELETE].starttime=time_so_far();	    rmdir(buf);	    stats[_STAT_DIR_DELETE].endtime=time_so_far();	    stats[_STAT_DIR_DELETE].speed=stats[_STAT_DIR_DELETE].endtime-stats[_STAT_DIR_DELETE].starttime;	      if(stats[_STAT_DIR_DELETE].speed < (double)0.0)		stats[_STAT_DIR_DELETE].speed=(double)0.0;	    stats[_STAT_DIR_DELETE].total_time+=stats[_STAT_DIR_DELETE].speed;	    stats[_STAT_DIR_DELETE].counter++;	    if(stats[_STAT_DIR_DELETE].speed < stats[_STAT_DIR_DELETE].best)		 stats[_STAT_DIR_DELETE].best=stats[_STAT_DIR_DELETE].speed;	    if(stats[_STAT_DIR_DELETE].speed > stats[_STAT_DIR_DELETE].worst)		 stats[_STAT_DIR_DELETE].worst=stats[_STAT_DIR_DELETE].speed;	  }	  chdir("..");	  sprintf(buf,"iozone_L1_%d",i);	  stats[_STAT_DIR_DELETE].starttime=time_so_far();	  rmdir(buf);	  stats[_STAT_DIR_DELETE].endtime=time_so_far();	  stats[_STAT_DIR_DELETE].speed=stats[_STAT_DIR_DELETE].endtime-stats[_STAT_DIR_DELETE].starttime;	  if(stats[_STAT_DIR_DELETE].speed < (double)0.0)		stats[_STAT_DIR_DELETE].speed=(double)0.0;	  stats[_STAT_DIR_DELETE].total_time+=stats[_STAT_DIR_DELETE].speed;	  stats[_STAT_DIR_DELETE].counter++;	  if(stats[_STAT_DIR_DELETE].speed < stats[_STAT_DIR_DELETE].best)		 stats[_STAT_DIR_DELETE].best=stats[_STAT_DIR_DELETE].speed;	  if(stats[_STAT_DIR_DELETE].speed > stats[_STAT_DIR_DELETE].worst)		 stats[_STAT_DIR_DELETE].worst=stats[_STAT_DIR_DELETE].speed;	}}voidfile_delete(int x){	int i,j,k;	char buf[100];	stats[_STAT_DELETE].best=(double)999999.9;	stats[_STAT_DELETE].worst=(double)0.0;	for(i=0;i<x;i++)	{	  sprintf(buf,"iozone_L1_%d",i);	  chdir(buf);	  for(j=0;j<x;j++)	  {	    sprintf(buf,"iozone_L1_%d_L2_%d",i,j);	    chdir(buf);	    for(k=0;k<x;k++)	    {	      sprintf(buf,"iozone_file_%d_%d_%d",i,j,k);	      stats[_STAT_DELETE].starttime=time_so_far();	      unlink(buf);	      stats[_STAT_DELETE].endtime=time_so_far();	      stats[_STAT_DELETE].speed=stats[_STAT_DELETE].endtime-stats[_STAT_DELETE].starttime;	      if(stats[_STAT_DELETE].speed < (double)0.0)		stats[_STAT_DELETE].speed=(double)0.0;	      stats[_STAT_DELETE].total_time+=stats[_STAT_DELETE].speed;	      stats[_STAT_DELETE].counter++;	      if(stats[_STAT_DELETE].speed < stats[_STAT_DELETE].best)		 stats[_STAT_DELETE].best=stats[_STAT_DELETE].speed;	      if(stats[_STAT_DELETE].speed > stats[_STAT_DELETE].worst)		 stats[_STAT_DELETE].worst=stats[_STAT_DELETE].speed;	    }	    chdir("..");	    sprintf(buf,"iozone_L1_%d_L2_%d",i,j);	    rmdir(buf);	  }	  chdir("..");	  sprintf(buf,"iozone_L1_%d",i);	  rmdir(buf);	}}void file_read(int x){	int i,j,k,y,fd;	char buf[100];	char value;	stats[_STAT_READ].best=(double)99999.9;	stats[_STAT_READ].worst=(double)0.00000000;	for(i=0;i<x;i++)	{	  sprintf(buf,"iozone_L1_%d",i);	  chdir(buf);	  for(j=0;j<x;j++)	  {	    sprintf(buf,"iozone_L1_%d_L2_%d",i,j);	    chdir(buf);	    for(k=0;k<x;k++)	    {	      sprintf(buf,"iozone_file_%d_%d_%d",i,j,k);	      value=(char)((i^j^k) &0xff);	      fd=open(buf,O_RDONLY);	      if(fd < 0)	      {	        printf("Open failed\n");	        exit(1);	      }	      stats[_STAT_READ].starttime=time_so_far();	      y=read(fd,mbuffer,sz);	      if(y < 0)	      {	        printf("Read failed\n");	        exit(1);	      }	      if(validate(mbuffer,sz, value) !=0)		printf("Error: Data Mis-compare\n");;	      stats[_STAT_READ].endtime=time_so_far();	      close(fd);	      stats[_STAT_READ].speed=stats[_STAT_READ].endtime-stats[_STAT_READ].starttime;	      if(stats[_STAT_READ].speed < (double)0.0)		stats[_STAT_READ].speed=(double)0.0;	      stats[_STAT_READ].total_time+=stats[_STAT_READ].speed;	      stats[_STAT_READ].counter++;	      if(stats[_STAT_READ].speed < stats[_STAT_READ].best)		 stats[_STAT_READ].best=stats[_STAT_READ].speed;	      if(stats[_STAT_READ].speed > stats[_STAT_READ].worst)		 stats[_STAT_READ].worst=stats[_STAT_READ].speed;	    }	    chdir("..");	  }	  chdir("..");	}}/************************************************************************//* Time measurement routines. Thanks to Iozone :-)			*//************************************************************************/#ifdef HAVE_ANSIC_Cstatic doubletime_so_far(void)#elsestatic doubletime_so_far()#endif{#ifdef Windows   LARGE_INTEGER freq,counter;   double wintime,bigcounter;	/* For Windows the time_of_day() is useless. It increments in 55 milli second   */	/* increments. By using the Win32api one can get access to the high performance */	/* measurement interfaces. With this one can get back into the 8 to 9  		*/	/* microsecond resolution.							*/        QueryPerformanceFrequency(&freq);        QueryPerformanceCounter(&counter);        bigcounter=(double)counter.HighPart *(double)0xffffffff +                (double)counter.LowPart;        wintime = (double)(bigcounter/(double)freq.LowPart);        return((double)wintime);#else#if defined (OSFV4) || defined(OSFV3) || defined(OSFV5)  struct timespec gp;  if (getclock(TIMEOFDAY, (struct timespec *) &gp) == -1)    perror("getclock");  return (( (double) (gp.tv_sec)) +    ( ((float)(gp.tv_nsec)) * 0.000000001 ));#else  struct timeval tp;  if (gettimeofday(&tp, (struct timezone *) NULL) == -1)    perror("gettimeofday");  return ((double) (tp.tv_sec)) +    (((double) tp.tv_usec) * 0.000001 );#endif#endif}voidsplash(void){	printf("\n");	printf("     --------------------------------------\n");	printf("     |              Fileop                | \n");	printf("     | %s          | \n",version);	printf("     |                                    | \n");	printf("     |                by                  |\n");	printf("     |                                    | \n");	printf("     |             Don Capps              |\n");	printf("     --------------------------------------\n");	printf("\n");}void usage(void){  splash();  printf("     fileop [-f X ]|[-l # -u #] [-s Y] [-t] [-v] [-e] [-b] -[w]\n");  printf("\n");  printf("     -f # Force factor. X^3 files will be created and removed.\n");  printf("     -l # Lower limit on the value of the Force factor.\n");  printf("     -u # Upper limit on the value of the Force factor.\n");  printf("     -s # Optional. Sets filesize for the create/write.\n");  printf("     -t # Verbose output option.\n");  printf("     -v # Version information.\n");  printf("     -e # Excel importable format.\n");  printf("     -b Output best case results\n");  printf("     -w Output worst case results\n");  printf("\n");  printf("     The structure of the file tree is:\n");  printf("     X number of Level 1 directorys, with X number of\n");  printf("     level 2 directories, with X number of files in each\n");  printf("     of the level 2 directories.\n");  printf("\n");  printf("     Example:  fileop 2\n");  printf("\n");  printf("             dir_1                        dir_2\n");  printf("            /     \\                      /     \\ \n");  printf("      sdir_1       sdir_2          sdir_1       sdir_2\n");  printf("      /     \\     /     \\          /     \\      /     \\ \n");  printf("   file_1 file_2 file_1 file_2   file_1 file_2 file_1 file_2\n");  printf("\n");  printf("   Each file will be created, and then Y bytes is written to the file.\n");  printf("\n");}voidclear_stats(){	int i;	for(i=0;i<_NUM_STATS;i++)		bzero((char *)&stats[i],sizeof(struct stat_struct));}intvalidate(char *buffer, int size, char value){	register int i;	register char *cp;	register int size1;	register char v1;	v1=value;	cp = buffer;	size1=size;	for(i=0;i<size;i++)	{		if(*cp++ != v1)			return(1);	}	return(0);}

⌨️ 快捷键说明

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