|
Packit |
577717 |
/*
|
|
Packit |
577717 |
* Author: Don Capps
|
|
Packit |
577717 |
* 3/13/2006
|
|
Packit |
577717 |
*
|
|
Packit |
577717 |
* Author: Don Capps (capps@iozone.org)
|
|
Packit |
577717 |
* 7417 Crenshaw
|
|
Packit |
577717 |
* Plano, TX 75025
|
|
Packit |
577717 |
*
|
|
Packit |
577717 |
* Copyright 2006, 2007, 2008, 2009 Don Capps.
|
|
Packit |
577717 |
*
|
|
Packit |
577717 |
* License to freely use and distribute this software is hereby granted
|
|
Packit |
577717 |
* by the author, subject to the condition that this copyright notice
|
|
Packit |
577717 |
* remains intact. The author retains the exclusive right to publish
|
|
Packit |
577717 |
* derivative works based on this work, including, but not limited to,
|
|
Packit |
577717 |
* revised versions of this work",
|
|
Packit |
577717 |
*
|
|
Packit |
577717 |
*
|
|
Packit |
577717 |
fileop [-f X ]|[-l # -u #] [-s Y] [-e] [-b] [-w] [-d <dir>] [-t] [-v] [-h]
|
|
Packit |
577717 |
-f # Force factor. X^3 files will be created and removed.
|
|
Packit |
577717 |
-l # Lower limit on the value of the Force factor.
|
|
Packit |
577717 |
-u # Upper limit on the value of the Force factor.
|
|
Packit |
577717 |
-s # Optional. Sets filesize for the create/write. May use suffix 'K' or 'M'.
|
|
Packit |
577717 |
-e Excel importable format.
|
|
Packit |
577717 |
-b Output best case.
|
|
Packit |
577717 |
-w Output worst case.
|
|
Packit |
577717 |
-d <dir> Specify starting directory.
|
|
Packit |
577717 |
-U <dir> Mount point to remount between tests.
|
|
Packit |
577717 |
-t Verbose output option.
|
|
Packit |
577717 |
-v Version information.
|
|
Packit |
577717 |
-h Help text.
|
|
Packit |
577717 |
*
|
|
Packit |
577717 |
* X is a force factor. The total number of files will
|
|
Packit |
577717 |
* be X * X * X ( X ^ 3 )
|
|
Packit |
577717 |
* The structure of the file tree is:
|
|
Packit |
577717 |
* X number of Level 1 directories, with X number of
|
|
Packit |
577717 |
* level 2 directories, with X number of files in each
|
|
Packit |
577717 |
* of the level 2 directories.
|
|
Packit |
577717 |
*
|
|
Packit |
577717 |
* Example: fileop 2
|
|
Packit |
577717 |
*
|
|
Packit |
577717 |
* dir_1 dir_2
|
|
Packit |
577717 |
* / \ / \
|
|
Packit |
577717 |
* sdir_1 sdir_2 sdir_1 sdir_2
|
|
Packit |
577717 |
* / \ / \ / \ / \
|
|
Packit |
577717 |
* file_1 file_2 file_1 file_2 file_1 file_2 file_1 file_2
|
|
Packit |
577717 |
*
|
|
Packit |
577717 |
* Each file will be created, and then 1 byte is written to the file.
|
|
Packit |
577717 |
*
|
|
Packit |
577717 |
*/
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#include <sys/types.h>
|
|
Packit |
577717 |
#include <sys/stat.h>
|
|
Packit |
577717 |
#include <fcntl.h>
|
|
Packit |
577717 |
#include <sys/time.h>
|
|
Packit |
577717 |
#include <stdlib.h>
|
|
Packit |
577717 |
#include <stdio.h>
|
|
Packit |
577717 |
#include <signal.h>
|
|
Packit |
577717 |
#include <unistd.h>
|
|
Packit |
577717 |
#include <dirent.h>
|
|
Packit |
577717 |
#include <string.h>
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#include <limits.h>
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#if defined(Windows)
|
|
Packit |
577717 |
#include <Windows.h>
|
|
Packit |
577717 |
#endif
|
|
Packit |
577717 |
#if !defined(PATH_MAX)
|
|
Packit |
577717 |
#define PATH_MAX 255
|
|
Packit |
577717 |
#endif
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#if defined(_SUA_)
|
|
Packit |
577717 |
extern char *optarg;
|
|
Packit |
577717 |
extern char *opterr;
|
|
Packit |
577717 |
int fsync();
|
|
Packit |
577717 |
int getopt();
|
|
Packit |
577717 |
#endif
|
|
Packit |
577717 |
int junk, *junkp;
|
|
Packit |
577717 |
int x,excel;
|
|
Packit |
577717 |
int verbose = 0;
|
|
Packit |
577717 |
int sz = 1;
|
|
Packit |
577717 |
char *mbuffer;
|
|
Packit |
577717 |
int incr = 1;
|
|
Packit |
577717 |
#define _STAT_CREATE 0
|
|
Packit |
577717 |
#define _STAT_WRITE 1
|
|
Packit |
577717 |
#define _STAT_CLOSE 2
|
|
Packit |
577717 |
#define _STAT_LINK 3
|
|
Packit |
577717 |
#define _STAT_UNLINK 4
|
|
Packit |
577717 |
#define _STAT_DELETE 5
|
|
Packit |
577717 |
#define _STAT_STAT 6
|
|
Packit |
577717 |
#define _STAT_ACCESS 7
|
|
Packit |
577717 |
#define _STAT_CHMOD 8
|
|
Packit |
577717 |
#define _STAT_READDIR 9
|
|
Packit |
577717 |
#define _STAT_DIR_CREATE 10
|
|
Packit |
577717 |
#define _STAT_DIR_DELETE 11
|
|
Packit |
577717 |
#define _STAT_READ 12
|
|
Packit |
577717 |
#define _STAT_OPEN 13
|
|
Packit |
577717 |
#define _STAT_DIR_TRAVERSE 14
|
|
Packit |
577717 |
#define _NUM_STATS 15
|
|
Packit |
577717 |
struct stat_struct {
|
|
Packit |
577717 |
double starttime;
|
|
Packit |
577717 |
double endtime;
|
|
Packit |
577717 |
double speed;
|
|
Packit |
577717 |
double best;
|
|
Packit |
577717 |
double worst;
|
|
Packit |
577717 |
double dummy;
|
|
Packit |
577717 |
double total_time;
|
|
Packit |
577717 |
double dummy1;
|
|
Packit |
577717 |
long long counter;
|
|
Packit |
577717 |
} volatile stats[_NUM_STATS];
|
|
Packit |
577717 |
|
|
Packit |
577717 |
|
|
Packit |
577717 |
static double time_so_far(void);
|
|
Packit |
577717 |
void dir_create(int);
|
|
Packit |
577717 |
void dir_traverse(int);
|
|
Packit |
577717 |
void dir_delete(int);
|
|
Packit |
577717 |
void file_create(int);
|
|
Packit |
577717 |
void file_stat(int);
|
|
Packit |
577717 |
void file_access(int);
|
|
Packit |
577717 |
void file_chmod(int);
|
|
Packit |
577717 |
void file_readdir(int);
|
|
Packit |
577717 |
void file_delete(int);
|
|
Packit |
577717 |
void file_link(int);
|
|
Packit |
577717 |
void file_unlink(int);
|
|
Packit |
577717 |
void file_read(int);
|
|
Packit |
577717 |
void splash(void);
|
|
Packit |
577717 |
void usage(void);
|
|
Packit |
577717 |
void bzero();
|
|
Packit |
577717 |
void clear_stats();
|
|
Packit |
577717 |
int validate(char *, int , char );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define THISVERSION " $Revision$"
|
|
Packit |
577717 |
/*#define NULL 0*/
|
|
Packit |
577717 |
|
|
Packit |
577717 |
char version[]=THISVERSION;
|
|
Packit |
577717 |
char thedir[PATH_MAX]="."; /* Default is to use the current directory */
|
|
Packit |
577717 |
const char *mountname=NULL; /* Default is not to unmount anything between the tests */
|
|
Packit |
577717 |
|
|
Packit |
577717 |
int cret;
|
|
Packit |
577717 |
int lower, upper,range;
|
|
Packit |
577717 |
int i;
|
|
Packit |
577717 |
int best, worst;
|
|
Packit |
577717 |
int dirlen;
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/************************************************************************/
|
|
Packit |
577717 |
/* Routine to purge the buffer cache by unmounting drive. */
|
|
Packit |
577717 |
/************************************************************************/
|
|
Packit |
577717 |
void purge_buffer_cache()
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
if (!mountname)
|
|
Packit |
577717 |
return;
|
|
Packit |
577717 |
|
|
Packit |
577717 |
char cwd[PATH_MAX];
|
|
Packit |
577717 |
char command[1024];
|
|
Packit |
577717 |
int ret,i;
|
|
Packit |
577717 |
|
|
Packit |
577717 |
junkp=(int *)getcwd(cwd, sizeof(cwd));
|
|
Packit |
577717 |
junk=chdir("/");
|
|
Packit |
577717 |
strcpy(command,"umount ");
|
|
Packit |
577717 |
strcat(command, mountname);
|
|
Packit |
577717 |
/*
|
|
Packit |
577717 |
umount might fail if the device is still busy, so
|
|
Packit |
577717 |
retry unmounting several times with increasing delays
|
|
Packit |
577717 |
*/
|
|
Packit |
577717 |
for (i = 1; i < 10; ++i) {
|
|
Packit |
577717 |
ret = system(command);
|
|
Packit |
577717 |
if (ret == 0)
|
|
Packit |
577717 |
break;
|
|
Packit |
577717 |
sleep(i); /* seconds */
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
strcpy(command,"mount ");
|
|
Packit |
577717 |
strcat(command, mountname);
|
|
Packit |
577717 |
junk=system(command);
|
|
Packit |
577717 |
junk=chdir(cwd);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
int main(int argc, char **argv)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
if(argc == 1)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
usage();
|
|
Packit |
577717 |
exit(1);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
while((cret = getopt(argc,argv,"hbwetvf:s:l:u:d:U:i: ")) != EOF){
|
|
Packit |
577717 |
switch(cret){
|
|
Packit |
577717 |
case 'h':
|
|
Packit |
577717 |
usage();
|
|
Packit |
577717 |
exit(0);
|
|
Packit |
577717 |
break;
|
|
Packit |
577717 |
case 'd' :
|
|
Packit |
577717 |
dirlen=strlen(optarg);
|
|
Packit |
577717 |
if (optarg[dirlen-1]=='/')
|
|
Packit |
577717 |
--dirlen;
|
|
Packit |
577717 |
strncpy(thedir, optarg, dirlen);
|
|
Packit |
577717 |
thedir[dirlen] = 0;
|
|
Packit |
577717 |
break;
|
|
Packit |
577717 |
case 'U':
|
|
Packit |
577717 |
mountname = optarg;
|
|
Packit |
577717 |
break;
|
|
Packit |
577717 |
case 'i': /* Increment force by */
|
|
Packit |
577717 |
incr=atoi(optarg);
|
|
Packit |
577717 |
if(incr < 0)
|
|
Packit |
577717 |
incr=1;
|
|
Packit |
577717 |
break;
|
|
Packit |
577717 |
case 'f': /* Force factor */
|
|
Packit |
577717 |
x=atoi(optarg);
|
|
Packit |
577717 |
if(x < 0)
|
|
Packit |
577717 |
x=1;
|
|
Packit |
577717 |
break;
|
|
Packit |
577717 |
case 's': /* Size of files */
|
|
Packit |
577717 |
sz=atoi(optarg);
|
|
Packit |
577717 |
if(optarg[strlen(optarg)-1]=='k' ||
|
|
Packit |
577717 |
optarg[strlen(optarg)-1]=='K'){
|
|
Packit |
577717 |
sz = (1024 * atoi(optarg));
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
if(optarg[strlen(optarg)-1]=='m' ||
|
|
Packit |
577717 |
optarg[strlen(optarg)-1]=='M'){
|
|
Packit |
577717 |
sz = (1024 * 1024 * atoi(optarg));
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
if(sz < 0)
|
|
Packit |
577717 |
sz=1;
|
|
Packit |
577717 |
break;
|
|
Packit |
577717 |
case 'l': /* lower force value */
|
|
Packit |
577717 |
lower=atoi(optarg);
|
|
Packit |
577717 |
range=1;
|
|
Packit |
577717 |
if(lower < 0)
|
|
Packit |
577717 |
lower=1;
|
|
Packit |
577717 |
break;
|
|
Packit |
577717 |
case 'v': /* version */
|
|
Packit |
577717 |
splash();
|
|
Packit |
577717 |
exit(0);
|
|
Packit |
577717 |
break;
|
|
Packit |
577717 |
case 'u': /* upper force value */
|
|
Packit |
577717 |
upper=atoi(optarg);
|
|
Packit |
577717 |
range=1;
|
|
Packit |
577717 |
if(upper < 0)
|
|
Packit |
577717 |
upper=1;
|
|
Packit |
577717 |
break;
|
|
Packit |
577717 |
case 't': /* verbose */
|
|
Packit |
577717 |
verbose=1;
|
|
Packit |
577717 |
break;
|
|
Packit |
577717 |
case 'e': /* Excel */
|
|
Packit |
577717 |
excel=1;
|
|
Packit |
577717 |
break;
|
|
Packit |
577717 |
case 'b': /* Best */
|
|
Packit |
577717 |
best=1;
|
|
Packit |
577717 |
break;
|
|
Packit |
577717 |
case 'w': /* Worst */
|
|
Packit |
577717 |
worst=1;
|
|
Packit |
577717 |
break;
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
mbuffer=(char *)malloc(sz);
|
|
Packit |
577717 |
memset(mbuffer,'a',sz);
|
|
Packit |
577717 |
if(!excel)
|
|
Packit |
577717 |
printf("\nFileop: Working in %s, File size is %d, Output is in Ops/sec. (A=Avg, B=Best, W=Worst)\n", thedir, sz);
|
|
Packit |
577717 |
if(!verbose)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
#ifdef Windows
|
|
Packit |
577717 |
printf(" . %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %10s\n",
|
|
Packit |
577717 |
"mkdir","chdir","rmdir","create","open","read","write","close","stat",
|
|
Packit |
577717 |
"access","chmod","readdir","delete"," Total_files");
|
|
Packit |
577717 |
#else
|
|
Packit |
577717 |
|
|
Packit |
577717 |
printf(" . %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %7s %10s\n",
|
|
Packit |
577717 |
"mkdir","chdir","rmdir","create","open", "read","write","close","stat",
|
|
Packit |
577717 |
"access","chmod","readdir","link ","unlink","delete",
|
|
Packit |
577717 |
" Total_files");
|
|
Packit |
577717 |
#endif
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
junk=chdir(thedir); /* change starting point */
|
|
Packit |
577717 |
if(x==0)
|
|
Packit |
577717 |
x=1;
|
|
Packit |
577717 |
if(range==0)
|
|
Packit |
577717 |
lower=upper=x;
|
|
Packit |
577717 |
for(i=lower;i<=upper;i+=incr)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
clear_stats();
|
|
Packit |
577717 |
x=i;
|
|
Packit |
577717 |
/*
|
|
Packit |
577717 |
* Dir Create test
|
|
Packit |
577717 |
*/
|
|
Packit |
577717 |
purge_buffer_cache();
|
|
Packit |
577717 |
dir_create(x);
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if(verbose)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("mkdir: Dirs = %9lld ",stats[_STAT_DIR_CREATE].counter);
|
|
Packit |
577717 |
printf("Total Time = %12.9f seconds\n", stats[_STAT_DIR_CREATE].total_time);
|
|
Packit |
577717 |
printf(" Avg mkdir(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].counter/stats[_STAT_DIR_CREATE].total_time,
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].total_time/stats[_STAT_DIR_CREATE].counter);
|
|
Packit |
577717 |
printf(" Best mkdir(s)/sec = %12.2f (%12.9f seconds/op)\n",1/stats[_STAT_DIR_CREATE].best,stats[_STAT_DIR_CREATE].best);
|
|
Packit |
577717 |
printf(" Worst mkdir(s)/sec = %12.2f (%12.9f seconds/op)\n\n",1/stats[_STAT_DIR_CREATE].worst,stats[_STAT_DIR_CREATE].worst);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/*
|
|
Packit |
577717 |
* Dir Traverse test
|
|
Packit |
577717 |
*/
|
|
Packit |
577717 |
purge_buffer_cache();
|
|
Packit |
577717 |
dir_traverse(x);
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if(verbose)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("chdir: Dirs = %9lld ",stats[_STAT_DIR_TRAVERSE].counter);
|
|
Packit |
577717 |
printf("Total Time = %12.9f seconds\n", stats[_STAT_DIR_TRAVERSE].total_time);
|
|
Packit |
577717 |
printf(" Avg chdir(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].counter/stats[_STAT_DIR_TRAVERSE].total_time,
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].total_time/stats[_STAT_DIR_TRAVERSE].counter);
|
|
Packit |
577717 |
printf(" Best chdir(s)/sec = %12.2f (%12.9f seconds/op)\n",1/stats[_STAT_DIR_TRAVERSE].best,stats[_STAT_DIR_TRAVERSE].best);
|
|
Packit |
577717 |
printf(" Worst chdir(s)/sec = %12.2f (%12.9f seconds/op)\n\n",1/stats[_STAT_DIR_TRAVERSE].worst,stats[_STAT_DIR_TRAVERSE].worst);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/*
|
|
Packit |
577717 |
* Dir delete test
|
|
Packit |
577717 |
*/
|
|
Packit |
577717 |
purge_buffer_cache();
|
|
Packit |
577717 |
dir_delete(x);
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if(verbose)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("rmdir: Dirs = %9lld ",stats[_STAT_DIR_DELETE].counter);
|
|
Packit |
577717 |
printf("Total Time = %12.9f seconds\n",stats[_STAT_DIR_DELETE].total_time);
|
|
Packit |
577717 |
printf(" Avg rmdir(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].counter/stats[_STAT_DIR_DELETE].total_time,
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].total_time/stats[_STAT_DIR_DELETE].counter);
|
|
Packit |
577717 |
printf(" Best rmdir(s)/sec = %12.2f (%12.9f seconds/op)\n",1/stats[_STAT_DIR_DELETE].best,stats[_STAT_DIR_DELETE].best);
|
|
Packit |
577717 |
printf(" Worst rmdir(s)/sec = %12.2f (%12.9f seconds/op)\n\n",1/stats[_STAT_DIR_DELETE].worst,stats[_STAT_DIR_DELETE].worst);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/*
|
|
Packit |
577717 |
* Create test
|
|
Packit |
577717 |
*/
|
|
Packit |
577717 |
purge_buffer_cache();
|
|
Packit |
577717 |
file_create(x);
|
|
Packit |
577717 |
if(verbose)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("create: Files = %9lld ",stats[_STAT_CREATE].counter);
|
|
Packit |
577717 |
printf("Total Time = %12.9f seconds\n", stats[_STAT_CREATE].total_time);
|
|
Packit |
577717 |
printf(" Avg create(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
stats[_STAT_CREATE].counter/stats[_STAT_CREATE].total_time,
|
|
Packit |
577717 |
stats[_STAT_CREATE].total_time/stats[_STAT_CREATE].counter);
|
|
Packit |
577717 |
printf(" Best create(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
1/stats[_STAT_CREATE].best,stats[_STAT_CREATE].best);
|
|
Packit |
577717 |
printf(" Worst create(s)/sec = %12.2f (%12.9f seconds/op)\n\n",
|
|
Packit |
577717 |
1/stats[_STAT_CREATE].worst,stats[_STAT_CREATE].worst);
|
|
Packit |
577717 |
printf("write: Files = %9lld ",stats[_STAT_WRITE].counter);
|
|
Packit |
577717 |
printf("Total Time = %12.9f seconds\n", stats[_STAT_WRITE].total_time);
|
|
Packit |
577717 |
printf(" Avg write(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
stats[_STAT_WRITE].counter/stats[_STAT_WRITE].total_time,
|
|
Packit |
577717 |
stats[_STAT_WRITE].total_time/stats[_STAT_WRITE].counter);
|
|
Packit |
577717 |
printf(" Best write(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
1/stats[_STAT_WRITE].best,stats[_STAT_WRITE].best);
|
|
Packit |
577717 |
printf(" Worst write(s)/sec = %12.2f (%12.9f seconds/op)\n\n",
|
|
Packit |
577717 |
1/stats[_STAT_WRITE].worst,stats[_STAT_WRITE].worst);
|
|
Packit |
577717 |
printf("close: Files = %9lld ",stats[_STAT_CLOSE].counter);
|
|
Packit |
577717 |
printf("Total Time = %12.9f seconds\n", stats[_STAT_CLOSE].total_time);
|
|
Packit |
577717 |
printf(" Avg close(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
stats[_STAT_CLOSE].counter/stats[_STAT_CLOSE].total_time,
|
|
Packit |
577717 |
stats[_STAT_CLOSE].total_time/stats[_STAT_CLOSE].counter);
|
|
Packit |
577717 |
printf(" Best close(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
1/stats[_STAT_CLOSE].best,stats[_STAT_CLOSE].best);
|
|
Packit |
577717 |
printf(" Worst close(s)/sec = %12.2f (%12.9f seconds/op)\n\n",
|
|
Packit |
577717 |
1/stats[_STAT_CLOSE].worst,stats[_STAT_CLOSE].worst);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/*
|
|
Packit |
577717 |
* Stat test
|
|
Packit |
577717 |
*/
|
|
Packit |
577717 |
purge_buffer_cache();
|
|
Packit |
577717 |
file_stat(x);
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if(verbose)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("stat: Files = %9lld ",stats[_STAT_STAT].counter);
|
|
Packit |
577717 |
printf("Total Time = %12.9f seconds\n", stats[_STAT_STAT].total_time);
|
|
Packit |
577717 |
printf(" Avg stat(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
stats[_STAT_STAT].counter/stats[_STAT_STAT].total_time,
|
|
Packit |
577717 |
stats[_STAT_STAT].total_time/stats[_STAT_STAT].counter);
|
|
Packit |
577717 |
printf(" Best stat(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
1/stats[_STAT_STAT].best,stats[_STAT_STAT].best);
|
|
Packit |
577717 |
printf(" Worst stat(s)/sec = %12.2f (%12.9f seconds/op)\n\n",
|
|
Packit |
577717 |
1/stats[_STAT_STAT].worst,stats[_STAT_STAT].worst);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
/*
|
|
Packit |
577717 |
* Read test
|
|
Packit |
577717 |
*/
|
|
Packit |
577717 |
purge_buffer_cache();
|
|
Packit |
577717 |
file_read(x);
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if(verbose)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("open: Files = %9lld ",stats[_STAT_OPEN].counter);
|
|
Packit |
577717 |
printf("Total Time = %12.9f seconds\n", stats[_STAT_OPEN].total_time);
|
|
Packit |
577717 |
printf(" Avg open(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
stats[_STAT_OPEN].counter/stats[_STAT_OPEN].total_time,
|
|
Packit |
577717 |
stats[_STAT_OPEN].total_time/stats[_STAT_OPEN].counter);
|
|
Packit |
577717 |
printf(" Best open(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
1/stats[_STAT_OPEN].best,stats[_STAT_OPEN].best);
|
|
Packit |
577717 |
printf(" Worst open(s)/sec = %12.2f (%12.9f seconds/op)\n\n",
|
|
Packit |
577717 |
1/stats[_STAT_OPEN].worst,stats[_STAT_OPEN].worst);
|
|
Packit |
577717 |
|
|
Packit |
577717 |
printf("read: Files = %9lld ",stats[_STAT_READ].counter);
|
|
Packit |
577717 |
printf("Total Time = %12.9f seconds\n", stats[_STAT_READ].total_time);
|
|
Packit |
577717 |
printf(" Avg read(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
stats[_STAT_READ].counter/stats[_STAT_READ].total_time,
|
|
Packit |
577717 |
stats[_STAT_READ].total_time/stats[_STAT_READ].counter);
|
|
Packit |
577717 |
printf(" Best read(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
1/stats[_STAT_READ].best,stats[_STAT_READ].best);
|
|
Packit |
577717 |
printf(" Worst read(s)/sec = %12.2f (%12.9f seconds/op)\n\n",
|
|
Packit |
577717 |
1/stats[_STAT_READ].worst,stats[_STAT_READ].worst);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/*
|
|
Packit |
577717 |
* Access test
|
|
Packit |
577717 |
*/
|
|
Packit |
577717 |
purge_buffer_cache();
|
|
Packit |
577717 |
file_access(x);
|
|
Packit |
577717 |
if(verbose)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("access: Files = %9lld ",stats[_STAT_ACCESS].counter);
|
|
Packit |
577717 |
printf("Total Time = %12.9f seconds\n", stats[_STAT_ACCESS].total_time);
|
|
Packit |
577717 |
printf(" Avg access(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
stats[_STAT_ACCESS].counter/stats[_STAT_ACCESS].total_time,
|
|
Packit |
577717 |
stats[_STAT_ACCESS].total_time/stats[_STAT_ACCESS].counter);
|
|
Packit |
577717 |
printf(" Best access(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
1/stats[_STAT_ACCESS].best,stats[_STAT_ACCESS].best);
|
|
Packit |
577717 |
printf(" Worst access(s)/sec = %12.2f (%12.9f seconds/op)\n\n",
|
|
Packit |
577717 |
1/stats[_STAT_ACCESS].worst,stats[_STAT_ACCESS].worst);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
/*
|
|
Packit |
577717 |
* Chmod test
|
|
Packit |
577717 |
*/
|
|
Packit |
577717 |
purge_buffer_cache();
|
|
Packit |
577717 |
file_chmod(x);
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if(verbose)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("chmod: Files = %9lld ",stats[_STAT_CHMOD].counter);
|
|
Packit |
577717 |
printf("Total Time = %12.9f seconds\n", stats[_STAT_CHMOD].total_time);
|
|
Packit |
577717 |
printf(" Avg chmod(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
stats[_STAT_CHMOD].counter/stats[_STAT_CHMOD].total_time,
|
|
Packit |
577717 |
stats[_STAT_CHMOD].total_time/stats[_STAT_CHMOD].counter);
|
|
Packit |
577717 |
printf(" Best chmod(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
1/stats[_STAT_CHMOD].best,stats[_STAT_CHMOD].best);
|
|
Packit |
577717 |
printf(" Worst chmod(s)/sec = %12.2f (%12.9f seconds/op)\n\n",
|
|
Packit |
577717 |
1/stats[_STAT_CHMOD].worst,stats[_STAT_CHMOD].worst);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
/*
|
|
Packit |
577717 |
* readdir test
|
|
Packit |
577717 |
*/
|
|
Packit |
577717 |
purge_buffer_cache();
|
|
Packit |
577717 |
file_readdir(x);
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if(verbose)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("readdir: Files = %9lld ",stats[_STAT_READDIR].counter);
|
|
Packit |
577717 |
printf("Total Time = %12.9f seconds\n", stats[_STAT_READDIR].total_time);
|
|
Packit |
577717 |
printf(" Avg readdir(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
stats[_STAT_READDIR].counter/stats[_STAT_READDIR].total_time,
|
|
Packit |
577717 |
stats[_STAT_READDIR].total_time/stats[_STAT_READDIR].counter);
|
|
Packit |
577717 |
printf(" Best readdir(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
1/stats[_STAT_READDIR].best,stats[_STAT_READDIR].best);
|
|
Packit |
577717 |
printf(" Worst readdir(s)/sec = %12.2f (%12.9f seconds/op)\n\n",
|
|
Packit |
577717 |
1/stats[_STAT_READDIR].worst,stats[_STAT_READDIR].worst);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
#if !defined(Windows)
|
|
Packit |
577717 |
/*
|
|
Packit |
577717 |
* link test
|
|
Packit |
577717 |
*/
|
|
Packit |
577717 |
purge_buffer_cache();
|
|
Packit |
577717 |
file_link(x);
|
|
Packit |
577717 |
if(verbose)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("link: Files = %9lld ",stats[_STAT_LINK].counter);
|
|
Packit |
577717 |
printf("Total Time = %12.9f seconds\n",stats[_STAT_LINK].total_time);
|
|
Packit |
577717 |
printf(" Avg link(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
stats[_STAT_LINK].counter/stats[_STAT_LINK].total_time,
|
|
Packit |
577717 |
stats[_STAT_LINK].total_time/stats[_STAT_LINK].counter);
|
|
Packit |
577717 |
printf(" Best link(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
1/stats[_STAT_LINK].best,stats[_STAT_LINK].best);
|
|
Packit |
577717 |
printf(" Worst link(s)/sec = %12.2f (%12.9f seconds/op)\n\n",
|
|
Packit |
577717 |
1/stats[_STAT_LINK].worst,stats[_STAT_LINK].worst);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
/*
|
|
Packit |
577717 |
* unlink test
|
|
Packit |
577717 |
*/
|
|
Packit |
577717 |
purge_buffer_cache();
|
|
Packit |
577717 |
file_unlink(x);
|
|
Packit |
577717 |
if(verbose)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("unlink: Files = %9lld ",stats[_STAT_UNLINK].counter);
|
|
Packit |
577717 |
printf("Total Time = %12.9f seconds\n", stats[_STAT_UNLINK].total_time);
|
|
Packit |
577717 |
printf(" Avg unlink(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
stats[_STAT_UNLINK].counter/stats[_STAT_UNLINK].total_time,
|
|
Packit |
577717 |
stats[_STAT_UNLINK].total_time/stats[_STAT_UNLINK].counter);
|
|
Packit |
577717 |
printf(" Best unlink(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
1/stats[_STAT_UNLINK].best,stats[_STAT_UNLINK].best);
|
|
Packit |
577717 |
printf(" Worst unlink(s)/sec = %12.2f (%12.9f seconds/op)\n\n",
|
|
Packit |
577717 |
1/stats[_STAT_UNLINK].worst,stats[_STAT_UNLINK].worst);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
#endif
|
|
Packit |
577717 |
/*
|
|
Packit |
577717 |
* Delete test
|
|
Packit |
577717 |
*/
|
|
Packit |
577717 |
purge_buffer_cache();
|
|
Packit |
577717 |
file_delete(x);
|
|
Packit |
577717 |
if(verbose)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("delete: Files = %9lld ",stats[_STAT_DELETE].counter);
|
|
Packit |
577717 |
printf("Total Time = %12.9f seconds\n", stats[_STAT_DELETE].total_time);
|
|
Packit |
577717 |
printf(" Avg delete(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
stats[_STAT_DELETE].counter/stats[_STAT_DELETE].total_time,
|
|
Packit |
577717 |
stats[_STAT_DELETE].total_time/stats[_STAT_DELETE].counter);
|
|
Packit |
577717 |
printf(" Best delete(s)/sec = %12.2f (%12.9f seconds/op)\n",
|
|
Packit |
577717 |
1/stats[_STAT_DELETE].best,stats[_STAT_DELETE].best);
|
|
Packit |
577717 |
printf(" Worst delete(s)/sec = %12.2f (%12.9f seconds/op)\n\n",
|
|
Packit |
577717 |
1/stats[_STAT_DELETE].worst,stats[_STAT_DELETE].worst);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
if(!verbose)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("%c %4d %7.0f ",'A',x,stats[_STAT_DIR_CREATE].counter/stats[_STAT_DIR_CREATE].total_time);
|
|
Packit |
577717 |
printf("%7.0f ",stats[_STAT_DIR_TRAVERSE].counter/stats[_STAT_DIR_TRAVERSE].total_time);
|
|
Packit |
577717 |
printf("%7.0f ",stats[_STAT_DIR_DELETE].counter/stats[_STAT_DIR_DELETE].total_time);
|
|
Packit |
577717 |
printf("%7.0f ",stats[_STAT_CREATE].counter/stats[_STAT_CREATE].total_time);
|
|
Packit |
577717 |
printf("%7.0f ",stats[_STAT_OPEN].counter/stats[_STAT_OPEN].total_time);
|
|
Packit |
577717 |
printf("%7.0f ",stats[_STAT_READ].counter/stats[_STAT_READ].total_time);
|
|
Packit |
577717 |
printf("%7.0f ",stats[_STAT_WRITE].counter/stats[_STAT_WRITE].total_time);
|
|
Packit |
577717 |
printf("%7.0f ",stats[_STAT_CLOSE].counter/stats[_STAT_CLOSE].total_time);
|
|
Packit |
577717 |
printf("%7.0f ",stats[_STAT_STAT].counter/stats[_STAT_STAT].total_time);
|
|
Packit |
577717 |
printf("%7.0f ",stats[_STAT_ACCESS].counter/stats[_STAT_ACCESS].total_time);
|
|
Packit |
577717 |
printf("%7.0f ",stats[_STAT_CHMOD].counter/stats[_STAT_CHMOD].total_time);
|
|
Packit |
577717 |
printf("%7.0f ",stats[_STAT_READDIR].counter/stats[_STAT_READDIR].total_time);
|
|
Packit |
577717 |
#ifndef Windows
|
|
Packit |
577717 |
printf("%7.0f ",stats[_STAT_LINK].counter/stats[_STAT_LINK].total_time);
|
|
Packit |
577717 |
printf("%7.0f ",stats[_STAT_UNLINK].counter/stats[_STAT_UNLINK].total_time);
|
|
Packit |
577717 |
#endif
|
|
Packit |
577717 |
printf("%7.0f ",stats[_STAT_DELETE].counter/stats[_STAT_DELETE].total_time);
|
|
Packit |
577717 |
printf("%10d ",x*x*x);
|
|
Packit |
577717 |
printf("\n");
|
|
Packit |
577717 |
fflush(stdout);
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if(best)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("%c %4d %7.0f ",'B',x, 1/stats[_STAT_DIR_CREATE].best);
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_DIR_TRAVERSE].best);
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_DIR_DELETE].best);
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_CREATE].best);
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_OPEN].best);
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_READ].best);
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_WRITE].best);
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_CLOSE].best);
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_STAT].best);
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_ACCESS].best);
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_CHMOD].best);
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_READDIR].best);
|
|
Packit |
577717 |
#ifndef Windows
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_LINK].best);
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_UNLINK].best);
|
|
Packit |
577717 |
#endif
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_DELETE].best);
|
|
Packit |
577717 |
printf("%10d ",x*x*x);
|
|
Packit |
577717 |
printf("\n");
|
|
Packit |
577717 |
fflush(stdout);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
if(worst)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("%c %4d %7.0f ",'W',x, 1/stats[_STAT_DIR_CREATE].worst);
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_DIR_TRAVERSE].worst);
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_DIR_DELETE].worst);
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_CREATE].worst);
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_OPEN].worst);
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_READ].worst);
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_WRITE].worst);
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_CLOSE].worst);
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_STAT].worst);
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_ACCESS].worst);
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_CHMOD].worst);
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_READDIR].worst);
|
|
Packit |
577717 |
#ifndef Windows
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_LINK].worst);
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_UNLINK].worst);
|
|
Packit |
577717 |
#endif
|
|
Packit |
577717 |
printf("%7.0f ",1/stats[_STAT_DELETE].worst);
|
|
Packit |
577717 |
printf("%10d ",x*x*x);
|
|
Packit |
577717 |
printf("\n");
|
|
Packit |
577717 |
fflush(stdout);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
return(0);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
void
|
|
Packit |
577717 |
dir_create(int x)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
int i,j,k;
|
|
Packit |
577717 |
int ret;
|
|
Packit |
577717 |
char buf[100];
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].best=(double)99999.9;
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].worst=(double)0.00000000;
|
|
Packit |
577717 |
for(i=0;i
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d",i);
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].starttime=time_so_far();
|
|
Packit |
577717 |
ret=mkdir(buf,0777);
|
|
Packit |
577717 |
if(ret < 0)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("Mkdir failed\n");
|
|
Packit |
577717 |
exit(1);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].endtime=time_so_far();
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].speed=stats[_STAT_DIR_CREATE].endtime-stats[_STAT_DIR_CREATE].starttime;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_CREATE].speed < (double)0.0)
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].speed=(double)0.0;
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].total_time+=stats[_STAT_DIR_CREATE].speed;
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].counter++;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_CREATE].speed < stats[_STAT_DIR_CREATE].best)
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].best=stats[_STAT_DIR_CREATE].speed;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_CREATE].speed > stats[_STAT_DIR_CREATE].worst)
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].worst=stats[_STAT_DIR_CREATE].speed;
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
for(j=0;j
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d_L2_%d",i,j);
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].starttime=time_so_far();
|
|
Packit |
577717 |
ret=mkdir(buf,0777);
|
|
Packit |
577717 |
if(ret < 0)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("Mkdir failed\n");
|
|
Packit |
577717 |
exit(1);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].endtime=time_so_far();
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].speed=stats[_STAT_DIR_CREATE].endtime-stats[_STAT_DIR_CREATE].starttime;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_CREATE].speed < (double)0.0)
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].speed=(double) 0.0;
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].total_time+=stats[_STAT_DIR_CREATE].speed;
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].counter++;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_CREATE].speed < stats[_STAT_DIR_CREATE].best)
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].best=stats[_STAT_DIR_CREATE].speed;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_CREATE].speed > stats[_STAT_DIR_CREATE].worst)
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].worst=stats[_STAT_DIR_CREATE].speed;
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
for(k=0;k
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_dir_%d_%d_%d",i,j,k);
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].starttime=time_so_far();
|
|
Packit |
577717 |
ret=mkdir(buf,0777);
|
|
Packit |
577717 |
if(ret < 0)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("Mkdir failed\n");
|
|
Packit |
577717 |
exit(1);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].endtime=time_so_far();
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].speed=stats[_STAT_DIR_CREATE].endtime-stats[_STAT_DIR_CREATE].starttime;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_CREATE].speed < (double)0.0)
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].speed=(double) 0.0;
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].total_time+=stats[_STAT_DIR_CREATE].speed;
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].counter++;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_CREATE].speed < stats[_STAT_DIR_CREATE].best)
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].best=stats[_STAT_DIR_CREATE].speed;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_CREATE].speed > stats[_STAT_DIR_CREATE].worst)
|
|
Packit |
577717 |
stats[_STAT_DIR_CREATE].worst=stats[_STAT_DIR_CREATE].speed;
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
void
|
|
Packit |
577717 |
dir_traverse(int x)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
int i,j,k;
|
|
Packit |
577717 |
char buf[100];
|
|
Packit |
577717 |
double time1, time2;
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].best=(double)99999.9;
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].worst=(double)0.00000000;
|
|
Packit |
577717 |
for(i=0;i
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d",i);
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].starttime=time_so_far();
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].endtime=time_so_far();
|
|
Packit |
577717 |
time1=stats[_STAT_DIR_TRAVERSE].endtime-stats[_STAT_DIR_TRAVERSE].starttime;
|
|
Packit |
577717 |
for(j=0;j
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d_L2_%d",i,j);
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].starttime=time_so_far();
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].endtime=time_so_far();
|
|
Packit |
577717 |
time2=stats[_STAT_DIR_TRAVERSE].endtime-stats[_STAT_DIR_TRAVERSE].starttime;
|
|
Packit |
577717 |
for(k=0;k
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_dir_%d_%d_%d",i,j,k);
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].starttime=time_so_far();
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].endtime=time_so_far();
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].speed=stats[_STAT_DIR_TRAVERSE].endtime-stats[_STAT_DIR_TRAVERSE].starttime;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_TRAVERSE].speed < (double)0.0)
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].speed=(double) 0.0;
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].total_time+=stats[_STAT_DIR_TRAVERSE].speed;
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].counter++;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_TRAVERSE].speed < stats[_STAT_DIR_TRAVERSE].best)
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].best=stats[_STAT_DIR_TRAVERSE].speed;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_TRAVERSE].speed > stats[_STAT_DIR_TRAVERSE].worst)
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].worst=stats[_STAT_DIR_TRAVERSE].speed;
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].starttime=time_so_far();
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].endtime=time_so_far();
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].speed=time2+stats[_STAT_DIR_TRAVERSE].endtime-stats[_STAT_DIR_TRAVERSE].starttime;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_TRAVERSE].speed < (double)0.0)
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].speed=(double) 0.0;
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].total_time+=stats[_STAT_DIR_TRAVERSE].speed;
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].counter++;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_TRAVERSE].speed < stats[_STAT_DIR_TRAVERSE].best)
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].best=stats[_STAT_DIR_TRAVERSE].speed;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_TRAVERSE].speed > stats[_STAT_DIR_TRAVERSE].worst)
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].worst=stats[_STAT_DIR_TRAVERSE].speed;
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].starttime=time_so_far();
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].endtime=time_so_far();
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].speed=time1+stats[_STAT_DIR_TRAVERSE].endtime-stats[_STAT_DIR_TRAVERSE].starttime;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_TRAVERSE].speed < (double)0.0)
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].speed=(double)0.0;
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].total_time+=stats[_STAT_DIR_TRAVERSE].speed;
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].counter++;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_TRAVERSE].speed < stats[_STAT_DIR_TRAVERSE].best)
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].best=stats[_STAT_DIR_TRAVERSE].speed;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_TRAVERSE].speed > stats[_STAT_DIR_TRAVERSE].worst)
|
|
Packit |
577717 |
stats[_STAT_DIR_TRAVERSE].worst=stats[_STAT_DIR_TRAVERSE].speed;
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
void
|
|
Packit |
577717 |
file_create(int x)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
int i,j,k;
|
|
Packit |
577717 |
int fd;
|
|
Packit |
577717 |
int ret;
|
|
Packit |
577717 |
char buf[100];
|
|
Packit |
577717 |
char value;
|
|
Packit |
577717 |
stats[_STAT_CREATE].best=(double)999999.9;
|
|
Packit |
577717 |
stats[_STAT_CREATE].worst=(double)0.0;
|
|
Packit |
577717 |
stats[_STAT_WRITE].best=(double)999999.9;
|
|
Packit |
577717 |
stats[_STAT_WRITE].worst=(double)0.0;
|
|
Packit |
577717 |
stats[_STAT_CLOSE].best=(double)999999.9;
|
|
Packit |
577717 |
stats[_STAT_CLOSE].worst=(double)0.0;
|
|
Packit |
577717 |
for(i=0;i
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d",i);
|
|
Packit |
577717 |
ret=mkdir(buf,0777);
|
|
Packit |
577717 |
if(ret < 0)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("Mkdir failed\n");
|
|
Packit |
577717 |
exit(1);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
for(j=0;j
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d_L2_%d",i,j);
|
|
Packit |
577717 |
ret=mkdir(buf,0777);
|
|
Packit |
577717 |
if(ret < 0)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("Mkdir failed\n");
|
|
Packit |
577717 |
exit(1);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
for(k=0;k
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_file_%d_%d_%d",i,j,k);
|
|
Packit |
577717 |
value=(char) ((i^j^k) & 0xff);
|
|
Packit |
577717 |
memset(mbuffer,value,sz);
|
|
Packit |
577717 |
stats[_STAT_CREATE].starttime=time_so_far();
|
|
Packit |
577717 |
fd=creat(buf,O_RDWR|0600);
|
|
Packit |
577717 |
if(fd < 0)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("Create failed\n");
|
|
Packit |
577717 |
exit(1);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
stats[_STAT_CREATE].endtime=time_so_far();
|
|
Packit |
577717 |
stats[_STAT_CREATE].speed=stats[_STAT_CREATE].endtime-stats[_STAT_CREATE].starttime;
|
|
Packit |
577717 |
if(stats[_STAT_CREATE].speed < (double)0.0)
|
|
Packit |
577717 |
stats[_STAT_CREATE].speed=(double)0.0;
|
|
Packit |
577717 |
stats[_STAT_CREATE].total_time+=stats[_STAT_CREATE].speed;
|
|
Packit |
577717 |
stats[_STAT_CREATE].counter++;
|
|
Packit |
577717 |
if(stats[_STAT_CREATE].speed < stats[_STAT_CREATE].best)
|
|
Packit |
577717 |
stats[_STAT_CREATE].best=stats[_STAT_CREATE].speed;
|
|
Packit |
577717 |
if(stats[_STAT_CREATE].speed > stats[_STAT_CREATE].worst)
|
|
Packit |
577717 |
stats[_STAT_CREATE].worst=stats[_STAT_CREATE].speed;
|
|
Packit |
577717 |
|
|
Packit |
577717 |
stats[_STAT_WRITE].starttime=time_so_far();
|
|
Packit |
577717 |
junk=write(fd,mbuffer,sz);
|
|
Packit |
577717 |
stats[_STAT_WRITE].endtime=time_so_far();
|
|
Packit |
577717 |
stats[_STAT_WRITE].counter++;
|
|
Packit |
577717 |
stats[_STAT_WRITE].speed=stats[_STAT_WRITE].endtime-stats[_STAT_WRITE].starttime;
|
|
Packit |
577717 |
if(stats[_STAT_WRITE].speed < (double)0.0)
|
|
Packit |
577717 |
stats[_STAT_WRITE].speed=(double)0.0;
|
|
Packit |
577717 |
stats[_STAT_WRITE].total_time+=stats[_STAT_WRITE].speed;
|
|
Packit |
577717 |
if(stats[_STAT_WRITE].speed < stats[_STAT_WRITE].best)
|
|
Packit |
577717 |
stats[_STAT_WRITE].best=stats[_STAT_WRITE].speed;
|
|
Packit |
577717 |
if(stats[_STAT_WRITE].speed > stats[_STAT_WRITE].worst)
|
|
Packit |
577717 |
stats[_STAT_WRITE].worst=stats[_STAT_WRITE].speed;
|
|
Packit |
577717 |
|
|
Packit |
577717 |
fsync(fd);
|
|
Packit |
577717 |
stats[_STAT_CLOSE].starttime=time_so_far();
|
|
Packit |
577717 |
close(fd);
|
|
Packit |
577717 |
stats[_STAT_CLOSE].endtime=time_so_far();
|
|
Packit |
577717 |
stats[_STAT_CLOSE].speed=stats[_STAT_CLOSE].endtime-stats[_STAT_CLOSE].starttime;
|
|
Packit |
577717 |
if(stats[_STAT_CLOSE].speed < (double)0.0)
|
|
Packit |
577717 |
stats[_STAT_CLOSE].speed=(double)0.0;
|
|
Packit |
577717 |
stats[_STAT_CLOSE].total_time+=stats[_STAT_CLOSE].speed;
|
|
Packit |
577717 |
stats[_STAT_CLOSE].counter++;
|
|
Packit |
577717 |
if(stats[_STAT_CLOSE].speed < stats[_STAT_CLOSE].best)
|
|
Packit |
577717 |
stats[_STAT_CLOSE].best=stats[_STAT_CLOSE].speed;
|
|
Packit |
577717 |
if(stats[_STAT_CLOSE].speed > stats[_STAT_CLOSE].worst)
|
|
Packit |
577717 |
stats[_STAT_CLOSE].worst=stats[_STAT_CLOSE].speed;
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
void
|
|
Packit |
577717 |
file_stat(int x)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
int i,j,k,y;
|
|
Packit |
577717 |
char buf[100];
|
|
Packit |
577717 |
struct stat mystat;
|
|
Packit |
577717 |
stats[_STAT_STAT].best=(double)99999.9;
|
|
Packit |
577717 |
stats[_STAT_STAT].worst=(double)0.00000000;
|
|
Packit |
577717 |
for(i=0;i
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d",i);
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
for(j=0;j
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d_L2_%d",i,j);
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
for(k=0;k
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_file_%d_%d_%d",i,j,k);
|
|
Packit |
577717 |
stats[_STAT_STAT].starttime=time_so_far();
|
|
Packit |
577717 |
y=stat(buf,&mystat);
|
|
Packit |
577717 |
if(y < 0)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("Stat failed\n");
|
|
Packit |
577717 |
exit(1);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
stats[_STAT_STAT].endtime=time_so_far();
|
|
Packit |
577717 |
stats[_STAT_STAT].speed=stats[_STAT_STAT].endtime-stats[_STAT_STAT].starttime;
|
|
Packit |
577717 |
if(stats[_STAT_STAT].speed < (double)0.0)
|
|
Packit |
577717 |
stats[_STAT_STAT].speed=(double)0.0;
|
|
Packit |
577717 |
stats[_STAT_STAT].total_time+=stats[_STAT_STAT].speed;
|
|
Packit |
577717 |
stats[_STAT_STAT].counter++;
|
|
Packit |
577717 |
if(stats[_STAT_STAT].speed < stats[_STAT_STAT].best)
|
|
Packit |
577717 |
stats[_STAT_STAT].best=stats[_STAT_STAT].speed;
|
|
Packit |
577717 |
if(stats[_STAT_STAT].speed > stats[_STAT_STAT].worst)
|
|
Packit |
577717 |
stats[_STAT_STAT].worst=stats[_STAT_STAT].speed;
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
void
|
|
Packit |
577717 |
file_access(int x)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
int i,j,k,y;
|
|
Packit |
577717 |
char buf[100];
|
|
Packit |
577717 |
stats[_STAT_ACCESS].best=(double)999999.9;
|
|
Packit |
577717 |
stats[_STAT_ACCESS].worst=(double)0.0;
|
|
Packit |
577717 |
for(i=0;i
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d",i);
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
for(j=0;j
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d_L2_%d",i,j);
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
for(k=0;k
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_file_%d_%d_%d",i,j,k);
|
|
Packit |
577717 |
stats[_STAT_ACCESS].starttime=time_so_far();
|
|
Packit |
577717 |
y=access(buf,W_OK|F_OK);
|
|
Packit |
577717 |
if(y < 0)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("access failed\n");
|
|
Packit |
577717 |
perror("what");
|
|
Packit |
577717 |
exit(1);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
stats[_STAT_ACCESS].endtime=time_so_far();
|
|
Packit |
577717 |
stats[_STAT_ACCESS].speed=stats[_STAT_ACCESS].endtime-stats[_STAT_ACCESS].starttime;
|
|
Packit |
577717 |
if(stats[_STAT_ACCESS].speed < (double)0.0)
|
|
Packit |
577717 |
stats[_STAT_ACCESS].speed=(double)0.0;
|
|
Packit |
577717 |
stats[_STAT_ACCESS].total_time+=stats[_STAT_ACCESS].speed;
|
|
Packit |
577717 |
stats[_STAT_ACCESS].counter++;
|
|
Packit |
577717 |
if(stats[_STAT_ACCESS].speed < stats[_STAT_ACCESS].best)
|
|
Packit |
577717 |
stats[_STAT_ACCESS].best=stats[_STAT_ACCESS].speed;
|
|
Packit |
577717 |
if(stats[_STAT_ACCESS].speed > stats[_STAT_ACCESS].worst)
|
|
Packit |
577717 |
stats[_STAT_ACCESS].worst=stats[_STAT_ACCESS].speed;
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
void
|
|
Packit |
577717 |
file_chmod(int x)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
int i,j,k,y;
|
|
Packit |
577717 |
char buf[100];
|
|
Packit |
577717 |
stats[_STAT_CHMOD].best=(double)999999.9;
|
|
Packit |
577717 |
stats[_STAT_CHMOD].worst=(double)0.0;
|
|
Packit |
577717 |
for(i=0;i
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d",i);
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
for(j=0;j
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d_L2_%d",i,j);
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
for(k=0;k
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_file_%d_%d_%d",i,j,k);
|
|
Packit |
577717 |
stats[_STAT_CHMOD].starttime=time_so_far();
|
|
Packit |
577717 |
y=chmod(buf,0666);
|
|
Packit |
577717 |
if(y < 0)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("chmod failed\n");
|
|
Packit |
577717 |
perror("what");
|
|
Packit |
577717 |
exit(1);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
stats[_STAT_CHMOD].endtime=time_so_far();
|
|
Packit |
577717 |
stats[_STAT_CHMOD].speed=stats[_STAT_CHMOD].endtime-stats[_STAT_CHMOD].starttime;
|
|
Packit |
577717 |
if(stats[_STAT_CHMOD].speed < (double)0.0)
|
|
Packit |
577717 |
stats[_STAT_CHMOD].speed=(double)0.0;
|
|
Packit |
577717 |
stats[_STAT_CHMOD].total_time+=stats[_STAT_CHMOD].speed;
|
|
Packit |
577717 |
stats[_STAT_CHMOD].counter++;
|
|
Packit |
577717 |
if(stats[_STAT_CHMOD].speed < stats[_STAT_CHMOD].best)
|
|
Packit |
577717 |
stats[_STAT_CHMOD].best=stats[_STAT_CHMOD].speed;
|
|
Packit |
577717 |
if(stats[_STAT_CHMOD].speed > stats[_STAT_CHMOD].worst)
|
|
Packit |
577717 |
stats[_STAT_CHMOD].worst=stats[_STAT_CHMOD].speed;
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
void
|
|
Packit |
577717 |
file_readdir(int x)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
int i,j,ret1;
|
|
Packit |
577717 |
char buf[100];
|
|
Packit |
577717 |
DIR *dirbuf;
|
|
Packit |
577717 |
struct dirent *y;
|
|
Packit |
577717 |
stats[_STAT_READDIR].best=(double)999999.9;
|
|
Packit |
577717 |
stats[_STAT_READDIR].worst=(double)0.0;
|
|
Packit |
577717 |
for(i=0;i
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d",i);
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
for(j=0;j
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d_L2_%d",i,j);
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
dirbuf=opendir(".");
|
|
Packit |
577717 |
if(dirbuf==0)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("opendir failed\n");
|
|
Packit |
577717 |
exit(1);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
stats[_STAT_READDIR].starttime=time_so_far();
|
|
Packit |
577717 |
y=readdir(dirbuf);
|
|
Packit |
577717 |
if(y == 0)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("readdir failed\n");
|
|
Packit |
577717 |
exit(1);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
stats[_STAT_READDIR].endtime=time_so_far();
|
|
Packit |
577717 |
stats[_STAT_READDIR].speed=stats[_STAT_READDIR].endtime-stats[_STAT_READDIR].starttime;
|
|
Packit |
577717 |
if(stats[_STAT_READDIR].speed < (double)0.0)
|
|
Packit |
577717 |
stats[_STAT_READDIR].speed=(double)0.0;
|
|
Packit |
577717 |
stats[_STAT_READDIR].total_time+=stats[_STAT_READDIR].speed;
|
|
Packit |
577717 |
stats[_STAT_READDIR].counter++;
|
|
Packit |
577717 |
if(stats[_STAT_READDIR].speed < stats[_STAT_READDIR].best)
|
|
Packit |
577717 |
stats[_STAT_READDIR].best=stats[_STAT_READDIR].speed;
|
|
Packit |
577717 |
if(stats[_STAT_READDIR].speed > stats[_STAT_READDIR].worst)
|
|
Packit |
577717 |
stats[_STAT_READDIR].worst=stats[_STAT_READDIR].speed;
|
|
Packit |
577717 |
ret1=closedir(dirbuf);
|
|
Packit |
577717 |
if(ret1 < 0)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("closedir failed\n");
|
|
Packit |
577717 |
exit(1);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
void
|
|
Packit |
577717 |
file_link(int x)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
int i,j,k,y;
|
|
Packit |
577717 |
char buf[100];
|
|
Packit |
577717 |
char bufn[100];
|
|
Packit |
577717 |
stats[_STAT_LINK].best=(double)999999.9;
|
|
Packit |
577717 |
stats[_STAT_LINK].worst=(double)0.0;
|
|
Packit |
577717 |
for(i=0;i
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d",i);
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
for(j=0;j
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d_L2_%d",i,j);
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
for(k=0;k
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_file_%d_%d_%d",i,j,k);
|
|
Packit |
577717 |
sprintf(bufn,"fileop_file_%d_%d_%dL",i,j,k);
|
|
Packit |
577717 |
stats[_STAT_LINK].starttime=time_so_far();
|
|
Packit |
577717 |
y=link(buf,bufn);
|
|
Packit |
577717 |
if(y < 0)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("Link failed\n");
|
|
Packit |
577717 |
exit(1);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
stats[_STAT_LINK].endtime=time_so_far();
|
|
Packit |
577717 |
stats[_STAT_LINK].speed=stats[_STAT_LINK].endtime-stats[_STAT_LINK].starttime;
|
|
Packit |
577717 |
if(stats[_STAT_LINK].speed < (double)0.0)
|
|
Packit |
577717 |
stats[_STAT_LINK].speed=(double)0.0;
|
|
Packit |
577717 |
stats[_STAT_LINK].total_time+=stats[_STAT_LINK].speed;
|
|
Packit |
577717 |
stats[_STAT_LINK].counter++;
|
|
Packit |
577717 |
if(stats[_STAT_LINK].speed < stats[_STAT_LINK].best)
|
|
Packit |
577717 |
stats[_STAT_LINK].best=stats[_STAT_LINK].speed;
|
|
Packit |
577717 |
if(stats[_STAT_LINK].speed > stats[_STAT_LINK].worst)
|
|
Packit |
577717 |
stats[_STAT_LINK].worst=stats[_STAT_LINK].speed;
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
void
|
|
Packit |
577717 |
file_unlink(int x)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
int i,j,k,y;
|
|
Packit |
577717 |
char buf[100];
|
|
Packit |
577717 |
char bufn[100];
|
|
Packit |
577717 |
stats[_STAT_UNLINK].best=(double)999999.9;
|
|
Packit |
577717 |
stats[_STAT_UNLINK].worst=(double)0.0;
|
|
Packit |
577717 |
for(i=0;i
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d",i);
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
for(j=0;j
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d_L2_%d",i,j);
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
for(k=0;k
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_file_%d_%d_%d",i,j,k);
|
|
Packit |
577717 |
sprintf(bufn,"fileop_file_%d_%d_%dL",i,j,k);
|
|
Packit |
577717 |
stats[_STAT_UNLINK].starttime=time_so_far();
|
|
Packit |
577717 |
y=unlink(bufn);
|
|
Packit |
577717 |
if(y < 0)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("Unlink failed\n");
|
|
Packit |
577717 |
exit(1);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
stats[_STAT_UNLINK].endtime=time_so_far();
|
|
Packit |
577717 |
stats[_STAT_UNLINK].speed=stats[_STAT_UNLINK].endtime-stats[_STAT_UNLINK].starttime;
|
|
Packit |
577717 |
if(stats[_STAT_UNLINK].speed < (double)0.0)
|
|
Packit |
577717 |
stats[_STAT_UNLINK].speed=(double)0.0;
|
|
Packit |
577717 |
stats[_STAT_UNLINK].total_time+=stats[_STAT_UNLINK].speed;
|
|
Packit |
577717 |
stats[_STAT_UNLINK].counter++;
|
|
Packit |
577717 |
if(stats[_STAT_UNLINK].speed < stats[_STAT_UNLINK].best)
|
|
Packit |
577717 |
stats[_STAT_UNLINK].best=stats[_STAT_UNLINK].speed;
|
|
Packit |
577717 |
if(stats[_STAT_UNLINK].speed > stats[_STAT_UNLINK].worst)
|
|
Packit |
577717 |
stats[_STAT_UNLINK].worst=stats[_STAT_UNLINK].speed;
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
void
|
|
Packit |
577717 |
dir_delete(int x)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
int i,j,k;
|
|
Packit |
577717 |
char buf[100];
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].best=(double)99999.9;
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].worst=(double)0.00000000;
|
|
Packit |
577717 |
for(i=0;i
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d",i);
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
for(j=0;j
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d_L2_%d",i,j);
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
for(k=0;k
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_dir_%d_%d_%d",i,j,k);
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].starttime=time_so_far();
|
|
Packit |
577717 |
rmdir(buf);
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].endtime=time_so_far();
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].speed=stats[_STAT_DIR_DELETE].endtime-stats[_STAT_DIR_DELETE].starttime;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_DELETE].speed < (double)0.0)
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].speed=(double)0.0;
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].total_time+=stats[_STAT_DIR_DELETE].speed;
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].counter++;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_DELETE].speed < stats[_STAT_DIR_DELETE].best)
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].best=stats[_STAT_DIR_DELETE].speed;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_DELETE].speed > stats[_STAT_DIR_DELETE].worst)
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].worst=stats[_STAT_DIR_DELETE].speed;
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d_L2_%d",i,j);
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].starttime=time_so_far();
|
|
Packit |
577717 |
rmdir(buf);
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].endtime=time_so_far();
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].speed=stats[_STAT_DIR_DELETE].endtime-stats[_STAT_DIR_DELETE].starttime;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_DELETE].speed < (double)0.0)
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].speed=(double)0.0;
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].total_time+=stats[_STAT_DIR_DELETE].speed;
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].counter++;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_DELETE].speed < stats[_STAT_DIR_DELETE].best)
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].best=stats[_STAT_DIR_DELETE].speed;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_DELETE].speed > stats[_STAT_DIR_DELETE].worst)
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].worst=stats[_STAT_DIR_DELETE].speed;
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d",i);
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].starttime=time_so_far();
|
|
Packit |
577717 |
rmdir(buf);
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].endtime=time_so_far();
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].speed=stats[_STAT_DIR_DELETE].endtime-stats[_STAT_DIR_DELETE].starttime;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_DELETE].speed < (double)0.0)
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].speed=(double)0.0;
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].total_time+=stats[_STAT_DIR_DELETE].speed;
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].counter++;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_DELETE].speed < stats[_STAT_DIR_DELETE].best)
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].best=stats[_STAT_DIR_DELETE].speed;
|
|
Packit |
577717 |
if(stats[_STAT_DIR_DELETE].speed > stats[_STAT_DIR_DELETE].worst)
|
|
Packit |
577717 |
stats[_STAT_DIR_DELETE].worst=stats[_STAT_DIR_DELETE].speed;
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
void
|
|
Packit |
577717 |
file_delete(int x)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
int i,j,k;
|
|
Packit |
577717 |
char buf[100];
|
|
Packit |
577717 |
stats[_STAT_DELETE].best=(double)999999.9;
|
|
Packit |
577717 |
stats[_STAT_DELETE].worst=(double)0.0;
|
|
Packit |
577717 |
for(i=0;i
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d",i);
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
for(j=0;j
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d_L2_%d",i,j);
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
for(k=0;k
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_file_%d_%d_%d",i,j,k);
|
|
Packit |
577717 |
stats[_STAT_DELETE].starttime=time_so_far();
|
|
Packit |
577717 |
unlink(buf);
|
|
Packit |
577717 |
stats[_STAT_DELETE].endtime=time_so_far();
|
|
Packit |
577717 |
stats[_STAT_DELETE].speed=stats[_STAT_DELETE].endtime-stats[_STAT_DELETE].starttime;
|
|
Packit |
577717 |
if(stats[_STAT_DELETE].speed < (double)0.0)
|
|
Packit |
577717 |
stats[_STAT_DELETE].speed=(double)0.0;
|
|
Packit |
577717 |
stats[_STAT_DELETE].total_time+=stats[_STAT_DELETE].speed;
|
|
Packit |
577717 |
stats[_STAT_DELETE].counter++;
|
|
Packit |
577717 |
if(stats[_STAT_DELETE].speed < stats[_STAT_DELETE].best)
|
|
Packit |
577717 |
stats[_STAT_DELETE].best=stats[_STAT_DELETE].speed;
|
|
Packit |
577717 |
if(stats[_STAT_DELETE].speed > stats[_STAT_DELETE].worst)
|
|
Packit |
577717 |
stats[_STAT_DELETE].worst=stats[_STAT_DELETE].speed;
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d_L2_%d",i,j);
|
|
Packit |
577717 |
rmdir(buf);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d",i);
|
|
Packit |
577717 |
rmdir(buf);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
void
|
|
Packit |
577717 |
file_read(int x)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
int i,j,k,y,fd;
|
|
Packit |
577717 |
char buf[100];
|
|
Packit |
577717 |
char value;
|
|
Packit |
577717 |
stats[_STAT_READ].best=(double)99999.9;
|
|
Packit |
577717 |
stats[_STAT_READ].worst=(double)0.00000000;
|
|
Packit |
577717 |
stats[_STAT_OPEN].best=(double)99999.9;
|
|
Packit |
577717 |
stats[_STAT_OPEN].worst=(double)0.00000000;
|
|
Packit |
577717 |
for(i=0;i
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d",i);
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
for(j=0;j
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_L1_%d_L2_%d",i,j);
|
|
Packit |
577717 |
junk=chdir(buf);
|
|
Packit |
577717 |
for(k=0;k
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
sprintf(buf,"fileop_file_%d_%d_%d",i,j,k);
|
|
Packit |
577717 |
value=(char)((i^j^k) &0xff);
|
|
Packit |
577717 |
stats[_STAT_OPEN].starttime=time_so_far();
|
|
Packit |
577717 |
fd=open(buf,O_RDONLY);
|
|
Packit |
577717 |
if(fd < 0)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("Open failed\n");
|
|
Packit |
577717 |
exit(1);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
stats[_STAT_OPEN].endtime=time_so_far();
|
|
Packit |
577717 |
stats[_STAT_OPEN].speed=stats[_STAT_OPEN].endtime-stats[_STAT_OPEN].starttime;
|
|
Packit |
577717 |
if(stats[_STAT_OPEN].speed < (double)0.0)
|
|
Packit |
577717 |
stats[_STAT_OPEN].speed=(double)0.0;
|
|
Packit |
577717 |
stats[_STAT_OPEN].total_time+=stats[_STAT_OPEN].speed;
|
|
Packit |
577717 |
stats[_STAT_OPEN].counter++;
|
|
Packit |
577717 |
if(stats[_STAT_OPEN].speed < stats[_STAT_OPEN].best)
|
|
Packit |
577717 |
stats[_STAT_OPEN].best=stats[_STAT_OPEN].speed;
|
|
Packit |
577717 |
if(stats[_STAT_OPEN].speed > stats[_STAT_OPEN].worst)
|
|
Packit |
577717 |
stats[_STAT_OPEN].worst=stats[_STAT_OPEN].speed;
|
|
Packit |
577717 |
|
|
Packit |
577717 |
stats[_STAT_READ].starttime=time_so_far();
|
|
Packit |
577717 |
y=read(fd,mbuffer,sz);
|
|
Packit |
577717 |
if(y < 0)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("Read failed\n");
|
|
Packit |
577717 |
exit(1);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
if(validate(mbuffer,sz, value) !=0)
|
|
Packit |
577717 |
printf("Error: Data Mis-compare\n");;
|
|
Packit |
577717 |
stats[_STAT_READ].endtime=time_so_far();
|
|
Packit |
577717 |
close(fd);
|
|
Packit |
577717 |
stats[_STAT_READ].speed=stats[_STAT_READ].endtime-stats[_STAT_READ].starttime;
|
|
Packit |
577717 |
if(stats[_STAT_READ].speed < (double)0.0)
|
|
Packit |
577717 |
stats[_STAT_READ].speed=(double)0.0;
|
|
Packit |
577717 |
stats[_STAT_READ].total_time+=stats[_STAT_READ].speed;
|
|
Packit |
577717 |
stats[_STAT_READ].counter++;
|
|
Packit |
577717 |
if(stats[_STAT_READ].speed < stats[_STAT_READ].best)
|
|
Packit |
577717 |
stats[_STAT_READ].best=stats[_STAT_READ].speed;
|
|
Packit |
577717 |
if(stats[_STAT_READ].speed > stats[_STAT_READ].worst)
|
|
Packit |
577717 |
stats[_STAT_READ].worst=stats[_STAT_READ].speed;
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
junk=chdir("..");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/************************************************************************/
|
|
Packit |
577717 |
/* Time measurement routines. Thanks to Iozone :-) */
|
|
Packit |
577717 |
/************************************************************************/
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#ifdef HAVE_ANSIC_C
|
|
Packit |
577717 |
static double
|
|
Packit |
577717 |
time_so_far(void)
|
|
Packit |
577717 |
#else
|
|
Packit |
577717 |
static double
|
|
Packit |
577717 |
time_so_far()
|
|
Packit |
577717 |
#endif
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
#ifdef Windows
|
|
Packit |
577717 |
LARGE_INTEGER freq,counter;
|
|
Packit |
577717 |
double wintime,bigcounter;
|
|
Packit |
577717 |
/* For Windows the time_of_day() is useless. It increments in 55 milli second */
|
|
Packit |
577717 |
/* increments. By using the Win32api one can get access to the high performance */
|
|
Packit |
577717 |
/* measurement interfaces. With this one can get back into the 8 to 9 */
|
|
Packit |
577717 |
/* microsecond resolution. */
|
|
Packit |
577717 |
QueryPerformanceFrequency(&freq);
|
|
Packit |
577717 |
QueryPerformanceCounter(&counter);
|
|
Packit |
577717 |
bigcounter=(double)counter.HighPart *(double)0xffffffff +
|
|
Packit |
577717 |
(double)counter.LowPart;
|
|
Packit |
577717 |
wintime = (double)(bigcounter/(double)freq.LowPart);
|
|
Packit |
577717 |
return((double)wintime);
|
|
Packit |
577717 |
#else
|
|
Packit |
577717 |
#if defined (OSFV4) || defined(OSFV3) || defined(OSFV5)
|
|
Packit |
577717 |
struct timespec gp;
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if (getclock(TIMEOFDAY, (struct timespec *) &gp) == -1)
|
|
Packit |
577717 |
perror("getclock");
|
|
Packit |
577717 |
return (( (double) (gp.tv_sec)) +
|
|
Packit |
577717 |
( ((float)(gp.tv_nsec)) * 0.000000001 ));
|
|
Packit |
577717 |
#else
|
|
Packit |
577717 |
struct timeval tp;
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if (gettimeofday(&tp, (struct timezone *) NULL) == -1)
|
|
Packit |
577717 |
perror("gettimeofday");
|
|
Packit |
577717 |
return ((double) (tp.tv_sec)) +
|
|
Packit |
577717 |
(((double) tp.tv_usec) * 0.000001 );
|
|
Packit |
577717 |
#endif
|
|
Packit |
577717 |
#endif
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
void
|
|
Packit |
577717 |
splash(void)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
printf("\n");
|
|
Packit |
577717 |
printf(" --------------------------------------\n");
|
|
Packit |
577717 |
printf(" | Fileop | \n");
|
|
Packit |
577717 |
printf(" | %s | \n",version);
|
|
Packit |
577717 |
printf(" | | \n");
|
|
Packit |
577717 |
printf(" | by |\n");
|
|
Packit |
577717 |
printf(" | | \n");
|
|
Packit |
577717 |
printf(" | Don Capps |\n");
|
|
Packit |
577717 |
printf(" --------------------------------------\n");
|
|
Packit |
577717 |
printf("\n");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
void
|
|
Packit |
577717 |
usage(void)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
splash();
|
|
Packit |
577717 |
printf(" fileop [-f X ]|[-l # -u #] [-s Y] [-e] [-b] [-w] [-d <dir>] [-t] [-v] [-h]\n");
|
|
Packit |
577717 |
printf("\n");
|
|
Packit |
577717 |
printf(" -f # Force factor. X^3 files will be created and removed.\n");
|
|
Packit |
577717 |
printf(" -l # Lower limit on the value of the Force factor.\n");
|
|
Packit |
577717 |
printf(" -u # Upper limit on the value of the Force factor.\n");
|
|
Packit |
577717 |
printf(" -s # Optional. Sets filesize for the create/write. May use suffix 'K' or 'M'.\n");
|
|
Packit |
577717 |
printf(" -e Excel importable format.\n");
|
|
Packit |
577717 |
printf(" -b Output best case results.\n");
|
|
Packit |
577717 |
printf(" -i # Increment force factor by this increment.\n");
|
|
Packit |
577717 |
printf(" -w Output worst case results.\n");
|
|
Packit |
577717 |
printf(" -d <dir> Specify starting directory.\n");
|
|
Packit |
577717 |
printf(" -U <dir> Mount point to remount between tests.\n");
|
|
Packit |
577717 |
printf(" -t Verbose output option.\n");
|
|
Packit |
577717 |
printf(" -v Version information.\n");
|
|
Packit |
577717 |
printf(" -h Help text.\n");
|
|
Packit |
577717 |
printf("\n");
|
|
Packit |
577717 |
printf(" The structure of the file tree is:\n");
|
|
Packit |
577717 |
printf(" X number of Level 1 directories, with X number of\n");
|
|
Packit |
577717 |
printf(" level 2 directories, with X number of files in each\n");
|
|
Packit |
577717 |
printf(" of the level 2 directories.\n");
|
|
Packit |
577717 |
printf("\n");
|
|
Packit |
577717 |
printf(" Example: fileop 2\n");
|
|
Packit |
577717 |
printf("\n");
|
|
Packit |
577717 |
printf(" dir_1 dir_2\n");
|
|
Packit |
577717 |
printf(" / \\ / \\ \n");
|
|
Packit |
577717 |
printf(" sdir_1 sdir_2 sdir_1 sdir_2\n");
|
|
Packit |
577717 |
printf(" / \\ / \\ / \\ / \\ \n");
|
|
Packit |
577717 |
printf(" file_1 file_2 file_1 file_2 file_1 file_2 file_1 file_2\n");
|
|
Packit |
577717 |
printf("\n");
|
|
Packit |
577717 |
printf(" Each file will be created, and then Y bytes is written to the file.\n");
|
|
Packit |
577717 |
printf("\n");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
void
|
|
Packit |
577717 |
clear_stats()
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
int i;
|
|
Packit |
577717 |
for(i=0;i<_NUM_STATS;i++)
|
|
Packit |
577717 |
bzero((char *)&stats[i],sizeof(struct stat_struct));
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
int
|
|
Packit |
577717 |
validate(char *buffer, int size, char value)
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
register int i;
|
|
Packit |
577717 |
register char *cp;
|
|
Packit |
577717 |
register int size1;
|
|
Packit |
577717 |
register char v1;
|
|
Packit |
577717 |
v1=value;
|
|
Packit |
577717 |
cp = buffer;
|
|
Packit |
577717 |
size1=size;
|
|
Packit |
577717 |
for(i=0;i
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
if(*cp++ != v1)
|
|
Packit |
577717 |
return(1);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
return(0);
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|